Auf Seite 74 des ANTRL4 Buchs heißt es, dass jedes Unicode-Zeichen kann einfach in einer Grammatik verwendet werden, indem seinen Codepunkt auf diese Weise festgelegt wird:ANTLR4: Die Verwendung von nicht-ASCII-Zeichen in Token Regeln
'\uxxxx'
wo xxxx
ist der Hexadezimalwert für den Unicode-Codepunkt.
So habe ich diese Technik in einer Token-Regel für eine ID-Token:
grammar ID;
id : ID EOF ;
ID : ('a' .. 'z' | 'A' .. 'Z' | '\u0100' .. '\u017E')+ ;
WS : [ \t\r\n]+ -> skip ;
Wenn ich diesen Eingang zu analysieren versucht:
Gŭnter
ANTLR einen Fehler wirft, sagte, dass es nicht erkennen ŭ
. (Das ŭ Zeichen ist hex 016D, also liegt es innerhalb des angegebenen Bereichs.)
Was mache ich bitte falsch?
Vielen Dank! Ich versuchte, das -encoding-Flag beim Aufruf von TestRig: java org.antlr.v4.runtime.misc.TestRig -coding UTF-8 ID.g4 Allerdings führte dies zu diesem Fehler: Kann-Encoding als Lexer nicht laden oder Parser Vorschläge? –
verwenden Sie nicht TestRig auf Ihrer Grammatik. Dafür ist Antlr da. –
Hallo! Immer noch kein Erfolg. Hier ist, was ich getan habe: (1) java org.antlr.v4.Tool -encoding UTF-8 ID.g4 (2) javac * .java (3) java org.antlr.v4.runtime.misc.TestRig ID id -gui