ANTLR:不期望令牌

时间:2014-12-09 10:59:23

标签: antlr

我有以下语法:

query
: IDENT 'x' NOT
;

WS : (' '| '\t'| EOL)+ { $channel=HIDDEN; };

NOT : ('N'|'n')('O'|'o')('T'|'t');

fragment
EOL : '\n' | '\r';    

fragment
DIGIT : '0'..'9';

fragment LETTER :   ('a'..'z' | 'A'..'Z' | '_') ;
IDENT : LETTER ( LETTER | DIGIT)*;

我想要的是接受'x'前面的任何字符串,但如果我在IDENT的位置使用字符串“not”,则不接受。但也“不'x'不是”应该没问题,还有“foo x not”。

有没有一种简单的方法可以解决它?

感谢

1 个答案:

答案 0 :(得分:0)

如果您只想轻松修复,可以这样试试:

query
: ( IDENT | NOT ) 'x' NOT
;