【问题标题】:ANTLR AST and Visitor PatternANTLR AST 和访问者模式
【发布时间】:2013-06-25 16:25:29
【问题描述】:

一旦我从 ANTLR 语法生成了 AST,我正在尝试了解如何应用访问者模式。它与遍历树的方法不同吗?

例如,假设我有以下 AST (From this question):

如果我想将 FUNDEF id 添加到其所有 VARDECL id,我的方法是进行树遍历以查找 BLOCK 内的所有 VARDECL 并添加一个具有 (FUNDEF id + old_name) 的新子级并删除旧的子级。

这是正确的方法还是访问者模式最有效?如果是访问者模式,那么在这种特定情况下的示例代码是什么?

提前致谢!

【问题讨论】:

    标签: antlr antlr3 visitor-pattern


    【解决方案1】:

    我怀疑访问者模式在这里会有所帮助。当您有一个数据结构并将其带到每个节点进行更改时使用它。 Freeman & Freeman 在“Head First Design Patterns”中描述的一个典型案例是点一杯咖啡。这是您的对象,它访问每个合成器以获取更多信息(牛奶、糖)。

    您最初使用树遍历来修改 AST 的想法可能是您拥有的最佳选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-10
      • 1970-01-01
      • 2022-12-04
      相关资源
      最近更新 更多