如何从ANTLR4脚本中抛出异常?

时间:2014-04-16 13:25:15

标签: antlr antlr4

当完全解析的输入不满足我的自定义要求时,我希望我的Antlr4解析器在不理解输入时抛出RecognitionException。换句话说,我想找到一个抛出RecognitionException的能力,以便它通过所有错误监听器等。

应该怎么做?

PS。我不想打破整个解析周期。我希望它继续,就像在解析/语法问题之后一样。

1 个答案:

答案 0 :(得分:0)

抛出ParseCancellationException。请注意,您需要保留一些与ParserRuleContext.exception字段相关的语义,如BailErrorStrategy.java所示。

编辑:对不起,我误解了你的问题。对您修改过的问题的回复是您不希望这样做(在解析器仍在运行时报告语义错误)。如果要报告在语义分析期间识别的错误(在完全创建解析树之后),您可以调用Parser.notifyErrorListeners(Token, String, RecognitionException),或创建自己的自定义错误报告机制。