Italia
XProfEd - Opensource IDE

Der XProfan-Lexer

 
Wie Roland es bereits erwähnt hat gibt es jetzt einen Lexer per XProfan - einen völlig neuen und eigenen per das Scintilla-Control.

Download SciLexer.dll per XProfan

Ich werde hier per den Fall das ich Änderungen am Lexer vorgenommen habe immer die neuste DLL zum Download anbieten.

Was mich an den grundlegenden Lexern per Scrintilla störte ist das Worte oft nicht sofort eingefärbt wurden sobald man den letzten Buchstaben geschrieben hatte - sondern erst einen Buchstaben später.

Dem XProfanLexer habe ich jedoch beigebracht es so zu tun - wie es sich IMHO gehört.

Was der Lexer kann:

Erkennt:Hinweis:

StringsString sind in XProfan mit umschlossen und enden grundsätzlich spätestens am Zeilenende, sei denn, am Zeilenende ist das Zeichen , dann wird der String auf der Folgezeile fortgeführt.

KommentareKommentare werden mit oder mit REM eingeleitet und enden am Zeilenende.

XPSE-Nutzer haben noch zwei weitere Möglichkeiten.
Kommentare einleiten mit // welche auch am Zeilenende enden
Kommentare einleiten mit /* welche sich auch circa mehrere Zeilen bis zum */ erstrecken können, oder noch in der gleichen Zeile mit */ beendet werden.

KompilerdirektivenZeilen welche mit einem $ beginnen sind Kompilerdirektivenzeilen

ProzedurenIdentifier welche aus der Prozedurenkeywordlist stammen werden als Prozeduren erkannt. Gibt es den selben Identifier auch als Funktion prüft der Lexer anhand der Syntax ob die Funktion statt die Prozedur gemeint ist. Wenn doch die Funktion gemeint ist wird wiederum anhand der Syntax überprüft ob der Funktionsname vielleicht doch nur als Variable - oder Methodendefinition - interpretiert werden soll. (phew)

FunktionenIdentifier welche aus der Funktionenkeywordlist stammen werden als Funktionen erkannt. Anhand der Syntax wird auch geschaut ob der Funktionsname vielleicht nur als Variablenname - oder Methodendefinition - zu verstehen ist. (phew)

KontrollstrukturenIdentifier welche aus der Kontrollstrukturenkeywordlist stammen werden als Kontrollstrukturen erkannt.

SystemvarialbenIdentifier welche aus der Systemvarialbenkeywordlist stammen werden als Systemvarialben erkannt.

VariablenIdentifier welche aus keiner Keywordtabelle stammen aber einen TypChar tragen, gelten als Variablen, auch dann wenn der Identifier in der Funktionenkeywordlist aufgelistet ist aber die Syntax zeigt das der Identifier nicht als Funktion genutzt wird. (phew)

ZiffernZiffern werden als solche erkannt. Folgt auf eine Ziffer ein Punkt so wird dieser als Operator erkannt, sei denn, auf den Punkt folgt wiederum eine Ziffer. (Kommazahlen)

ZahlenkonstantenZahlenkonstanten vom Typ Hex,Bin oder Oct werden als solche erkannt und als Ziffern eingefärbt. Es wird auch überprüft ob die Zahlenkonstante gültig ist. %012 ist ungültig wie $0FFU oder &1238 und wird gelb eingefärbt.

OperatorenFolgende Operatoren werden als solche erkannt: %^&*-+=|{}:;<>,/?!.~ or and mod
Werden or and mod jedoch als Funktionen verwendet erkennt es der Lexer.

FaltungFolgende Identifier bezeichnen eine Faltung:

Öffnen:Schließen
ProcEndProc
ErrorProcEndProc
SubProcEndProc
AsmStartAsmEnd
AsmIncludeAsmEnd
{}

InlineAssemblerInnerhalb von InlineAssemblerblöcken greift eine Art Sublexer:

Erkennt:Hinweis:
AssemblerKeywordsAssemblerKeywords aus der AssemblerKeywordTabelle
StringsStrings mit umschlossen und enden grundsätzlich spätestens am Zeilenende
KommentareKommentare in Assemblerblöcken werden mit ; eingeleitet und enden am Zeilenende

Doppelte LottchenDer Lexer hilft Dir und erkennt Doppelte Lottchen (Befehle unterschiedlichen Types gleichen Namens) anhand der Syntax und zeigt damit ob die Eingaben auch korrekt interpretiert würden. Wenn z.B. gleich hinter DeleteObject  eine Klammer folgt, so wird das Wort nachträglich wieder zurückgefärbt, und ähnliche Features in anderen Situationen... . Es wird aber auch erkannt ob es sich vielleicht um eine Variablenbezeichnung oder eine Methode handelt und jenachdem ob die Syntax dann dafür korrekt wäre bleibt die Färbung bestehen,- oder ebend nicht. (phew)
SyntaxhinweiseEinen gelben Hintergrund bekommen Keywords welche möglicherweise in den nächsten XProfanversion nicht mehr supportati werden. Ein gelber Hintergrund wird aber auch angezeigt wenn etwas mit der Syntax nicht stimmt. Gelb bedeutet Hinweis.
Veraltete KeywordsVeraltete Keywords erhalten einen roten Hintergrund und sollten nicht mehr verwendet werden bzw. führen zu Fehlermeldungen vom Kompiler.
EscapesequenzenInnerhalb von Strings werden Escapesequenzen sichtbar gemacht. Besonders per Programmieranfänger sollte dies sehr hilfreich sein zu erkennen, das hier eine spezielle vielleicht ungewollte Zeichenkombination angewandt ist.
EasterEgg/Info[Strg+Q]INFO

Known Bugs:

Wer Bugs im Lexer feststellt kann die bitte hier, oder bei den Bugreports  posten.

XProfan Scintilla Lexer


310 kB
Kurzbeschreibung: 0.0.8b
Hochgeladen:19.10.2006
Downloadcounter613
Download
 
22.09.2006  
 



0.0.4:

Bug beseitigt: Nach Systemvariablen waren Operatoren in Systemvariablenfarbe.

EasterEgg eingebaut per LexerVersionsKontrolle.

Neues Feature: Wenn Funktionen geschrieben, und auch eingefärbt wurden, aber hinterher noch ein Freizeichen angehangen wurde das auch XProfan es als Prozedur verstehen würde, statt eine Klammer, so wird nachträglich die Funktionsfärbung entfernt. Einfach mal an Destroywindow ( probieren.

Neues Feature: Wenn Prozeduren geschrieben, und auch eingefärbt wurden, aber gleich im Anschluß eine Klammer statt ein Freizeichen angehangen wurde, so wird nachträglich die Prozedurfärbung entfernt um zu zeigen es stimmt was nicht.

Bei Kontrollstrukturen gehe ich jetzt ähnlich vor, entweder ein Space oder garnichts dahinter, eine gleichanschliessende Klammer jedoch deaktiviert nachträglich das Keyword.

Ich glaube diese beiden Features helfen das hilft ungemein richtigeren Code zu schreiben.

Ich selber stolpere oft circa DeleteObject und Destroywindow in XProfan

Nachtrag:

Bug entdeckt, nach Funktionsnamen welche Doppelte Lottchen sind werden Klammern in Operatorenfarbe dargestellt statt schwarz. ^^ Gut hab ich was per die 0.0.5 ^^
 
23.09.2006  
 



V0.0.5

Einige Bugs beseitigt.

Neue Features sind ebenso hinzugekommen,

nur mal um eins zu nennen: Mit dem neuen Editor (der erst kommt) werden farblich Warnungen angezeigt wenn eine falsche Syntax verwandt, oder veraltete Befehle/Funktionen genutzt werden.
 
24.09.2006  
 



Update auf V0.0.6

Innerhalb von Strings werden Escapesequenzen sichtbar gemacht. Besonders per Programmieranfänger sollte dies sehr hilfreich sein zu erkennen, das hier eine spezielle vielleicht ungewollte Zeichenkombination angewandt ist.

Aber machen wir uns nichts vor, selbst erfahrene Programmierer tappen in diese Falle, besonders wenn der Code vielleicht mal nicht der eigene ist...

Die LexerÄnderungen sind sichtbar sobald der Editor das hier intus hat: [...] 
 
25.09.2006  
 



Update auf V0.0.7

Zahlenkonstanten vom Typ Hex,Bin oder Oct werden als solche erkannt und als Ziffern eingefärbt. Es wird auch überprüft ob die Zahlenkonstante gültig ist. %012 ist ungültig wie $0FFU oder &1238 und wird gelb eingefärbt.

BugFix: Geremte XPSE-Kompilerschalter werden nicht mehr als UserFoldings erkannt.
 
09.10.2006  
 



Update auf V0.0.8

# habe ich als einzige Typenbezeichnung von den Systemvariablen abgekoppelt - jetzt klappts auch bei # mit den Klassendefinitionen.

Hexzahlen - welche mit kleinen Chars beschrieben sind - werden nicht mehr angemeckert.
 
19.10.2006  
 



BugFix auf V0.0.8b
 
19.10.2006  
 



Wg. Lexercodeverbummelung wirds einen neuen geben, einen besseren: [...] 
 
09.11.2009  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

9.472 Views

Untitledvor 0 min.
Sven Bader21.08.2021
iF24.09.2020
Angel202002.06.2020
RudiB.14.03.2020
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

iF (8x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie