关于解析器理论的好书?


9

我的Java项目之一是parboiled分支,并且与Antlr或JavaCC不同,解析器是在运行时生成的。生成的语法是解析表达式语法或PEG(我听说它们的另一个术语是“ packrat”)。

尽管运行时生成增加了复杂性(涉及字节码生成),但另一方面涉及解析器理论本身。不幸的是,由于我没有计算机科学的扎实背景,因此我缺乏将现有代码映射到现有概念的理论知识-在这种情况下为解析器。

有没有我可以购买和阅读的很好的解析器参考书,或者甚至可以链接到Internet上的链接,这可以帮助我建立起这样的“映射”,这是我的理论知识不足的原因?

Answers:



3

如果您想了解解析器的理论,我推荐这本经典书籍的第1卷:

Aho,Alfred V .;Ullman,Jeffrey D.,《解析,翻译和编译理论》,Prentice-Hall(1972)。


这是出版时有关该主题的百科全书。但是从那以后,已经完成了研究工作。
babou 2014年

1

如果您不介意语言上的差异,那么Perl高阶Perl的第8章全都涉及解析,尤其是使用解析器组合器构建了递归下降解析器。它可以访问(如果您不担心Perl的话),并且可以根据需要免费阅读。几年前,它激发了对解析技术的兴趣。


0

虽然“解析技术”是一本很棒的书,而且我已经读了好几次了,但它的重点是LR解析,这对您来说不会很有趣。在您的特定情况下,您正在查看的是PEG,它们是自上而下的递归下降解析,具有基于替代顺序的回溯功能。

我建议您看看使用相同策略的解析器组合器。例如,您可以检查本文http://research.microsoft.com/pubs/65201/parsec-paper-letter.pdf,该文件使用Haskell构建了解析器组合器。检查try 它们包含回溯的部分(第3.4节)。

无论如何,您需要学习的是:

  • 递归下降解析和LL语法
  • 固定前瞻与无限前瞻(通过回溯完成)
  • 回溯策略
  • 如何处理左递归规则
  • 记忆部分结果以避免指数行为
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.