Parsing Anltr4中的错误恢复和分析树

Parsing Anltr4中的错误恢复和分析树,parsing,error-handling,antlr4,Parsing,Error Handling,Antlr4,可以从Antlr4指示错误恢复机制为具有错误的给定规则构建空树吗 我不想丢失整个解析树,只想丢失与根规则相关的子树 如果我们有类似于: ruleA : ruleB | ruleC; ruleB : something | somethingElse; ruleC: ...; 例如,如果子规则something抛出一个NoviableException,那么我不希望ruleB的解析树 您不仅不能控制规则的子树,而且在任何地方都不可能影响解析器的构造。根据前瞻和错误所在的位置,这种错误

可以从Antlr4指示错误恢复机制为具有错误的给定规则构建空树吗

我不想丢失整个解析树,只想丢失与根规则相关的子树

如果我们有类似于:

ruleA : ruleB | ruleC;
ruleB : something
      | somethingElse;
ruleC: ...;

例如,如果子规则
something
抛出一个NoviableException,那么我不希望ruleB的解析树

您不仅不能控制规则的子树,而且在任何地方都不可能影响解析器的构造。根据前瞻和错误所在的位置,这种错误可能会导致整个解析运行失败并返回空解析树,即使大部分输入都匹配。

谢谢。在这种情况下,是否有方法访问解析树并删除缺少标记的子树?该访问者的结果将是一个新的解析树。或者甚至是一种知道给定规则是否缺少标记的方法?不,你怎么知道什么不存在?运行时不是设计用来做这种树处理的,认真地说:你为什么要这么做?当你走在树上发现你不需要的东西时,为什么要先把它移除,而不是进行真正的处理,忽略你不需要的东西?