Я следующий пример дал здесь- https://datapsyche.wordpress.com/2014/10/23/back-to-learning-grammar-with-antlr/ANTLR ошибка «нет реальной альтернативы на входе»
, который в основном имеет следующие grammar-
grammar Simpleql;
statement : expr command* ;
expr : expr ('AND' | 'OR' | 'NOT') expr # expopexp
| expr expr # expexp
| predicate # predicexpr
| text # textexpr
| '(' expr ')' # exprgroup
;
predicate : text ('=' | '!=' | '>=' | '<=' | '>' | '<') text ;
command : '| show' text* # showcmd
| '| show' text (',' text)* # showcsv
;
text : NUMBER # numbertxt
| QTEXT # quotedtxt
| UQTEXT # unquotedtxt
;
AND : 'AND' ;
OR : 'OR' ;
NOT : 'NOT' ;
EQUALS : '=' ;
NOTEQUALS : '!=' ;
GREQUALS : '>=' ;
LSEQUALS : '<=' ;
GREATERTHAN : '>' ;
LESSTHAN : '<' ;
NUMBER : DIGIT+
| DIGIT+ '.' DIGIT+
| '.' DIGIT+
;
QTEXT : '"' (ESC|.)*? '"' ;
UQTEXT : ~[()=,<>!\r\n]+ ;
fragment
DIGIT : [0-9] ;
fragment
ESC : '\\"' | '\\\\' ;
WS : [ \t\r\n]+ -> skip ;
Когда я прохожу вход как this-
Abishek AND (country=India OR city=NY) LOGIN 404 | show name city
я error- line 1:65 no viable alternative at input '<EOF>'
Я прошел через пару сообщений SO, связанных с ошибкой, но, похоже, не может понять, что не так с грамматикой.
Если вы сбросили поток токенов, у вас есть токены «UQTEXT» с ожидаемым контентом? Другие жетоны? – GRosenberg