我正在尝试编写一个AST解释器/REPL。ANTLRv4提供了两个非常相似的接口(interface)(ParseTreeVisitor和ParseTreeListener)来遍历解析树。我似乎找不到它们之间的任何主要区别,而且文档相当稀疏。一种界面优于另一种界面吗? 最佳答案 接口(interface)用于不同的目的。主要区别如下:解析树监听器在检查解析树节点的子节点之前/之后为单独提供进入/退出方法。所有方法都返回void。监听器为“返回”收集的任何值都必须保存在字段中或其他地方。控制检查哪些树节点是外部(通过ParseTree