一旦我从 ANTLR 语法生成了 AST,我试图了解如何应用访问者模式。它与遍历树的方法不同吗?
例如,假设我有以下 AST(来自这个问题):
如果我想将 FUNDEF id 添加到其所有 VARDECL id,我的方法是进行树遍历以查找 BLOCK 内的所有 VARDECL 并添加一个具有 (FUNDEF id + old_name) 的新子级并删除旧的子级。
这是正确的方法还是以某种方式访问者模式最有效?如果是访问者模式,那么在这种特定情况下的示例代码是什么?
提前致谢!
一旦我从 ANTLR 语法生成了 AST,我试图了解如何应用访问者模式。它与遍历树的方法不同吗?
例如,假设我有以下 AST(来自这个问题):
如果我想将 FUNDEF id 添加到其所有 VARDECL id,我的方法是进行树遍历以查找 BLOCK 内的所有 VARDECL 并添加一个具有 (FUNDEF id + old_name) 的新子级并删除旧的子级。
这是正确的方法还是以某种方式访问者模式最有效?如果是访问者模式,那么在这种特定情况下的示例代码是什么?
提前致谢!