编译原理课程设计报告11.docxVIP

  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文档。上传文档
查看更多
编译原理课程设计报告11

课 程 设 计 报 告设计题目:LL(1)文法分析器班 级:计算机科学与技术1201组长学号长姓名:张小红指导教师:设计时间:设计分工摘要选题要求:根据某一文法编制调试LL(1) 文法语法分分析程序,以便对任意输入的符号串进行分析。本次课程设计的目的主要是加深对预测分析LL(1)文法语法分析法的理解。具体如下:1、对语法规则有明确的定义;2、编写的分析程序能够对给定文法进行正确的语法分析;3、对输入给定的文法,手工计算FIRST、FOLLOW集合,应能判断识别是否为给定文法的句子,并给出推导过程。4、对输入给定的文法,由程序自动构造FIRST、FOLLOW集合。5、对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过程。关键词:LL(1)文法 语法分析 FIRSTFOLLOW 。目录摘要31概述62 课程设计任务及要求62.1 设计任务62.2 设计要求63 算法及数据结构73.1算法的总体思想(流程)73.2文本文法读入程序模块73.2.1功能73.2.2 数据结构73.3 文法扫描模块83.3.1 功能83.3.2 数据结构83.4 first集合模块93.4.1 功能93.4.2 数据结构93.4.3 算法103.5 follow集合模块103.5.1 功能103.5.2 数据结构103.5.3 算法113.6 分析表生成模块113.6.1 功能113.6.2 数据结构123.6.3 算法123.7 预测分析程序模块123.7.1 功能123.7.2 数据结构123.7.3 算法134 程序设计与实现144.1 程序流程图144.2 程序说明154.3 实验结果155 结论176 参考文献177 收获与体会178 附录18程序第一部分18程序第二部分20程序第三部分44概述根据某一文法编制调试LL(1) 文法语法分分析程序,以便对任意输入的符号串进行分析。本次课程设计的目的主要是加深对预测分析LL(1)文法语法分析法的理解。预期目标构造LL(1)文法语法分析程序,任意输入一个文法符号串,并判断它是否为文法的一个句子。程序要求为该文法构造预测分析表,并按照预测分析算法对输入串进行语法分析,判别程序是否符合已知的语法规则,如果不符合(编译出错),则输出错误信息。对于任意输入的一个LL(1)文法,构造其预测分析表。首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再实现教材P.79给出的预测分析表构造算法。程序显示输出预测分析表或输出到指定文件中。2 课程设计任务及要求2.1 设计任务对于任意输入的一个LL(1)文法,构造其预测分析表。要求:首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再实现教材P.79给出的预测分析表构造算法。程序显示输出预测分析表或输出到指定文件中。2.2 设计要求对文法 :G: E→E+T|T T→T*F|F F→(E)|i按教材P.76表4.1构造出G的预测分析程序,程序显示输出如P.78那样的匹配过程。3 算法及数据结构3.1算法的总体思想(流程)对存入文本文件(.txt文件)里存放的文法读入程序,然后首先要建立两个类,分别是grammer类和SeqStack类(Grammer类中有保存从文本文件读入的LL(1)文法,SeqStack类主要的作用为在预测分析时作为符号栈)。然后按照书上介绍的算法计算出相应的first集合和follow集合,根据已有的集合在用正确合理的算法计算出文法的预测分析表。最后根据文法分析表对输入的字符串进行分析,输出相应的LL(1)文法分析结果。3.2文本文法读入程序模块3.2.1功能把文本文件中的LL(1)文法读入到程序中grammer类中的数组成员g中。3.2.2 数据结构首先要建立两个类,分别是grammer类和SeqStack类Grammer类中有保存从文本文件读入的LL(1)文法,用一个二维字符数组g保存,保存非终结符的字符数组VN,保存终结符的字符数组VT,文法开始符号字符变量begin , 元素对应first集合中的有空字符的非终结符数组emptychar,预测分析表为二维整形数组form.SeqStack类主要的作用为在预测分析时作为符号栈.对于这个模块的设计,就是用输入流对文本文件中的文法进行读入当读到字符’|’或’/n’时意味着一个产生式已结束,那么相应数组中相应的下标变量+1;数组g[i][0]所存放着这个产生式对应的字符的数量.g[i][1]为这个产生式左边的非终结符。数据结构框图如下:3.3 文法扫描模块3.3.1 功能通过对已输入到数组g中的文法,进行扫描,把相应的

文档评论(0)

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

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

1亿VIP精品文档

相关文档