Antlr4 忽略某些树

Antlr4 ignore certain trees

我正在使用 ANTLR4 制作编程语言(C# 运行时)。 但是,当我尝试制作一个 for 循环时。发生的事情是:

  1. 它检测 for 循环语法
  2. Listener正常进入并执行
  3. 然后它向下访问该块并再次执行...并且也超出了范围(稍后会发生)

我怎样才能防止第三件事发生?

P.S

ANTLR4中有内置的linter/compiler模式吗?

侦听器自动访问所有节点,仅一次且深度优先。这非常适合做语义评估之类的事情,但这不是你想要执行的。

为此,您需要查看访客。对于访问者,由您决定是否访问任何给定节点的子节点,甚至访问该子节点的次数。