如何从ANTLR4脚本引发异常?

如何从ANTLR4脚本引发异常?,antlr,antlr4,Antlr,Antlr4,我希望我的Antlr4解析器在不理解输入时抛出RecognitionException,在完全解析的输入不满足我的自定义要求时抛出RecognitionException。换句话说,我想找到一种抛出RecognitionException的能力,这样它就可以遍历所有错误侦听器,等等 我们应该怎么做 另外,我不想破坏整个解析周期。我希望它继续运行,就像在出现解析/语法问题后一样。抛出一个错误。请记住,对于ParserRuleContext.exception字段,您需要保留一些语义,如中所示 编辑

我希望我的Antlr4解析器在不理解输入时抛出
RecognitionException
,在完全解析的输入不满足我的自定义要求时抛出
RecognitionException
。换句话说,我想找到一种抛出
RecognitionException
的能力,这样它就可以遍历所有错误侦听器,等等

我们应该怎么做

另外,我不想破坏整个解析周期。我希望它继续运行,就像在出现解析/语法问题后一样。

抛出一个错误。请记住,对于
ParserRuleContext.exception
字段,您需要保留一些语义,如中所示


编辑:对不起,我误解了你的问题。对修改后的问题的回答是,您不想这样做(在解析器仍在运行时报告语义错误)。如果要报告在语义分析期间(在完全创建解析树之后)发现的错误,可以调用
Parser.notifyErrorListeners(令牌、字符串、识别异常)
,或者创建您自己的自定义错误报告机制。

当我抛出
ParseCancellationException
时,它不会击中我的错误侦听器,而是冒泡,破坏整个解析过程。为此,我可以很容易地使用
IllegalStateException