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

时间:2012-04-11 03:14:24

标签: python antlr antlr3

我正在为我的编译器类编写一个简单的解析器(只是一个概念验证,我可以使工具正常工作)并且正在使用带有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中复制(我可以复制代码,但实际上似乎无法让它运行)。有谁知道我会怎么做?

1 个答案:

答案 0 :(得分:5)

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

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

antlr3.BaseRecognizer.displayRecognitionError = displayRecognitionError
}