计算机编译原理(精品·公开课件).ppt

计算机编译原理(精品·公开课件).ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 编译概述 要点:本章通过简要介绍编译器的各个逻辑阶段,对全书的内容进行简要概述。本章出现的大部分概念在以后各章会详细介绍,因此不要求在学习本章时就都能理解这些概念。主要掌握以下两点: 1、基本概念:源语言、目标语言、翻译器、编译器、解释器。 2、编译器的各个逻辑阶段及各阶段的主要功能。 第一章 编译概述 翻译器 翻译器(翻译程序):把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的软件。 翻译程序根据所处理的对象和实现的途径不同又分为:汇编程序、编译程序和解释程序。 汇编程序:如果源语言是某种汇编语言,而目标语言是某种计算机的机器语言,这样的一个翻译程序就称为汇编程序。 编译器与解释器 编译器(编译程序):如果源语言是某种高级语言,而目标语言是某种低级语言(汇编语言或机器语言),这样的一个翻译程序就称为编译程序。 解释器(解释程序):这是另外一种类型的翻译程序,在翻译过程中它按照高级语言源程序在计算机上执行的动态顺序对源程序的语句逐条翻译(解释),边解释边执行直至结束,它不产生目标程序,它的工作结果就是源程序的执行结果,这样的一个翻译程序就称为解释程序。 编译器与解释器 例5 假设有源程序:read(x); write(x=, x); 编译器与解释器 特点: 1.编译器:工作效率高,即时间快、空间省;交互性与动态特性差、可移植性差。大多数PL采用此种方法翻译; 2.解释器:工作效率低,即时间慢、空间费;交互性与动态特性好、可移植性好。早期的Basic和现在的Java等。 基本功能:二者相同; 所采用的技术:从翻译的角度来讲,两种方式所涉及的原理、方法、技术相似。 编译器 根据不同的用途和侧重,编译程序还可进一步分类。专门用于帮助程序开发和调试的编译程序称为诊断编译程序(Diagnostic Compiler);着重于提高目标代码效率的编译程序叫优化编译程序(Optimizing Compiler)。 现在很多编译程序同时提供了调试、优化等多种功能,用户可以通过“开关”进行选择。运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机。如果一个编译程序产生不同于其宿主机的机器代码,则称它为交叉编译程序(Cross Compiler)。如果不需重写编译程序中与机器无关的部分就能改变目标机,则称该编译程序为可变目标编译程序(Retargetable Compiler)。 编译的阶段 编译器从逻辑上可以分成若干阶段,每个阶段把源程序从一种表示变换成另一种表示。 编译的阶段 把英文翻译为中文 识别出句子中的一个个单词; 分析句子的语法结构; 根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文。 词法分析 任务: 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。 依循的原则:构词规则 描述工具:正规式和有限自动机 对识别出的单词符号用内部形式(内部码)表示。 对不符合词法规则的非法字符串作相应的词法出错处理 。 词法分析 语法分析 任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。如程序、语句、表达式等。 依循的原则:语法规则 描述工具:上下文无关文法 通过语法分析确定整个输入串是否构成一个语法上正确的程序,对不符合语法规则的单词序列作相应的语法出错处理。 词法分析是一种线性分析,而语法分析是一种层次结构分析。 语法分析 表达式的语法特征: 任何一个标识符都是表达式 任何一个数都是表达式 如果e1和e2都是表达式,那么 e1 + e2 e1 * e2 (e1) 也都是表达式 语法分析 语义分析 任务:审查源程序有无语义错误,为代码生成收集类型信息(类型检查)。 依循的原则:语义规则 语义分析的一个重要部分是类型检查,编译器检查每个算符的运算对象,看它们的类型是否适当。如:实数作为数组下标,报错;整数和实数进行运算时,将整数转变为实数。 语义分析 中间代码生成 任务:在语义分析的同时将源程序变换成一种内部表示形式(中间代码)。 “翻译”仅仅在这里才开始涉及到。 中间代码:一种结构简单、含义明确的记号系统。原则: 容易生成; 容易将它翻译成目标代码。 中间代码:三元式,四元式,树形结构等。 四元式:(运算符,运算对象1,运算对象2,结果) 中间代码生成 中间代码生成 上面的例子表示成四元式: ( inttoreal 60 - t1 ) ( * id3 t1 t2 ) ( + id2 t2 t3 ) ( := t3 - id1) 代码优化 任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。 依循的原则:程序的等价变换规则 优化

文档评论(0)

秦圈圈 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档