【问题标题】:Mutually left-recursive?相互左递归?
【发布时间】:2014-07-13 02:49:38
【问题描述】:

我正在为 ANTLR 中的语法开发一个解析器。我目前正在研究 () 具有最高优先级的表达式,然后是 Unary Minus 等。

当我添加 ANTLR 行时出现错误:以下规则集是相互左递归的 [add, mul, unary, not, and, expr, paren, accessMem, relation, or, assign, equal] 怎么能我去解决这个问题?提前致谢。

【问题讨论】:

    标签: antlr grammar antlr3 antlr4 left-recursion


    【解决方案1】:

    最简单的答案是使用 antlr4 而不是 3,这对于立即左递归没有问题。它会自动重写封面下的语法以做正确的事情。有很多例子。例如,可以查看Java grammar 或我在left recursive rules 上的小博客条目。如果您坚持使用 v3,那么在文档和书籍中有 Java 语法的早期版本以及关于如何构建算术表达式规则的大量材料。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多