ANTLR - 无法将defaultErrorHandler设置为false

时间:2018-04-15 07:47:18

标签: c# antlr3

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

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

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

如果没有行defaultErrorHandler=false;,一切正常,但如果将这一行添加到选项中,则会出错。

我正在使用ANTLRWorks版本1.5.2

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

是什么让你认为defaultErrorHandler是一个有效的选择?阅读the documentation以查看允许的内容。

答案 1 :(得分:1)

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

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

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

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