Java Antlr4和x27的含义;s标签与规则冲突

Java Antlr4和x27的含义;s标签与规则冲突,java,label,antlr4,Java,Label,Antlr4,我有一条规则 nls : NL* ; 使用lexer令牌 // Inside (...) and [...] but not {...}, ignore newlines. NL : '\r'? '\n' { this.ignoreTokenInsideParens(); } ; 在编译时,我得到 antlr: [java] error(69): Pel.g4:19:86: label nls conflicts with rule wi

我有一条规则

nls
    :   NL*
    ;
使用lexer令牌

// 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
我的理解是,标签是你给一个产品的其他分支起的名字。我没有这样的标签


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

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

nls
    :   NL*
    ;

...

rule
    : FOO BAR # nls
    ;

#nls
(或
#nls
)是标签。

多亏了@BartKiers,我查看了nls的每一次使用,发现我有一个errat=符号,其中我删除了规则中的变量赋值,但错过了=,如

expression nls AND nls =expression

这就是问题所在。

是的,我认为这个错误也是这个意思。我的电脑里根本没有标签grammar@MeBigFatGuy如果在语法上按CTRL+F组合键,那么就没有奇怪的
nls
用法了吗?你没有导入带标签的语法?如果没有,那么您可能发现了一个bug。你可以在这里报告: