ANTLR:错误恢复和报告

时间:2012-02-22 03:58:34

标签: java antlr

我在使用ANTLR v3恢复和重新发布错误时遇到问题。我按照这个链接http://www.antlr.org/blog/antlr3/error.handling.tml但我没有这个解决方案。 我想做一些报告和恢复 例如在这样的源程序中: 学生输入代码:

FOR(int a=0;a<10;a++){
 b=b*a;
}

,程序将报告如下: 程序:“你的意思是关键字FOR是为了什么?” 学生回答:“是” 之后,系统自动恢复并修改源代码。 使用ANTLR v3怎么做?与ANTLR无关? 需要帮忙。谢谢你们!

1 个答案:

答案 0 :(得分:1)

我认为您需要在生成的解析器类中覆盖org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken

当ANTLR检测到无效令牌时,将调用此函数。因此,在您自己的功能中,您可以询问用户是否需要恢复。

如果需要,您可以致电BaseRecognizer.recoverFromMismatchedToken执行恢复。如果没有,您可以抛出异常MismatchedTokenException