2017-03-07 52 views
1

如何以編程方式檢測解析器生成的錯誤?例如給這個語法:在解析過程中檢測解析錯誤

s : 'hello' ; 

,並將該軟件與輸入:"foo bar"

ParseTree tree = parser.s(); 

解析器會打印出"line 1:0 mismatched input 'foo' expecting 'hello'"。有沒有辦法檢測編程解析失敗?它似乎沒有拋出任何異常。

回答

0

落實ANTLRErrorListener接口,並把它添加到解析器:

Parser#addErrorListener(ANTLRErrorListener); 

通常情況下,需要先刪除默認的控制檯輸出中聽衆:

Parser#removeErrorListeners()