编译原理课程设C语言子集的定义.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文档。上传文档
查看更多
编译原理课程设C语言子集的定义

编译原理课程设计报告 一.编译系统概述 使用过现代计算机的人都知道,多数用户是应用高级语言来实现他们所需要的计算的。现在计算机系统一般都含有不只一个的高级语言的编译程序,对有些高级语言甚至配置了几个不同性能的编译程序,供用户按不同需要进行选择。高级语言编译程序是计算机系统软件最主要的组成部分之一,也是用户最直接关系的工具之一。 计算机上执行一个高级语言程序一般分为两步:第一,用一个编译程序把高级语言翻译成机器语言程序;第二,运行所得的机器语言程序求得计算结果。 通常说的翻译程序是指能够把某一种语言程序转换成另一种语言程序(目标语言程序)。如果源语言诸如Fortran,Pascal,C,Ada或java这样的高级语言,而目标程序是诸如汇编语言或者机器语言这类的低级语言,这样的一个翻译程序就是称为编译程序。 一个编译程序的工作过程一般可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码生成、优化、目标代码生成。每个阶段都是从上一个阶段得到结果,对他进行分析,并且根据一些外部环境(例如符号表等)得到最终的输出结果。要构造一个编译程序,可以按照这样的阶段来分别构造,最后来连调。 现在人们已经建立了多种编制部分编译程序或整个编译程序的有效工具。有些能用于自动生成扫描器(如LEX),有些可以用于自动产生语法分析器(如YACC),有些甚至可以用来自动产生整个的编译程序。这些构造编译程序的工具成为编译程序-编译程序、编译程序产生器或翻译程序书写系统,他们是按照编译程序和目标语言的形式描述而自动产生编译程序的。 编译程序是一极其庞大而又复杂的系统,掌握它比较苦难。但是一旦对其掌握,对以后的程序语言设计,系统软件分析,系统软件设计,形式语言研究等方面都是非常有好处的。 二.编译系统需求分析 给出类C语言(C语言的子集)的词法和语法定义,并根据对应的语法定义写出一些属性文法和语法制导。根据词法和语法的定义,构造一个编译程序,它主要可以完成如下功能: 1、读入某个已经编辑好的类C源程序文件,通过词法分析器,生成二元组,同时检查词法错误; 2、语法分析器将产生的二元组作为输入,进行语法分析,同时检查语法错误; 3、在语法分析同时,利用属性文法和语法制导技术,产生具体的语意动作,并对符号表进行操作; 4、根据语义动作产生整个源程序的四元式序列; 5、将产生的四元式序列连同符号表一起输出,作为编译程序的最终输出结果; 6、对最后的代码优化和目标代码生成要有所考虑,必须留有一定的接口供以后扩展; 7、增大程序的可移植性,努力做到整个系统方便移植。 一些特殊要求 由于做这样一个编译系统机会非常难的,不仅对自己的编译技术有些提高,而且对一些其他课程也是非常有帮助的,因此我想做一个较为标注的软件开发过程,提高自己的程序开发能力和经验。以下自我提出的是一些特殊要求,希望能够在开发过程种完成: 1、整个系统的开发、测试、维护等工作都在Linux下完成。希望借此更加深刻的了解Linux系统的软件开发技术和工具的使用的方法; 2、希望能够按照软件开发的全过程来完成这次的编译系统的开发。做好前期的设计工作和资料查询工作,然后着手开始编制代码。这样做既可以减少开发周期,提高开发效率,又可以了解一些有关的软件工程的知识; 3、尽量采用正规的开发模式和开发方法,使用一些已经非常成熟的编译系统开发工具,例如FLEX和BISON等等,可以减少大量的不必要的人力工作; 4、作好开发中间过程的总结工作,将发现的一些问题和总结出来的新方法及时的提取出来,这对以后的调试维护工作都是非常有好处的。 三.C语言子集规定 3.1 C语言的简介 ALGOL 60是C语言的前身,它是由剑桥大学最先开发出来的一个语言。1967年,剑桥大学的Matin Richards对CPL语言进行的简化,于是产生了BCPL语言。1970年,美国贝尔实验室的Ken Thompson将BCPL进行的修改,并取名为“B语言”,并用它写出了第一个UNIX操作系统。到了1973年,D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,取名为C语言。1978年,Brian W.Kernighian和Dennis M.Ritchie出版了著名的《The C Programming Language》,从而使C语言成为目前世界上最为流行的高级程序语言。 C语言之所以在目前世界上流行、使用广泛,这是因为它有非常多的优点。首先它简洁紧凑、灵活方便,有着非常丰富的运算符和数据结构。其次他是一个结构化的语言,便于使用、维护及调试。还有就是C语言允许直接对物理地址访问,可以直接对硬件操作。最后C语言生成的代码质量高,程序执行效率高,并且使用范围大,可移植性好,因此在多钟操作系统中均可以使用。 由于C语言的流行,随之而来的是许许

文档评论(0)

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

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

1亿VIP精品文档

相关文档