我在ANTLR中创建了一个简单的语法,一切正常。
但是,当我试图关闭默认错误处理时,我收到一个错误:非法选项defaultErrorHandler。
grammar MyGrammar;
options {
language = CSharp3;
output=AST;
defaultErrorHandler=false;
}
如果没有行defaultErrorHandler=false;
,一切正常,但如果将这一行添加到选项中,则会出错。
我正在使用ANTLRWorks版本1.5.2
我错过了什么吗?
答案 0 :(得分:1)
是什么让你认为defaultErrorHandler
是一个有效的选择?阅读the documentation以查看允许的内容。
答案 1 :(得分:1)
在ANTLR3中,您可以通过覆盖以下一种或多种方法来自定义错误显示:
emitErrorMessage()
- 确定错误消息的显示方式displayRecognitionError()
- 创建错误消息,然后调用上面的getErrorHeader()
,getErrorMessage()
- 为上述这可以通过使用superClass
选项使解析器成为解析器类的子类,或使用@members
块直接在语法中完成。
如果要修改ANTLR从错误中恢复的方式,则需要覆盖recover()
或在语法中使用@rulecatch
块。