原型中的ANTLR4异常

时间:2018-07-05 16:51:28

标签: java exception-handling antlr4

我使用ANTLR4在Java中创建解析器。我的ANTLR4解析器中的每个规则都是Java中的一个函数,并且默认情况下(在其原型中)每个函数都会引发“ RecognitionException”。 例如,我在“ parser.g4”中定义的规则“自动机”在“ parser.java”中创建为名为“自动机”的函数,该函数在其原型中抛出“ RecognitionException”:

public final AutomatonContext automaton() throws RecognitionException

我不仅要抛出“ RecognitionException”,还要在原型中抛出自己的异常,例如:

public final AutomatonContext automaton() throws RecognitionException, ExceptionTypeA, ExceptionTypeB

我知道如何在ANTLR4脚本中进行“尝试捕获”(只需在规则定义后写catch[RecognitionException e] { throw e; }之类的东西),但是我想在原型中使用“抛出”,并且我不想在当前函数体中使用“ try-catch”(因为我不想在当前函数中处理这些异常)。

目前,我的解决方案是在生成“ parser.java”之后自行添加它。但是我仍然想知道在编写ANTLR4脚本“ parser.g4”时是否有一些方法可以实现。

0 个答案:

没有答案