【问题标题】:How do I perform custom error reporting in ANTLR using python?如何使用 python 在 ANTLR 中执行自定义错误报告?
【发布时间】:2012-04-12 01:19:33
【问题描述】:

我正在为我的编译器类编写一个简单的解析器(只是我可以让这些工具正常工作的概念证明),并且正在将 ANTLR 与 python 绑定一起使用。我已经获得了正确标记和解析的简单语法,但我还想以自定义方式处理错误。根据 ANTLR 文档(更具体地说:http://www.antlr.org/wiki/display/ANTLR3/Error+reporting+and+recovery),我可以将以下代码放入我的语法文件中:

@members {
    private List<String> errors = new LinkedList<String>();
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
        String hdr = getErrorHeader(e);
        String msg = getErrorMessage(e, tokenNames);
        errors.add(hdr + " " + msg);
    }
    public List<String> getErrors() {
        return errors;
    }
}

但是,这是一个我似乎无法在 python 中复制的 Java 示例(我可以复制代码,但似乎无法让它运行)。有谁知道我该怎么做?

【问题讨论】:

    标签: python antlr antlr3


    【解决方案1】:

    我设法找到了解决问题的方法:

    @members {
    def displayRecognitionError(self, tokenNames, e):
        # do something
        pass
    
    antlr3.BaseRecognizer.displayRecognitionError = displayRecognitionError
    }
    

    【讨论】:

    • 目前无法接受我自己的答案,但如果没有更好的解决方案,明天会这样做。
    • 这似乎是处理它的好方法:我不期待任何其他答案! :)
    猜你喜欢
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多