【问题标题】:How to set flat precedence rules in ANTLR?如何在 ANTLR 中设置平面优先规则?
【发布时间】:2012-07-22 11:50:07
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: parsing antlr ambiguity operator-precedence


    【解决方案1】:

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

    你不能。

    如果您让解析器创建一个 AST,那么“非常深的解析树”将不再存在。请看以下问答:How to output the AST built using ANTLR?

    【讨论】:

    • 谢谢你的回答,但关于我的需求,我更了解 ;-) 我需要它,因为它让我以更紧凑的方式表达语法,其次在可视化语法树时它也更紧凑——因此更具可读性。在设计阶段这很重要(对我来说)。
    • @macias, “但我更了解我的需求”,这是真的! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多