如何在antlr中定义字母数字标记?

时间:2015-05-02 08:59:08

标签: parsing antlr grammar

我希望有一个字母数字词法分析器规则,一个字母和数字组合的标记,这里是我的语法

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

1 个答案:

答案 0 :(得分:1)

据我所知,你的语法是正确的。在我使用Antlr4的机器上,我通过你的kvpair规则测试了a = 12,它解析得很好。据我所知,通过视觉检查,您的代码也应该适用于以前版本的Antlr。我会尝试删除所有Antlr生成的文件,并重建语法以查看这是否是您的问题。