文章目录
1. 简介
2. 主动遍历与被动遍历
ParseTreeListener 与 ParseTreeVisitor区别
- ParseTreeListener是被动遍历,ParseTreeVisitor是主动遍历
- ParseTreeListener需要与antlr遍历类ParseTreeWalker一起使用
Antlr提供了两种遍历手段,一种是Listener模式,一种是Visitor模式。两者各有优劣,Listener模式适合全局查找,默认是深度优先遍历,而Visitor模式适合指定某个节点作遍历。这种遍历方式默认是先根,然后遍历左右子树。
监听器和访问器机制的最大区别在于,监听器方法不负责显式调用子节点的访问方法,而访问器必须显式触发对子节点的访问以便树的遍历过程能够正常进行。因为访问器机制需要显式调用方法来访问子节点,所以它能够控制遍历过程中的访问顺序,以及节点被访问的次数。
3.Listener模式
使用ParseTreeWalker遍历树的过程中&#x