这似乎是一个理论问题。
据我所知,ANTLR3使用其recover(###)方法自行处理错误。我想知道ANTLR3用于错误恢复的方法。 (即恐慌模式/短语级别等)有人可以帮我解决这个问题吗?
如果有人能告诉我恢复方法的声明,如果我的第一个猜测是正确的,那将是很好的。谢谢。
答案 0 :(得分:2)
引用:
ANTLR的错误恢复机制是基于Niklaus Wirth的早期 算法+数据结构中的想法=程序 1 (以及 Rodney Topor关于递归下降解析器中错误恢复的注记 2 )还包括Josef Grosch的CoCo的好主意 解析器生成器(Recur-中的高效且舒适的错误恢复 sive Descent Parsers 3 )。从本质上讲,识别器执行单一 - 符号错误符号插入和删除(如 如果可能的话,暂时描述一下。如果没有,识别器吞噬了sym- 直到前瞻是重新同步集的成员并且 然后退出规则。重新同步集是输入符号集 可以合法地遵循对当前规则和引用的引用 任何调用规则调用链。同样,如果识别器不能 从规则的开头选择任何替代方案,即识别器 再次使用gobble-and-exit策略。
[...]
- 特伦斯帕尔。 The Definitive ANTLR Reference,10.7自动错误恢复策略。
1 Niklaus Wirth。 算法+数据结构=程序。 Prentice Hall PTR,Upper Saddle River,NJ,USA,1978。
2 Rodney W. Topor。关于递归下降解析器中的错误恢复的注释。 SIGPLAN Not。,17(2):37-40,1982。
3 Josef Grosch。递归下降解析器中的高效且舒适的错误恢复。 结构化编程,11(3):129-140,1990。