我希望有一个字母数字词法分析器规则,一个字母和数字组合的标记,这里是我的语法
grammar Equery;
query: queryTerm+;
queryTerm: filter
| '(' queryTerm ')'
;
filter: kvpair
| 'NOT' filter
;
kvpair: ID '=' VALUE;
ID: [a-zA-Z]+;
VALUE: [a-z0-9]+;
WS: [ \r\n\t]+ -> skip;
当我使用kvpair
测试a=12
规则时,发生了以下错误:
不匹配的输入' 12'期待值
我可以解决这个问题,但我想知道 12 为什么不被识别为 VALUE ?
答案 0 :(得分:1)
据我所知,你的语法是正确的。在我使用Antlr4的机器上,我通过你的kvpair规则测试了a = 12
,它解析得很好。据我所知,通过视觉检查,您的代码也应该适用于以前版本的Antlr。我会尝试删除所有Antlr生成的文件,并重建语法以查看这是否是您的问题。