Antlr4的LABEL_CONFLICTS_WITH_RULE的含义

时间:2017-06-12 18:31:22

标签: java label antlr4

我有一条规则

nls
    :   NL*
    ;

使用词法分析器

// Inside (...) and [...] but not {...}, ignore newlines.
NL  : '\r'? '\n'            { this.ignoreTokenInsideParens(); }
    ;

在编译时,我得到了

antlr:
 [java] error(69): Pel.g4:19:86: label nls conflicts with rule with same name

我的理解是,标签是您为制作的替代分支提供的#names。我没有这样的标签。

那么,这个错误是什么意思?

2 个答案:

答案 0 :(得分:2)

感谢@BartKiers,我查看了每个nls使用的内容,发现我有一个错误的=符号,我在规则中删除了变量赋值,但错过了=,如

expression nls AND nls =expression

这就是问题所在。

答案 1 :(得分:1)

您似乎有一个名为nls的规则,但也有a label这个名称:

nls
    :   NL*
    ;

...

rule
    : FOO BAR # nls
    ;

# nls(或#nls)是标签。