我在使用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无关? 需要帮忙。谢谢你们!
答案 0 :(得分:1)
我认为您需要在生成的解析器类中覆盖org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken
。
当ANTLR检测到无效令牌时,将调用此函数。因此,在您自己的功能中,您可以询问用户是否需要恢复。
如果需要,您可以致电BaseRecognizer.recoverFromMismatchedToken
执行恢复。如果没有,您可以抛出异常MismatchedTokenException
。