在解析过程中检测解析错误
问题描述:
如何以编程方式检测解析器生成的错误?例如给这个语法:在解析过程中检测解析错误
s : 'hello' ;
,并将该软件与输入:"foo bar"
ParseTree tree = parser.s();
解析器会打印出"line 1:0 mismatched input 'foo' expecting 'hello'"
。有没有办法检测编程解析失败?它似乎没有抛出任何异常。
答
落实ANTLRErrorListener接口,并把它添加到解析器:
Parser#addErrorListener(ANTLRErrorListener);
通常情况下,需要先删除默认的控制台输出中听众:
Parser#removeErrorListeners()