使用AST& amp;有什么好处?用于翻译DSL的树步行器而不是直接解析&从解析器语法翻译对象?

时间:2013-02-26 05:27:09

标签: python antlr3

我正在使用Antlr3创建域特定语言。到目前为止,我已经从解析器语法中直接翻译了解析的对象。通过AST和Tree Walker的例子,我开始知道它们通常用于将语法划分为分层树并从节点转换对象。目前我也使用解析器语法进行相同类型的操作,其中我翻译每个子规则中的对象。我很高兴知道使用AST& amp;仅使用解析器语法的树步行者。高级感谢你。

1 个答案:

答案 0 :(得分:1)

使用树解析器的一个优点是您可以将它们组织成多个传递。对于我做的一些翻译工作,我能够使用七次传递并将逻辑步骤分开到他们自己的传递中。一次进行表达式分析,一次进行控制流量分析,另一次进行分析以消除死代码或简化特殊情况下的翻译。

我个人喜欢使用树语法,因为我喜欢使用解析器来处理文本语法。它允许我使用规则来组织解析上下文。如果您需要区分它们以用于识别目的,那么很容易做一些事情,比如结构规则来识别顶级表达式和子表达式。您在常规解析器中使用的所有属性和上下文管理都可以应用于树解析器。