我正在学习 ANTLR4,但我以前没有使用解析器生成器的经验。
当我定义自己的访问者实现时,我必须重写 BaseVisitor 的方法(我正在寻找本书第 40 页的 EvalVisitor 类的实例)。如果我的方法实现可能抛出异常,我该怎么办?我不能使用检查异常,因为原始方法有一个空的 throws 子句。我应该使用未经检查的异常吗?(这似乎是一个糟糕的 Java 设计)。例如,假设在 EvalVisitor 类中,我希望方法 visitId(第 41 页)抛出一个用户定义的异常,比如 UndefinedId,而不是返回 0。我应该如何编写我的代码?