ANTLR - 无法将 defaultErrorHandler 设置为 false

ANTLR - Not able to set defaultErrorHandler to false

我在 ANTLR 中创建了一个简单的语法,一切正常。

但是,当我试图关闭默认错误处理时,我得到了一个错误:非法选项 defaultErrorHandler。

grammar MyGrammar;
options {
language = CSharp3;
output=AST;
defaultErrorHandler=false;
}

没有行 defaultErrorHandler=false; 一切正常,但是将此行添加到选项中我得到了一个错误。

我正在使用 ANTLRWorks 1.5.2 版

我是不是漏掉了什么?

是什么让您认为 defaultErrorHandler 是一个有效的选项?阅读 the documentation 以了解允许的内容。

在 ANTLR3 中,您可以通过覆盖以下一种或多种方法来自定义错误显示:

  • emitErrorMessage() - 确定错误消息的显示方式
  • displayRecognitionError() - 创建错误消息,并调用上面的
  • getErrorHeader(), getErrorMessage() - 为上述
  • 创建错误消息

这可以通过 superClass 选项使解析器成为解析器 class 的子 class 来完成,或者直接在语法中使用 @members 块。


如果您想修改 ANTLR 从错误中恢复的方式,您将需要覆盖 recover() 或在语法中使用 @rulecatch 块。