代码之家  ›  专栏  ›  技术社区  ›  vldmrrdjcc

ANTLR-无法将defaultErrorHandler设置为false

  •  0
  • vldmrrdjcc  · 技术社区  · 6 年前

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

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

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

    没有线路 defaultErrorHandler=false; 一切正常,但在选项中添加了这一行后,我出现了一个错误。

    我正在使用ANTLRWorks版本1.5.2

    我错过什么了吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jiri Tousek    6 年前

    在ANTLR3中,可以通过重写以下一个或多个方法自定义错误显示:

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

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


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

        2
  •  1
  •   Mike Lischke    6 年前

    你怎么想的 defaultErrorHandler 是一个有效的选择吗?阅读 the documentation 看看什么是允许的。