编译原理课程设计一个简单文法的编译器的设计与实现.docVIP

编译原理课程设计一个简单文法的编译器的设计与实现.doc

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

课 程 设 计 报 告 设计题目:一个简单文法的编译器的设计与实现 班 级:计算机1206班 组长学号:2012XXX 组长姓名:XXX 指导教师:XXX 设计时间:2014年12月 设计分工 组长学号及姓名:2012XXX XXX 分工:1)读取源文件进行词法分析 2)进行LL(1)分析生成分析表 3)设计顶层自动机将源程序分段 4)生成可执行的汇编程序 组员1学号及姓名:2012XXX XXX 分工:1)设计第二层自动机处理程序片段 2)生成中间语言四元式 3)源程序错误处理 组员2学号及姓名:2012XXX XXX 分工:1)设计第三层自动机处理复合表达式 2)设计带动作的LL(1) 文法 3)源程序错误处理 摘 要 编译原理课程具有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,在系统软件中也是占有十分重要的地位。本次课程设计我们是在Visual C++的平台上应用了词法分析、语法分析、语义分析、中间语言生成以及目标语言生成的知识设计了一个简单的编译器前端。其中设计了一个简单的有限自动机来扫描源程序即进行语法分析,并生成了关键字表、标志符表、界符表、常数表和Token串;设计了一个LL(1)文法和一个带动作的文法来实现语法分析,并生成了Select集和LL(1)分析表;采用了四元式序列的设计来生成中间语言;通过汇编语言设计来生成目标语言。最后为了使该编译器更加完善,我们设计了简单的的错误检查机制,能够对源程序进行比较全面的错误检查同时也能够指出错误出现的大致位置,增强了该编译器的健壮性。 关键字:编译器,前端,有限自动机,LL(1)文法,汇编语言,错误处理 目 录 摘要 3 1、概述 5 2、课程设计任务及要求 5 2.1设计任务 5 2.2设计要求 6 3、算法与数据结构 6 3.1词法分析器的算法 6 3.2 语法分析器的算法 12 3.2.1 LL(1)文法设计算法 12 3.2.2递归下降子程序设计算法 19 3.3中间语言生成器算法 20 3.4处理复合表达式算法 24 3.5目标语言生成器算法 30 3.6数据结构 39 4、程序设计与实现 39 4.1编译程序设计与实现 39 4.2程序实验结果 39 4.2.1待测源程序 39 4.2.2词法分析结果 40 4.2.3语法分析结果 41 4.2.4中间语言生成结果 42 4.2.5目标语言生成结果 43 4.2.6程序错误处理结果 44 5、参考文献 44 1、概述 本次课程设计的编译程序主要包括了词法分析器、语法分析器、中间代码生成器和目标代码生成器四部分,编译程序的输出结果包括了词法分析后的关键字表、界符表、标识符表和Token串,语法分析后的Select集和LL(1)分析表;中间代码生成器产生的四元式序列。最后除了完成设计所要求的内容之外,我们还做了一些扩展例如:设计了目标代码生成器来生成可执行的汇编程序;还设计了错误检查机制来查找源程序的错误并指出错误产生的大致位置。 词法分析是编译程序的第一步操作,它的任务是:从左至右扫描源程序的字符串,按照一定的词法规则识别出一个个正确的字符,并转换成该字符相对应的Token码,最终生成一个完整的Token串以供语法分析使用。由此可知,词法分析是整个编译程序的基础,而执行词法分析的一系列操作的就是词法分析器。 语法分析是编译程序的第二步操作也是编译程序的核心部分,其主要任务是:分析语法内容,确定语法结构同时生成Select集和LL(1)分析表。 中间代码和目标代码的生成是对源程序的进一步操作,其任务是:根据词法分析产生的Token串和语法分析确定的语法结构来生成中间语言——四元式和目标语言——汇编语言程序。 2、课程设计任务及要求 2.1设计任务 一个简单文法的编译器前端的设计与实现 定义一个简单程序设计语言文法(包括变量说明语句、算术运算表达式、赋值语句;扩展包括逻辑运算表达式、If语句、While语句等); 扫描器设计实现; 语法分析器设计实现; 中间代码设计; 中间代码生成器设计实现。 目标代码生成器设计实现 2.2设计要求 给出一个源程序文件,作为编译器前端的输入 输出相关编译阶段的运行结果 词法分析阶段: 生成Token序列; 生成关键字表、界符表、符号表系统。 中间

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档