如何在ANTLR中设置平面优先级规则?

时间:2012-07-22 11:50:08

标签: parsing antlr ambiguity operator-precedence

我想设置优先级规则(例如乘法和加法的数学运算符 - 即*和+),但是平面方式。

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

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

问题:如何在ANTLR中实现这种(类似Yacc,即平坦的)方法?

1 个答案:

答案 0 :(得分:1)

  

问题:如何在ANTLR中实现这种(类似Yacc,即平坦的)方法?

你不能。

如果让解析器创建AST,则“非常深的解析树”不再存在。请参阅以下Q& A:How to output the AST built using ANTLR?