1编译原理概论研讨.pptVIP

  1. 1、本文档共41页,可阅读全部内容。
  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文档。上传文档
查看更多
1编译原理概论研讨

第一章 编译原理概论 信息技术学院 林天华 第一章 编译原理概述 1.0 语言处理器 1.1 什么是编译程序? 1.2 编译过程概述 1.3 编译程序的结构 1.4 编译阶段的组合 1.5 编译技术和软件工具 1.0 语言处理器 编译器 编译器就是一个程序; 编译器可以阅读某种语言(源语言)编写的程序,并且把这个程序翻译为一个等价的、用另外一种语言(目标语言)描述的程序; 编译器还有另外一个重要任务就是报告编译过程中出现的错误。 解释器 解释器不通过翻译的方式生成目标程序。 直接利用输入信息,执行源程序中指定的操作,输入一句,执行一句,不保存中间结果。 1.0 语言处理器 编译器与解释器 编译器产生的机器语言目标程序通常比一个解释器快得多; 解释器的错误诊断效果要比编译器更好。 JAVA语言处理过程——编译与解释的结合 首先,JAVA源程序被编译为一个称为字节码的(bytecode)中间表示形式; 然后,虚拟机对字节码进行解释执行。 编译和解释可以在不同的机器上进行,有利于网络应用和跨平台运行。 1.1 什么是编译程序? 一个编译程序就是一个语言翻译程序。它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价程序。 编译程序是计算机系统的基本组成部分之一,一个计算机系统可以有多个高级语言的编译程序。有的高级程序设计语言甚至配置了几个不同性能的编译程序 编译程序的重要性体现在它使得多数计算机用户不必考虑与机器有关的繁琐细节,使程序员和程序设计者独立于机器。适合机器种类和数量的增长. 编译程序有规律可循 源语言种类成千上万,目标语言也是成千上万,编译程序根据它们的构造不同,所执行的具体功能的差异又分成了各种类型。 尽管存在各种类型的编译程序,但是各种编译程序所必须执行的主要任务基本是一样的,通过理解这些任务,使用同样的基本技术,我们可以为各种各样的源语言和目标语言设计和构造编译程序。 也就是说编译程序的构成是有规律可循的,是值得分析和总结的。 全局角度认识编译程序 编译过程就是将源程序映射到语义上等价的目标程序; 映射过程分为两个部分: 分析 把源程序分解成为多个组成要素,并在这些要素上加语法结构; 利用这个语法结构创建该源程序的一个中间表示; 分析源程序是否按照语法构成,或者语义是否一致,并且提供相关信息; 将分析过程产生的相关信息存贮在一个符号表数据结构中。 将符号表和中间表示形式一同传递给综合部分。 全局角度认识编译程序 综合 根据符号表和中间表示形式的信息来构造目标程序。 分析部分通常被称为编译器前端;综合部分通常被称为编译器的后端 细节角度认识编译程序 实际上,编译过程是一组顺序执行的步骤; 每个步骤把源程序的一种表示方式转换成另一种表示方式,一步一步接近最终的目标程序; 实践过程中,往往将多个步骤组合在一起,构成一个阶段,在这个阶段过程中,不需要将每个步骤中间结果表示出来,只需要将这个阶段的中间结果表示出来,传递给下一阶段; 机器无关代码往往作为编译过程前端和后端的分水岭,只是将前一阶段中间代码表示转换为另外一种形式。 1.2 编译过程概述(一) 编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。 一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。 编译过程通常划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。另外有两个重要工作:表格管理和出错处理与上述六项阶段都有联系。 1.2 编译过程概述(一) 编译过程中源程序的各种信息被保留在种种不同的表格中,编译各阶段的工作都涉及到构造、查找和更新有关表格,因此,需要表格的管理工作。 如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制到最小的范围内。使得编译工作得以继续。 1.3 编译程序的结构 1.2 编译过程概述(二) 词法分析阶段:编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 逻辑上紧密相连的一组字符,这些字符具有集体含义。 单词:标识符,保留字,算符,界符等。 对于每个单词要素,词法分析产生(输出)如下的表示形式:(单词类型,单词有效值);包括两个分量。 也就是说经过词法分析,输出中间表示代码形式将传递给下一阶段,语法分析。 描述词法规则的有效工具是正规式和有限自动机。 1.2 编译过程概述(三) 语法分析:编译过程的第二个阶段。语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语,如:“程序”、“语句”、“表达式”等等。 语

文档评论(0)

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

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

1亿VIP精品文档

相关文档