Ich entschuldige mich im Voraus, wenn diese Frage bereits gestellt wurde, kann nicht scheinen, es zu finden.Antlr Eclipse IDE White Space wird nicht übersprungen
Ich fange gerade mit Antlr an und benutze das antlr4IDE für Eclipse, um einen Parser für eine kleine Teilmenge von Java zu erstellen. Aus irgendeinem Grund wird der Parser einen Fehler ausgeben, wenn ich nicht explizit das Vorhandensein eines Leerzeichens in meiner Regex anzeige.
Meine Grammatik:
grammar Hello;
r :
(Statement ';')+
;
Statement:
DECL | INIT
;
DECL:
'int' ID
;
INIT:
DECL '=' NUMEXPR
;
NUMEXPR :
Number OP Number | Number
;
OP :
'+'
| '-'
| '/'
| '*'
;
WS :
[ \t\r\n\u000C]+ -> skip
;
Number:
[0-9]+
;
ID :
[a-zA-Z]+
;
Beim Versuch, zu analysieren
int hello = 76;
ich die Fehlermeldung: die Token WS in die Regeln
Hello::r:1:0: mismatched input 'int' expecting Statement
Hello::r:1:10: token recognition error at: '='
Allerdings, wenn ich manuell hinzufügen, Ich erhalte keinen Fehler.
Irgendwelche Ideen, wo ich falsch liege? Ich bin neu in Antlr, also mache ich wahrscheinlich einen dummen Fehler. Danke im Voraus.
EDIT: Hier ist mein Parse-Baum und Fehlerprotokoll:
Fehlerprotokoll:
Ich habe immer noch den gleichen Fehler, auch nach dem Kopieren genau, was Sie geschrieben haben. Ich habe den Parse Baum im ursprünglichen Beitrag – Slavvio
geschrieben Nevermind, es hat funktioniert, danke! Follow-up-Frage: Wissen Sie, warum die Großschreibung der Symbole einen Unterschied machte? – Slavvio
Siehe [Grammatik-Lexikon] (https://github.com/antlr/antlr4/blob/4.6/doc/lexicon.md). Tokennamen beginnen immer mit einem Großbuchstaben. Parser-Regelnamen beginnen immer mit einem Kleinbuchstaben. – saka1029