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

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

  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文档。上传文档
查看更多
编译原理课程设计一个简单文法编译器的设计与实现x

PAGE   PAGE 1 课 程 设 计 报 告 设计题目:一个简单文法编译器的设计与实现 班 级:计算机1302 组长学号: 组长姓名: 指导教师: 设计时间:2015年12月 设计分工  PAGE 63 摘 要 现代计算机的程序很多都是用高级语言编写的,而这些高级语言计算机是无法识别的,因此需要将它们转变成计算机能识别的语言,此时就需要借助到编译程序。编译程序是一种翻译程序,它特指把某种高级语言(如C、Java、Pascal)翻译成具体计算机上的低级程序设计语言。编译程序是计算机系统软件最主要的组成部分之,也是用户最直接关系的工具之一。 一个编译程序的可以划分为前端和后端。前端包括词法分析、语法分析、语义分析与中间代码生成三个阶段,后端包括优化、目标代码生成两个阶段,另外还有符号表的管理和错误处理贯穿整个过程。一个编译程序,既可以一个阶段一个阶段地对源程序进行分析,也可以前端只对源程序进行一遍分析,后端也只进行一遍分析。 本课设实现了对C语言中的一部分功能的编译,包括算术逻辑表达式、if语句、while语句以及一维数组等。前端对源程序扫描一遍实现词法分析、语法分析、语义分析与中间代码生成三个阶段,后端进行目标代码生成,整个过程穿插符号表管理和错误处理。 关键词:编译程序,前端,后端 目 录 摘要I 1 概述 1 2 课程设计任务及要求 2 2.1 设计任务 2 2.2 设计要求2 3 算法与数据结构3 3.1 算法的总体思想(流程)3 3.2 词法分析识别器模块4 3.2.1 功能4 3.2.2 数据结构5 3.2.3 算法9 3.3 语法分析模块11 3.3.1 功能11 3.3.2 数据结构12 3.3.3 算法16 3.4 语义分析和中间代码生成模块30 3.4.1 功能30 3.4.2 数据结构31 3.4.3 算法33 3.5 符号表模块41 3.5.1 功能41 3.5.2 数据结构41 3.5.3 算法43 3.6 目标代码生成模块43 3.6.1 功能43 3.6.2 数据结构44 3.6.3 算法45 4 程序设计与实现47 4.1 程序流程图47 4.2 程序说明47 4.3 实验结果50 5 结论61 6 参考文献62 7 收获、体会和建议62 1 概述 在计算机上执行一个高级语言程序一般要分为两步;第一步,把高级语言翻译成机器语言程序;第二步,运行所得的机器语言程序求得计算结果。编译程序就是将高级语言程序翻译成机器语言程序或汇编语言程序的工具。工作过程一般可以划分为五个阶段:词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成。前端包含词法分析、语法分析、语义分析和中间代码生成三个阶段,后端包含优化、目标代码生成两个阶段。 词法分析的任务是对构成源程序的字符串进行分解和扫描,识别出一个个Token序列,并标上类别码以区分关键字、标识符、常数、变量、数组界符等。词法分析器用自动机实现,每读入一个字符,就进行状态转移,当转移到终止状态的时候一个Token就识别出来了。此外,词法分析还要进行常数处理、关键字和标识符的区分操作。 语法分析在词法分析的基础上,根据语言的语法规则,确定整个输入串在语法上是否是正确的。分析方法有递归下降子程序分析法、LL(1)分析法、LR(0)分析法、简单优先分析法等。 在语义分析和中间代码生成这一过程中,对语法分析所识别的各类语法范畴,要分析其含义,并以四元式的形式产生中间代码。 优化的任务在于对中间代码进行加工变换以产生出更为高效的目标代码,主要进行常数合并、公共子表达式节省、删除无用赋值、循环优化等操作。 目标代码生成的任务是把中间代码变换成特定机器上的低级语言代码,这一步需要考虑硬件系统结构、机器指令以及寄存器个数等情况,将一中间代码程序段翻译成汇编语言或机器语言目标代码。 此外,在这五个阶段当中,符号表的管理、错误处理要穿插在当中进行。 本次课设将前端的三个阶段整合到一起,通过对输入的源程序扫描一遍的方式实现,入口为语法分析,使用递归下降子程序分析法。将词法分析器作为语法分析的子程序,当语法分析需要用到Token时,调用词法分析器识别出一个Token串,同时在语法分析的过程中插入语义动作,每识别完一定的Token串就能生成四元式。在后端则直接根据四元式生成目标代码。符号表用

文档评论(0)

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

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

1亿VIP精品文档

相关文档