什么是ANTLR3错误恢复方法?

时间:2012-03-14 18:56:49

标签: error-handling antlr antlr3 error-recovery

这似乎是一个理论问题。

据我所知,ANTLR3使用其recover(###)方法自行处理错误。我想知道ANTLR3用于错误恢复的方法。 (即恐慌模式/短语级别等)有人可以帮我解决这个问题吗?

如果有人能告诉我恢复方法的声明,如果我的第一个猜测是正确的,那将是很好的。谢谢。

1 个答案:

答案 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。