So bin ich ziemlich neu 4. bis antlr Ich habe die Grammatik so viel wie ich kann abgespeckte das Problem zeigen:Warum zerbricht nicht der anlr 4 meine Tokens wie erwartet?
grammar DumbGrammar;
equation
: expression (AND expression)*
;
expression
: ID
;
ID : LETTER(LETTER|DIGIT)* ;
AND: 'and';
LETTER: [a-zA-Z_];
DIGIT : [0-9];
WS : [ \r\n\t] + -> channel (HIDDEN);
Wenn die Verwendung dieser Grammatik und den Beispieltext verwenden: abc and d
ich eine seltsame bekommen Baum mit unerwarteten Struktur wie unten (unter Verwendung von IntelliJ und ANTLR4 stecken) gezeigt:
Wenn ich einfach das Terminal Regel AND: 'and';
AND: '&&';
und dann abc && d
als Eingabe ich den folgenden Baum erhalten, als ex vorlegen lesen ändern teten:
ich kann nicht herausfinden, warum es nicht "and"
richtig Parsen, aber '&&'
richtig funktioniert analysieren.
Wow! Schmerzhaft offensichtlich! Vielen Dank!! :) – shuri17
Kein Problem shuri. –
überprüfen, ob ID == 'andy' wird funktionieren, ich denke nicht. Sie müssen 'und' Token in die ID-Regel einfügen, damit IDs, die 'und' Teilstrings enthalten, auch funktionieren. – Divisadero