如何使用python在ANTLR中执行自定义错误报告?

我正在为我的编译器类编写一个简单的解析器(只是一个概念证明,我可以让工具工作)并且正在使用带有python绑定的ANTLR.我已经得到了我们琐碎的语法来正确地标记和解析,但我也希望以自定义的方式处理错误.根据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;
    }
}

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

解决方法:

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

@members {
def displayRecognitionError(self, tokenNames, e):
    # do something
    pass

antlr3.BaseRecognizer.displayRecognitionError = displayRecognitionError
}
上一篇:java – ANTLR – NoViableAltException


下一篇:ANTLR4 Python从字符串而不是路径解析