我想设置优先级规则(例如乘法和加法的数学运算符 - 即*和+),但是平面方式。
看看: http://www.gregbugaj.com/?p=251(简而言之,它通过声明表达式是多表达式的添加来解决上面的例子。)
这会以非常深的解析树为代价完成工作,因为优先级是使用嵌套规则解决的。我希望有一个(“平面”)规则用于解析加上优先级声明(所以,就像在Yacc中解决的那样)。
问题:如何在ANTLR中实现这种(类似Yacc,即平坦的)方法?
答案 0 :(得分:1)
问题:如何在ANTLR中实现这种(类似Yacc,即平坦的)方法?
你不能。
如果让解析器创建AST,则“非常深的解析树”不再存在。请参阅以下Q& A:How to output the AST built using ANTLR?