Antlr4 忽略某些树
Antlr4 ignore certain trees
我正在使用 ANTLR4 制作编程语言(C# 运行时)。
但是,当我尝试制作一个 for 循环时。发生的事情是:
- 它检测 for 循环语法
- Listener正常进入并执行
- 然后它向下访问该块并再次执行...并且也超出了范围(稍后会发生)
我怎样才能防止第三件事发生?
P.S
ANTLR4中有内置的linter/compiler模式吗?
侦听器自动访问所有节点,仅一次且深度优先。这非常适合做语义评估之类的事情,但这不是你想要执行的。
为此,您需要查看访客。对于访问者,由您决定是否访问任何给定节点的子节点,甚至访问该子节点的次数。
我正在使用 ANTLR4 制作编程语言(C# 运行时)。 但是,当我尝试制作一个 for 循环时。发生的事情是:
- 它检测 for 循环语法
- Listener正常进入并执行
- 然后它向下访问该块并再次执行...并且也超出了范围(稍后会发生)
我怎样才能防止第三件事发生?
P.S
ANTLR4中有内置的linter/compiler模式吗?
侦听器自动访问所有节点,仅一次且深度优先。这非常适合做语义评估之类的事情,但这不是你想要执行的。
为此,您需要查看访客。对于访问者,由您决定是否访问任何给定节点的子节点,甚至访问该子节点的次数。