1

我想以平坦的方式设置优先规则(例如,用于乘法和加法的数学运算符 - 即 * 和 +)。

看看: http ://www.gregbugaj.com/?p= 251(简而言之,它通过说明表达式是多表达式的添加来解决上述示例)。

这以非常深的解析树为代价来完成这项工作,因为优先级是使用嵌套规则解决的。我想有一个(“扁平”)规则用于解析加上优先级声明(所以,就像在 Yacc 中解决的那样)。

问题:如何在 ANTLR 中实现这种(Yacc-like,即 flat one)方法?

4

1 回答 1

1

问题:如何在 ANTLR 中实现这种(Yacc 式,即扁平式)方法?

你不能。

如果让解析器创建一个 AST,那么“非常深的解析树”将不复存在。请参阅以下问答:如何输出使用 ANTLR 构建的 AST?

于 2012-07-23T09:34:37.923 回答