我正在为 ANTLR 中的语法开发解析器。我目前正在研究 () 具有最高优先级的表达式,然后是 Unary Minus 等。
当我添加 ANTLR 行时出现错误:以下规则集是相互左递归的 [add, mul, unary, not, and, expr, paren, accessMem, relation, or, assign, equal] 我该怎么做解决这个问题?提前致谢。
我正在为 ANTLR 中的语法开发解析器。我目前正在研究 () 具有最高优先级的表达式,然后是 Unary Minus 等。
当我添加 ANTLR 行时出现错误:以下规则集是相互左递归的 [add, mul, unary, not, and, expr, paren, accessMem, relation, or, assign, equal] 我该怎么做解决这个问题?提前致谢。
最简单的答案是使用 antlr4 而不是 3,这对于立即左递归没有问题。它会自动重写封面下的语法以做正确的事情。有很多例子。例如,可以检查Java 语法或我关于左递归规则的小博客条目。如果您坚持使用 v3,那么在文档和书中有 Java 语法的早期版本以及关于如何构建算术表达式规则的大量材料。