如何在Listener和Visitor之间做出决定?

时间:2016-02-12 14:16:20

标签: antlr4

我在Visual Studio下使用Antlr4,C#版本。好极了。

AFAIK(但我可能错了)听众和访客用于执行类似的任务。

那么,如何决定它们呢?或者我可以两者兼用吗?请注意,我发现的所有样本都使用了Listener OR Visitor,但不是两者......

1 个答案:

答案 0 :(得分:1)

在我看来,他是一个很好的选择,因为你可以完全控制遍历

以下是本书的引用" The Definitive ANTLR 4 Reference"

  

侦听器和访问者机制之间的最大区别在于侦听器方法由ANTLR提供的walker对象调用,而访问者方法必须通过显式访问调用来访问其子节点。忘记在节点的子节点上调用visit()意味着不会访问这些子树

如果您将输入转换为较低级别,例如虚拟机指令,这两种模式都可能有用。