我想编写Java代码来为我的语法构建一个LALR解析器。有没有人可以推荐一些书或链接,让我学习如何为LALR解析器编写Java代码?
发布于 2011-03-23 13:18:00
手工编写LALR解析器很困难,但它是可以做到的。如果您想了解手动构建解析器背后的理论,请考虑阅读Grune和Jacobs的"Parsing Techniques: A Practical Guide“。这是一本关于一般解析技术的优秀书籍,其中关于LR解析的章节尤其出色。
如果您对获得用Java编写的LALR解析器更感兴趣,可以考虑研究Java CUP,这是一个用于Java的通用解析器生成器。
希望这能有所帮助!
发布于 2011-03-28 02:23:48
您可以将LALR功能分为两部分:准备表和解析输入。
第一部分很复杂,而且容易出错,所以即使您想知道它是如何工作的,我也建议您为LALR状态(以及记号赋予器DFA )使用经过验证的工作表生成器。
第二部分包括使用一些非常简单的算法来使用这些表,以将输入标记并处理为解析树/具体语法树。如果你喜欢这样做,你自己实现起来会更容易,而且你仍然可以完全控制它的工作方式和功能。
当做解析任务时,我个人使用免费的GOLD Parsing System,它有一个很好的UI来创建和调试语法,它也生成表文件,然后可以由现有的引擎或您自己的实现加载和处理(这些CGT文件的文件格式有很好的文档记录)。
发布于 2011-03-28 02:32:08
如前所述,您将始终使用解析器生成器来生成LALAR解析器。针对Java的几个这样的工具包括:
https://stackoverflow.com/questions/5401132
复制相似问题