如何使用python在ANTLR中执行自定义错误报告?
我正在为我的compilers类编写一个简单的解析器(只是一个概念证明,我可以让工具正常工作),并将ANTLR与python绑定一起使用。我已经让我们的琐碎语法正确地标记和解析了,但是我还想用一种自定义的方式处理错误。根据ANTLR文档(更具体地说:),我可以在语法文件中放入以下代码来完成此操作:如何使用python在ANTLR中执行自定义错误报告?,python,antlr,antlr3,Python,Antlr,Antlr3,我正在为我的compilers类编写一个简单的解析器(只是一个概念证明,我可以让工具正常工作),并将ANTLR与python绑定一起使用。我已经让我们的琐碎语法正确地标记和解析了,但是我还想用一种自定义的方式处理错误。根据ANTLR文档(更具体地说:),我可以在语法文件中放入以下代码来完成此操作: @成员{ 私有列表错误=新建LinkedList(); public void displayRecognitionError(字符串[]标记名, 认可例外(e){ 字符串hdr=getErrorHe
@成员{
私有列表错误=新建LinkedList();
public void displayRecognitionError(字符串[]标记名,
认可例外(e){
字符串hdr=getErrorHeader(e);
String msg=getErrorMessage(e,tokenNames);
错误。添加(hdr+“”+msg);
}
公共列表getErrors(){
返回错误;
}
}
然而,这是一个Java示例,我似乎无法在python中复制它(我可以复制代码,但似乎无法真正让它运行)。有人知道我该怎么做吗?我设法找到了解决问题的办法:
@成员{
def displayRecognitionError(self、tokenNames、e):
#做点什么
通过
antlr3.BaseRecognitor.displayRecognitionError=displayRecognitionError
}
目前还不能接受我自己的答案,但如果没有更好的解决方案,我会在明天接受。这似乎是一个很好的处理方法:我不希望有任何其他答案!:)