Ich habe die folgende Grammatik und versuche, langsam zu beginnen, um komplexe Argumente zu bewegen.antlr4 kann Literal nicht in Token extrahieren
grammar Command;
commands : command+ EOF;
command : NAME args NL;
args : arg | ;
arg : DASH LOWER | LOWER;
//arg : DASH 'a' | 'x';
NAME : [_a-zA-Z0-9]+;
NL : '\n';
WS : [ \t\r]+ -> skip ; // spaces, tabs, newlines
DASH : '-';
LOWER: [a-z];//'a' .. 'z';
Ich habe gehofft, (vorerst) zu analysieren Dateien wie folgen aus:
cmd1
cmd3 -a
Wenn ich laufe, dass die Eingabe durch grun ich einen Fehler:
$ java org.antlr.v4.gui.TestRig Command commands -tree
...
`line 3:6 mismatched input 'a' expecting LOWER`
Es scheint wie SENKEN sollte mit "a" übereinstimmen. Wenn ich die arg-Definition ändere, um die auskommentierte Zeile zu sein, funktioniert es gut und ich bekomme das '-a' als arg. Was ist der Unterschied zwischen der Verwendung von LOWER und der expliziten Verwendung von 'a'?
See [hier] (https://stackoverflow.com/a/46267981/3764814) –
Interessant. Danke, dass du das geschrieben hast (+1). Ich endete mit ARG: [-] [a-zA-Z0-9]; für die Regel, aber Ihr anderer Beitrag wird helfen, vorwärts zu gehen. Vielen Dank! –