2

我刚刚遇到了 ANTLR 4.2.2 的一个奇怪问题:

考虑一个(简化的)java语法。这不会编译:

 classOrInterfaceType
    :  (classOrInterfaceType) '.' Identifier
    |  Identifier 
    ;

ANTLR 输出以下错误:

error(119): Java.g4::: The following sets of rules are mutually left-recursive [classOrInterfaceType]

是的,我也看到了左递归。但我没有看到相互左递归,只有一个普通的。

当我删除周围的括号时(classOrInterfaceType),它编译得很好。当然,括号是多余的,但是语法是自动生成的,代码生成器在某些情况下总是插入括号。那么这里的问题是什么?

4

1 回答 1

2

已确认这是一个错误。该修复计划用于下一个里程碑 4.x。见https://github.com/antlr/antlr4/issues/564

于 2014-05-22T12:00:51.947 回答