Hi,
hier noch ne kleine Anmerkung zu deinem Blog:
1 | Wie oft die Zeichen dargestellt werden, etc. MUSS zwingend dem Parser überlassen
|
Das stimmt so nicht. Es ist sinnvoller, wenn nicht sogar zwingend
notwendig, daß der Lexer mehrere Zeichen zu einem Token zusammenfügt.
Denn wenn du dem Parser irgendwann sagst, daß Whitespaces ignoriert
werden sollen, würden folgende Codezeilen das gleiche Ergebnis liefern:
Der Lexer würde 4 Tokens hintereinander liefern, die der Parser dann z
einer Number zusammensetzt.
Bei der Lexer Rule
würde er im ersten Fall zwei Token (nämlich 12 und 34) und im zweiten
Fall ein Token (1234) zurückliefern.
Typische Lexer Token sind halt sowas wie:
- INTEGER '0'..'9'+
- IDENTIFIER 'a'..'z' ('a'..'z' | '0'..'9' | _)*
- STRING '"' .* '"'
Ich hoffe die Syntax stimmt. Hab ich mal aus dem Kopf hingeschrieben.
Grüße!