- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(第1章编译程序概论
编 译 原 理 任课:吴江红 邮箱:wjh_agl@163.com 课程要求 教材:编译原理 胡伦骏 电子工业 课程安排:1-14周 理论课:44学时 实验课:10学时 课程简介 翻译系统(编译系统)、操作系统、数据库管理系统是计算机的三大系统软件。 《编译原理》是计算机学科的一门核心课。本课程介绍将高级语言源程序翻译成低级语言目标程序的基本原理、方法和技术。通过本课程的学习对设计大型复杂程序,学习人工智能、机器翻译等有较大的帮助。 第一章 编译程序概论 编译程序是计算机系统中重要的系统软件,是高级语言的支撑基础。 学习目标: 编译的各个阶段 编译程序的概念 编译程序的结构和生成方法 第一章 编译程序概论 1.1 什么是编译程序 1.2 编译过程和编译程序的基本结构 1.3 编译阶段的组合 1.4 编译技术和软件工具 1.1 什么是编译程序 一、翻译程序 人与机器间的信息交流 1.1 什么是编译程序 程序设计语言的发展: 机器语言?汇编语言?程序设计语言 例计算表达式3*16+2的值,实现该计算的机器语言程序、汇编语言程序和高级语言(C语言)程序 1.1 什么是编译程序 二、编译程序(compiler) 将用高级语言(如FORTRAN,PASCAL或C)书写的程序翻译成等价的低级语言程序(如汇编语言或机器语言),这种翻译程序称为编译程序(compiler)。如图1.2所示: 1.1 什么是编译程序 一个高级语言程序的执行通常分为两个阶段,即编译阶段和运行阶段,如图1.3所示: 1.1 什么是编译程序 如果编译生成的目标程序是汇编语言形式,那么在编译与运行阶段之间还要添加一个汇编阶段,它将编译生成的汇编语言目标程序再经过汇编程序变换成机器语言目标程序,如图1.4所示: 1.1 什么是编译程序 1.1 什么是编译程序 三、解释程序 用高级语言编写的程序也可通过解释程序来执行。解释程序也是一种翻译程序。 以源程序作为输入,输入一句,解释执行一句,不产生完整的目标程序,相应的翻译程序称为解释程序。如下图所示: 1.1 什么是编译程序 1.1 什么是编译程序 解释程序(interpreter)与编译程序 共同点:都是语言的一个实现系统 不同点: 编译程序是将源程序翻译成目标程序后再执行该目标程序 解释程序则是逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序。 1.1 什么是编译程序 编译程序(compiler)的发展 1.2 编译过程和编译程序的基本结构 编译程序也是一种翻译程序 高级语言的源程序———机器汇编语言的目标程序 编译过程类似于外文的翻译过程 例:I wish you success (1) 词法分析 识别英文单词 (2) 语法分析 单词串(短语)的分析识别、语法验证 (3) 语义分析 分析含义,汉语表示 (4) 优化 润色修饰 (5) 目标生成 最后翻译成中文 1.2 编译过程和编译程序的基本结构 1.2 编译过程和编译程序的基本结构 例:计算圆柱体表面积 float r,h,s; S=2*3.1416*r*(h+r); 1、词法分析(lexical analysis or scanning) 任务:对源程序从左到右对构成源程序的字符流进行扫描和分解,从而识别出一个个单词Token。 单词:标识符,基本字,界符,运算符,常数 2、语法分析(syntax analysis or parsing) 任务:对词法分析识别出的单词序列进一步识别,识别出各类语法单位: “表达式”、“语句”、“说明”等 3、语义分析(semantic analysis)及中间代码生成(intermediate code generation) 任务:对每种语法单位进行静态的语义审查,分析含义,并用中间代码描述(更接近目标代码)。 如下的四元式中间代码: 4、代码优化(code optimization) 任务:对中间代码进行等价变换,以便生成更高效的目标代码 5、目标代码生成(code generation) 任务:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码,它的工作与硬件系统和指令含义有关。 6、表格管理和出错处理 出错处理:编译过程中,发现源程序有错误(词法错误、语法错误、语义错误),编译程序应报告错误的性质和出错的地点,并将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分继续被编译下去。这些工作称为出错处理(error handling)。 图 编译程序的结构(compo
文档评论(0)