Zitat von
marabu:
Ja.
Gut.
Zitat von
marabu:
Das hältst du bei steigender Zahl der Produktionen wahrscheinlich nicht durch - oder deine Sprache nimmt chaotische Züge an.
Wenn sie das nicht schon hat.
Liste mir bitte mal alle wichtigen Typen von Tokens auf. Ich habe das so eingeteilt:
Delphi-Quellcode:
TXeLexerTokenType=(ttInvalid, ttIdentifier, ttSeparator, ttNumericLiteral,
ttCharacterLiteral, ttStringLiteral, ttBinDataLiteral, ttComment);
Zitat von
marabu:
Du musst auf den Kontext achten. Solche Zeichen können auch in Kommentaren und Literalen vorkommen.
Da selbstverständlich nicht. Ich meinte das so: Da steht zum Beispiel der Code "
wuppdi:=42;". Da sind ":=" und ";" jeweils Separatoren, weil sie Bezeichner/Litarale/usw. voneinander trennen. Das war meine intuitive Idee, ich weiß ja nicht, wie es "richtig" geht.
Zitat von
marabu:
Bei "include io.*" scheint mir "include" ein Schüsselwort zu sein und "io.*" ein Literal. Bei "Memo1.Lines" handelt es sich um einen qualified name (QN), "Memo1" und "Lines" sind identifier und "." ist der QN-Separator.
include io.*; ist so ähnlich gedacht wie in Java: Binde alle Units des Packages "io" ein. Dürfte sich also um einen QualifiedName handeln. Ein Stringliteral ist in meiner "Sprache" immer durch Apostrophen begrenzt.