预测分析表的构造毕业设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
预测分析表的构造毕业设计

沈阳航空工业学院 课 程 设 计 报 告 课程设计名称:软件综合课程设计 课程设计题目:预测分析表的构造 院(系):计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 黄正文 目 录 第一章 总体设计方案 2 1.1 设计内容及要求 2 1.2 设计原理及思路 2 1.2.1 LL(1)文法的判定 2 1.2.2 FIRST集和FOLLOW集的构造 3 1.2.3 预测分析表的生成 4 1.2.4 系统的模块结构 5 1.3 实现工具与环境 6 第二章 详细设计 7 2.1 数据结构设计 7 2.1.1全局变量 7 2.1.2 预测分析表的设计 8 2.2 函数的设计及说明 9 2.3 关键算法流程 11 第三章 调试分析 15 3.1 系统调试中遇到的问题及解决方案 15 3.2 系统运行结果 16 参考文献 19 附 录(关键部分程序清单) 20 第一章 总体设计方案 1.1 设计内容及要求 设计内容 为所输入的文法构造预测分析表。 设计要求 (1)设计功能性界面和数据性界面。为简单起见,文法符号暂用单字符表示。 (2)本题目的功能包括文法输入、预测分析表生成、输出预测分析表。 (3)以表格形式输出预测分析表。 说明 本题目不进行文法的等价变换,在构造预测分析表的过程中应检查是否是LL(1)文法,若是则生成预测分析表(LL(1)分析表)。 设计原理及思路 在自上而下的分析法中,主要是研究LL(1)分析法。预测分析表是LL(1)语法分析程序的三个组成部分之一。它的解决步骤是,首先接收到用户输入的一个文法,对文法进行检测和处理,消除左递归,得到LL(1)文法,这个文法应该满足:无二义性,无左递归,无左公因子。当文法满足条件后,再分别构造文法的每个非终结符的FIRST集合和FOLLOW集合,然后根据FIRST集合和FOLLOW集合构造LL(1)分析表。 LL(1)文法的判定 文法不含左递归是LL(1)文法的前提条件。 考查文法G[E]: E→E+T | T T→T*F | F F→( E ) | i | x | y 我们容易看出此文法没有左公因子也没有二义性,但却存在两个直接左递归,这里我们通过引入新非终结符的方法来消除左递归,使它满足要求,即:对形如U→Ux|y的产生式(其中x,y∈V+ ,y不以U开头),引入一个新的非终结符U后,可以等价地改写成为: U→yU U→x U|ε 显然改写后,U和U都不是含左递归的非终结符。因此文法G[E]按上述方法消去左递归后可等价地写成: E→TP P→+TP | ε T→FQ Q→*FQ | ε F→( E ) | i | x | y 当输入文法后,系统应该自动判定文法是否含有左递归,一个完善的系统还应能够将含有左递归的文法分解为不含左递归的文法。为简单起见,本系统只对检测到的含有左递归的文法给出不是LL(1)文法的提示。 判定LL(1)文法的另外两个条件将在后续求FIRST集和FOLLOW集的过程中进行检测。对不符合条件的文法同样给出提示信息。 1.2.2 FIRST集和FOLLOW集的构造 在构造LL(1)预测分析表之前,首先要构造该文法的每个非终结符的FIRST集合和FOLLOW集合,按照下面描述的算法来构造这两个集合。 FIRST集合的构造算法: (1)若X∈Vt,则FIRST(X)={X}。 (2)若X∈Vn,且有产生式X→a……,则把a加入到FIRST(X)中;若X→ε也是一条产生式,则把ε也加到FIRST(X)中。 (3)若X→Y……是一个产生式且Y∈Vn,则把FIRST(Y)中的所有非ε-元素都加到FIRST(X)中;若X→Y1Y2…Yk是一个产生式,Y1,…,Yi-1都是非终结符,而且,对于任何j,1≤j≤i-1,FIRST(Yj)都含有ε(即Y1…Yi-1*=ε),则把FIRST(Yj)中的所有非ε-元素都加到FIRST(X)中;特别是,若所有的FIRST(Yj)均含有ε,j=1,2,…,k,则把ε加到FIRST(X)中。 连续使用上面的规则,直至每个FIRST集合不再增大为止。 FOLLOW集合的构造算法: (1)对于文法的开始符号S,置#于FOLLOW(S)中; (2)若A→αBβ是一个产生式,则把FIRST(β)\{ε}加至FOLLOW(B)中; (3)若A→αB是一个产生式,或A→αBβ是一个产生式而β=ε(即ε∈FIRST(β)),则把FOLLOW(A)加至FOLLOW(B)中。 连续使用上面的规则,直至每个FOLLOW集合不再增大为止。 根据以上描述的算法,可以构造文法G[E]

您可能关注的文档

文档评论(0)

2017meng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档