【问题标题】:ANTLR4 Mutual left recursionANTLR4 相互左递归
【发布时间】:2014-05-13 08:36:39
【问题描述】:

我刚刚在使用 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) 周围的括号时,它编译得很好。当然,括号是多余的,但语法是自​​动生成的,代码生成器在某些情况下总是插入括号。那么这里有什么问题呢?

【问题讨论】:

标签: antlr grammar antlr4 left-recursion


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多