首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中编写一些语法的LALR解析器?

如何在Java中编写一些语法的LALR解析器?
EN

Stack Overflow用户
提问于 2011-03-23 13:14:25
回答 4查看 5.9K关注 0票数 2

我想编写Java代码来为我的语法构建一个LALR解析器。有没有人可以推荐一些书或链接,让我学习如何为LALR解析器编写Java代码?

EN

回答 4

Stack Overflow用户

发布于 2011-03-23 13:18:00

手工编写LALR解析器很困难,但它是可以做到的。如果您想了解手动构建解析器背后的理论,请考虑阅读Grune和Jacobs的"Parsing Techniques: A Practical Guide“。这是一本关于一般解析技术的优秀书籍,其中关于LR解析的章节尤其出色。

如果您对获得用Java编写的LALR解析器更感兴趣,可以考虑研究Java CUP,这是一个用于Java的通用解析器生成器。

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2011-03-28 02:23:48

您可以将LALR功能分为两部分:准备表和解析输入。

第一部分很复杂,而且容易出错,所以即使您想知道它是如何工作的,我也建议您为LALR状态(以及记号赋予器DFA )使用经过验证的工作表生成器。

第二部分包括使用一些非常简单的算法来使用这些表,以将输入标记并处理为解析树/具体语法树。如果你喜欢这样做,你自己实现起来会更容易,而且你仍然可以完全控制它的工作方式和功能。

当做解析任务时,我个人使用免费的GOLD Parsing System,它有一个很好的UI来创建和调试语法,它也生成表文件,然后可以由现有的引擎或您自己的实现加载和处理(这些CGT文件的文件格式有很好的文档记录)。

票数 1
EN

Stack Overflow用户

发布于 2011-03-28 02:32:08

如前所述,您将始终使用解析器生成器来生成LALAR解析器。针对Java的几个这样的工具包括:

  • SableCC (我的personal favourite)
  • CUP
  • Beaver3
  • SJPT
  • Gold
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5401132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档