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
块。
我在 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
块。