ANTLR AST和访问者模式

ANTLR AST和访问者模式,antlr,antlr3,visitor,Antlr,Antlr3,Visitor,我试图理解一旦我从ANTLR语法生成了AST,如何应用访问者模式。这和遍历树有什么不同吗 例如,假设我有以下AST(): 如果我想将FUNDEF-id附加到它的所有VARDECL-id,我的方法是执行树遍历以查找块内的所有VARDECL,并添加一个具有(FUNDEF-id+old_-name)的新子项并删除旧的子项 这是正确的方法还是访问者模式最有效?如果是访问者模式,那么在这种特定情况下的示例代码是什么 提前谢谢 我怀疑访客模式在这里是否有用。当您有一个数据结构,并将其带到每个节点进行更改时

我试图理解一旦我从ANTLR语法生成了AST,如何应用访问者模式。这和遍历树有什么不同吗

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

如果我想将FUNDEF-id附加到它的所有VARDECL-id,我的方法是执行树遍历以查找块内的所有VARDECL,并添加一个具有(FUNDEF-id+old_-name)的新子项并删除旧的子项

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


提前谢谢

我怀疑访客模式在这里是否有用。当您有一个数据结构,并将其带到每个节点进行更改时,将使用它。弗里曼和弗里曼在“头先设计模式”中描述的一个典型案例是订购咖啡。这是访问每个合成器以获取附加信息(牛奶、糖)的对象

使用树漫游修改AST的原始想法可能是您的最佳选择