我正在尝试编写AST解释器/ REPL。 ANTLRv4提供两个非常相似的接口(ParseTreeVisitor和ParseTreeListener)来遍历解析树。我似乎无法找到它们之间的任何重大差异,并且文档相当稀疏。一个界面比另一个更好吗?
答案 0 :(得分:6)
接口用于不同目的。主要区别如下:
ParseTreeListener
void
。收听者为“返回”收集的任何值必须保存在字段或其他地方。ParseTreeWalker
或派生类)。 ParseTreeVisitor
T
,如果访问者方法没有返回值,则可能为Void
。visitChildren
和/或针对特定孩子调用visit
。