[英]ANTLR G4 grammar giving error in input validation
I have a grammer which I have created to validate below input and convert it to entity.我创建了一个语法来验证下面的输入并将其转换为实体。
Input:输入:
(
[LANGUAGE] IN ("Arabic", "Dutch")
AND
[Content Series] IN ("The Walking Dead")
AND
[PUBLISHER_NAME] IN ("Yahoo Search", "Yahoo! NAR")
)
OR
(
[LANGUAGE] IN ("English")
AND
[PUBLISHER_NAME] IN ("Aol News", "Microsoft-Bing!")
)
Exp.g4 Exp.g4
grammar Exp;
options {
language = Java;
}
start
: expr EOF
;
expr
: NOT expr
| '(' expr ')' expr
| expr ENTITY expr
| expr AND expr
| expr OR expr
| entity
| list
| VALUE
;
entity
: KEY comp VALUE
| KEY list_op list
| KEY exists_op
;
list
: '(' (VALUE (',' VALUE)*)? ')'
;
list_op
: BETWEEN
| NOT_BETWEEN
| IN
| NOT_IN
| CONTAINS
| NOT_CONTAINS
;
exists_op
: EXISTS
| NOT_EXISTS
;
comp
: EQ
| NEQ
| GT
| LET
| GTE
| LETE
;
VALUE : '"' .*? '"';
KEY : '[' .*? ']';
OR : 'OR';
AND : 'AND';
NOT : 'NOT';
ENTITY : 'ENTITY';
NOT_CONTAINS : 'NOT_CONTAINS';
CONTAINS : 'CONTAINS';
NOT_IN : 'NOT_IN';
IN : 'IN';
NOT_BETWEEN : 'NOT_BETWEEN';
BETWEEN : 'BETWEEN';
NOT_EXISTS : 'NOT_EXISTS';
EXISTS : 'EXISTS';
LETE : '<=';
GTE : '>=';
LET : '<';
GT : '>';
NEQ : '!=';
EQ : '=';
WS : [\t\r\n ]+ -> channel(HIDDEN);
Though this grammer is giving me below error:-虽然这个语法给我以下错误:-
line 1:0 extraneous input '(' expecting KEY (entity ( [LANGUAGE] (list_op IN) (list ( "Arabic", "Dutch" )))第 1:0 行无关输入 '(' 期待 KEY (entity ( [LANGUAGE] (list_op IN) (list ( "Arabic", "Dutch" )))
I have tried changing grammar but no help.我试过改变语法但没有帮助。
Change '(' expr ')' expr
into '(' expr ')'
将'(' expr ')' expr
更改为'(' expr ')'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.