在解析过程中检测解析错误

问题描述:

如何以编程方式检测解析器生成的错误?例如给这个语法:在解析过程中检测解析错误

s : 'hello' ; 

,并将该软件与输入:"foo bar"

ParseTree tree = parser.s(); 

解析器会打印出"line 1:0 mismatched input 'foo' expecting 'hello'"。有没有办法检测编程解析失败?它似乎没有抛出任何异常。

落实ANTLRErrorListener接口,并把它添加到解析器:

Parser#addErrorListener(ANTLRErrorListener); 

通常情况下,需要先删除默认的控制台输出中听众:

Parser#removeErrorListeners()