第1章编译程序概论_第1页
第1章编译程序概论_第2页
第1章编译程序概论_第3页
第1章编译程序概论_第4页
第1章编译程序概论_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本章目标本章目标v 解释翻译程序和编译程序的概念解释翻译程序和编译程序的概念v 说明编译程序的工作过程说明编译程序的工作过程v 阐述编译程序的逻辑结构,给出其总体框架图阐述编译程序的逻辑结构,给出其总体框架图v 介绍编译技术的相关应用介绍编译技术的相关应用教学内容教学内容1.1 1.1 编程语言与翻译系统编程语言与翻译系统1.2 1.2 编译程序的工作过程编译程序的工作过程1.3 1.3 编译程序的逻辑结构编译程序的逻辑结构1.4 1.4 编译技术应用编译技术应用1.5 1.5 本章小结本章小结1.1 编程语言与翻译系统编程语言与翻译系统程序设计语言程序设计语言 1常用的高级语言常用的高级语言

2、 2编译程序的概念编译程序的概念 31、程序设计语言、程序设计语言(1)程序设计语言)程序设计语言 人与计算机联系的工具,人正是通过程序设计语言指挥计算机按照人的意志进行运算和操作、显示信息和输出运算结果的。(2)程序设计语言的发展)程序设计语言的发展【关键概念】程序程序设计语言的发展经历了】程序程序设计语言的发展经历了“低级语言低级语言高级语言高级语言甚高级语言甚高级语言” 这样的这样的3个阶段。个阶段。低级语言低级语言高级语言高级语言(第三代第三代)甚高级语言甚高级语言机器语言机器语言(第一代第一代)汇编语言汇编语言(第二代第二代)结构化语言结构化语言面向对象语言面向对象语言基础语言基础语

3、言第四代语言第四代语言2、常用的高级语言、常用的高级语言(1)基础语言)基础语言uFORTRANuCOBOLuBASIC(2)结构化语言)结构化语言uPascaluC语言uAda语言(3)面向对象语言)面向对象语言uC+语言uJava语言【关键概念】常用的高级语言可以分为基础语言、结构化语言和面向对象语言】常用的高级语言可以分为基础语言、结构化语言和面向对象语言3大类。大类。3、编译程序的概念、编译程序的概念(1)计算机执行高级语言程序的步骤)计算机执行高级语言程序的步骤u用一个编译程序把高级语言翻译成机器语言程序u运行所得的机器语言程序求得计算结果(2)翻译程序)翻译程序指这样的一个程序,它

4、能够把某一种语言程序(称为源语言程序)转换成另一种语言程序(称为目标语言程序),而后者与前者在逻辑上是等价的。(3)编译程序)编译程序如果诸如FORTRAN 、 Pascal 、 C 、 Ada 、 Smalltalk或Java这样的“”,而诸如汇编语言或机器语言之类的“”,这样一个就称为编译程序。3、编译程序的概念、编译程序的概念(4)解释程序)解释程序 一个源语言的解释程序是这样的程序,它以该语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。【关键概念】编译程序实际上是一个源语言为高级语言】编译程序实际上是一个源语言为高级语言,而目标语言是低级语言的翻译程而目标语言是低

5、级语言的翻译程序。在计算机上执行高级语言编写的程序通常有编译和解释两种方式,它们的区别在于序。在计算机上执行高级语言编写的程序通常有编译和解释两种方式,它们的区别在于是是否生成目标代码。否生成目标代码。1.2 编译程序的工作过程编译程序的工作过程词法分析词法分析 1语法分析语法分析 2语义分析和中间代码产生语义分析和中间代码产生 3代码优化代码优化 4目标代码生成目标代码生成 51.2 编译程序的工作过程编译程序的工作过程(1)编译程序的工作过程)编译程序的工作过程指从输入源程序开始到输出目标程序为止的整个过程。(2)引例)引例英文翻译为中文英文翻译为中文 识别出句子中的一个个单词; 分析句子

6、的语法结构; 根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文。(3)编译程序工作过程中所经历的阶段)编译程序工作过程中所经历的阶段 编译程序的工作过程一般也可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化与目标代码生成。1、词法分析、词法分析(1)任务)任务输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字(begin, end, if ,for, while等),标识符、常数、算符和界符(标点符号、左右括号等等)。(2)举例)举例对于Pascal的循环语句for I:=1 to 100 do词法分析的结果

7、是识别出如下的单词符号: 基本字 for 标识符 I 赋值号 := 整常数 1 基本字 to 整常数 100 基本字 do1、词法分析、词法分析(3)依循的规则)依循的规则在词法分析阶段的工作中所依循的是语言的词法规则(或称构词规则)。(4)描述工具)描述工具描述词法规则的有效工具是正规式和有限自动机。2、语法分析、语法分析(1)任务)任务在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“子句”、“句子”(“语句”)、“程序段”和“程序”等。通过语法分析,确定整个输入串是否构成语法上正确的“程序”。(2)依循的规则)依循的规则语法分析所依循的是语

8、言的语法规则。(3)描述工具)描述工具语法规则通常用上下文无关文法描述。(4)举例)举例Z:=X+0 .618 * Y 代表一个“赋值语句”x + 0.618*Y 代表一个“算术表达式”3、语义分析和中间代码产生、语义分析和中间代码产生(1)任务)任务对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。这一阶段通常包括两个方面的工作: 对每种语法范畴进行静态语义检查,例如,变量是否定义、类型是否正确等等。 进行中间代码的翻译(2)依循的规则)依循的规则所依循的是语言的语义规则。(3)描述工具)描述工具通常使用属性文法描述语义规则。4、代码优化、代码优化(1)任务)任务

9、 对前阶段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。优化的主要方法有:提取公共子表达式、循环优化、删除无用代码等等。有时,为了便于“并行运算”,还可以对代码进行并行化处理。(2)依循的规则)依循的规则优化所依循的原则是程序的等价变换规则。5、目标代码生成、目标代码生成(1)任务)任务把中间代码(或经过优化处理之后)变换成特定机器上的低级语言代码。这个阶段实现最后的翻译,它的工作有赖于硬件系统结构和机器指令含义。(2)工作依赖)工作依赖硬件系统结构和机器指令含义。1.3 编译程序的逻辑结构编译程序的逻辑结构编译程序的总体框架编译程序的总体框架 1编译程

10、序的表格管理编译程序的表格管理 2编译程序中的错误及出错处理编译程序中的错误及出错处理 3编译程序的分遍处理编译程序的分遍处理 4编译前端与后端编译前端与后端 51、编译程序的总体框架、编译程序的总体框架(1)编译程序的总体框架图)编译程序的总体框架图2、编译程序的表格管理、编译程序的表格管理(1)表格)表格 编译程序在工作过程中需要保持一系列的表格,以登记源程序的各类信息和编译各阶段的进展状况。合理地设计和使用表格是编译程序构造的一个重要问题。(2)符号表)符号表 在编译程序使用的表格中,最重要的是符号表。它用来登记源程序中出现的每个名字以及名字的各种属性。例如,一个名字是常量名、变量名,还

11、是过程名等等;如果是变量名,它的类型是什么、所占内存是多大、地址是什么等等。通常,编译程序在处理名字的定义性出现时,要把名字的各种属性填人到符号表中;当处理到名字的使用性出现时,要对名字的属性进行查证。3、编译程序中的错误及出错处理、编译程序中的错误及出错处理(1)源程序中的错误)源程序中的错误 源程序中的错误通常分为语法错误语法错误和语义错误语义错误两大类。(2)语法错误)语法错误 语法错误是指源程序中不符合语法(或词法)规则的错误,它们可在词法分析或语法分析时检测出来。例如,词法分析阶段能够检测出“非法字符”之类的错误;语法分析阶段能够检测出诸如“括号不匹配”、“缺少;”之类的错误。(3)

12、语义错误)语义错误 语义错误是指源程序中不符合语义规则的错误,这些错误一般在语义分析时检测出来,有的语义错误要在运行时才能检测出来。语义错误通常包括:说明错误、作用域错误、类型不一致错误等等。4、编译程序的分遍处理、编译程序的分遍处理(1)遍)遍 所谓“遍”就是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。(2)分遍处理的优缺点)分遍处理的优缺点v 优点:使整个编译程序逻辑结构清晰一些,减少对主存容量的要求v 缺点:增加一些重复性工作(3)如何分遍)如何分遍 一个编译程序究竟应分成几遍,如何划分,是与源语言、设计要求、硬件设备等诸因素有关的,因此难于统一划定。5、编译前端与后端、编译前端与后端(1)编译前端)编译前端 编译前端主要由与源语言有关但与目标机无关的那些部分组成。这些部分通常包括词法分析、语法分析、语义分析与中间代码产生,有的代码优化工作也可包括在前端。(2)编译后端)编译后端 编译后端包括编译程序中与目标机有关的那些部分,如与目标机有关的代码优化和目标代码生成等。通常,后端不依赖于源语言而仅仅依赖于中间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论