我在Visual Studio下使用Antlr4,C#版本。效果很好。
AFAIK(但我可能是错的(侦听器和访客用于类似的任务。
那么,如何在它们之间做出选择呢?或者我可以同时使用两者吗?请注意,我找到的所有示例都使用侦听器或访问者,但不能同时使用两者......
在我看来,访客是一个不错的选择,因为您可以完全控制遍历
这是引用"权威ANTLR 4参考"一书
侦听器和访客机制之间的最大区别在于侦听器方法由 ANTLR 提供的 walker 对象调用,而访客方法必须使用显式访问调用遍历其子级。忘记在节点的子节点上调用 visit(( 意味着这些子树不会被访问
如果将输入转换为较低级别(例如虚拟机指令(,则这两种模式都可能有用。