编译原理全册配套完整课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理全册配套完整课件.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 配套 完整 课件
- 资源描述:
-
1、编译原理全册配套完整课件编译原理全册配套完整课件第第2章章 高级语言及其语法描述高级语言及其语法描述 第第1章章 编译程序概论编译程序概论第第3章章 词法分析词法分析第第4章章 自上而下语法自上而下语法分析分析第第5章章 自下而上语法分析自下而上语法分析第第6章章 语义分析语义分析第第7章章 符号表符号表第第8章章 存储空间组织存储空间组织第第9章章 优化优化 程程 序序 设设 计计 语语 言言 编编 译译 原原 理理软件学院软件学院易萍雯易萍雯P P教 材程序设计语言编译原理程序设计语言编译原理第三版第三版陈火旺、刘春林等,陈火旺、刘春林等,国防工业出版社,国防工业出版社,2000 主要参考
2、资料主要参考资料 编译原理及实践编译原理及实践 Kenneth C. Louden,冯博琴译 机械工业出版社 编译原理习题与解析编译原理习题与解析 伍春香 清华大学出版社学时情况学时情况 总学时总学时 : 64 64 学时学时 学学 分分 : 3.53.5 讲讲 课课 : 48 48 学时学时 上上 机机 : 16 16 学时学时考考 核核平时作业:平时作业: 10%10%上上 机:机: 10%10%期末考试:期末考试: 80%80%后续课程后续课程编译原理课程设计专题实验编译原理课程设计专题实验 3232学时,学时,1.51.5学分学分 第第1章章 编译程序概论编译程序概论1.1 什么是编译
3、程序什么是编译程序1.2 编译过程概述编译过程概述1.3 编译程序的结构编译程序的结构1.4 编译程序的生成编译程序的生成1.5 课程特征课程特征1.1 1.1 什么是编译程序什么是编译程序1.1.1 什么是什么是程序设计语言程序设计语言计算机的工作体现为执行程序。计算机的工作体现为执行程序。程序程序:控制计算机完成特定功能的一组:控制计算机完成特定功能的一组 有序命令。有序命令。对于机器语言来说,命令被称为对于机器语言来说,命令被称为指令指令;对于高级语言而言,命令被称为对于高级语言而言,命令被称为语句语句。 程序设计语言程序设计语言(Programming Language)通常泛指一切用
4、于编写计算机程序的语言。通常泛指一切用于编写计算机程序的语言。它是人与计算机之间进行信息交流的工具。它是人与计算机之间进行信息交流的工具。包括包括机器语言:采用二进制来表示机器语言:采用二进制来表示 (低级语言)(低级语言)汇编语言:采用机器语言的助记符来表示汇编语言:采用机器语言的助记符来表示 (低级语言低级语言)高级语言:采用完全符号形式化的方式来表示,高级语言:采用完全符号形式化的方式来表示, 它独立于具体的计算机硬件。它独立于具体的计算机硬件。例:不同语言实现加法运算例:不同语言实现加法运算机器语言机器语言汇编语言汇编语言C语言语言00000010 11001111ADD AX,BXc
5、=a+b;程序设计语言特性程序设计语言特性语言语言优点优点缺点缺点机器语言机器语言 处理简单处理简单 执行效率最高执行效率最高 程序不便于识别程序不便于识别 难以调试。难以调试。汇编语言汇编语言 较易于理解较易于理解 执行效率高执行效率高 与机器相关与机器相关 可移植性差可移植性差 较难调试较难调试高级语言高级语言 易于理解易于理解 易于调试易于调试 独立于具体的独立于具体的 计算机硬件计算机硬件 需要配套的编译程序需要配套的编译程序 ( (解释程序解释程序) ) 执行效率相对低执行效率相对低程序语言需要的支持环境程序语言需要的支持环境计算机程序设计语言计算机程序设计语言低级语言低级语言高级高
6、级语言语言机器机器语言语言 汇编汇编语言语言计算机计算机翻译翻译程序程序 汇编程序汇编程序 编译程序编译程序解释程序解释程序 1.1.2 高级高级FORTRAN (FORmula TRANslation) 第一个被正式推广使用的计算机高级语言;第一个被正式推广使用的计算机高级语言; 适合数值计算,如提供了对矩阵数组的直接计算;适合数值计算,如提供了对矩阵数组的直接计算; 最早一批高级语言中,目前仍在使用的少数之一。最早一批高级语言中,目前仍在使用的少数之一。DO 7, LOOP =1 , 5 READ * , X , Y AVG = (X + Y ) / 2.0 PRINT * , X , Y
7、, AVG7 CONTINUE END标识符隐式定义标识符隐式定义对数学计算支持多对数学计算支持多( (复数复数) )存储管理手段多存储管理手段多( (公共公共, ,等价等价) )数据类型偏少,无字符串数据类型偏少,无字符串 等类型(早期)等类型(早期)负面评价比较多负面评价比较多LISP (LISt Processor) 基于基于演算的函数式编程语言;演算的函数式编程语言; 已经成为人工智能(已经成为人工智能(AIAI)的首选程序语言。)的首选程序语言。 用作某些系统的内嵌语言,如用作某些系统的内嵌语言,如AUTOCADAUTOCAD中的中的AUTOLISPAUTOLISP。 最早一批高级语
8、言中,目前仍在使用的少数之一。最早一批高级语言中,目前仍在使用的少数之一。 Defun length(x) (cond (null x ) 0) (t (+1 (length (cdr x) length (I love computer) 基本语法很简单,基本语法很简单, 但富于变化但富于变化 代码和数据使用相代码和数据使用相 同的结构来表示同的结构来表示 评价基本比较正面评价基本比较正面 x x是一个表是一个表(cdr x) (cdr x) 返回返回x x中除第一个元素之外所中除第一个元素之外所有元素组成的表有元素组成的表结果:结果:3 3PASCAL 发源于欧洲;发源于欧洲; 严格的结构
9、化形式;严格的结构化形式; 丰富完备的数据类型;丰富完备的数据类型; 便于描述各种算法与便于描述各种算法与数据结构;数据结构; 有益于培养初学者良有益于培养初学者良好的程序设计风格和好的程序设计风格和习惯。习惯。 Function gcd(m,n:integer):integer; var remainder:integer; begin while n0 do begin remainder:=m mod n; m:=n; n:= remainder; end; gcd:=n end;C 为了为了UNIXUNIX操作系统所设计操作系统所设计 具有高阶的结构化叙述,也具备了类似低级语言具有高阶
10、的结构化叙述,也具备了类似低级语言控制硬件的能力控制硬件的能力 为目前最常被使用的高级语言为目前最常被使用的高级语言 Void swap(int *x, int *y) int temp; temp=*x ; *x = *y ; *y = temp; C+ 继承了继承了C C语言的全部内容语言的全部内容 增加了面向对象编程的增加了面向对象编程的内容,引入类、对象和内容,引入类、对象和方法的机制方法的机制 通过派生、继承、重载通过派生、继承、重载和多态性等特征,实现和多态性等特征,实现软件复用。软件复用。# include class MyClasspublic: MyClass(int a)x
11、=a; int GetNum () return x; private: int x;int main()MyClass my(10); coutmy.GetNum() 1 and a.AccountNum 0 and a.AccountNum = c.AccountNum and a.ChargeID = b.ChargeID order by a.AccountNum, a.ChargeID, b.ItemID; 美国美国SunSun公司于公司于19951995年年发表发表 具备有面向对象的特性具备有面向对象的特性 提供了跨平台的功能提供了跨平台的功能import java.awt.*;i
12、mport java.applet.Applet;public class PointApplet extends Applet public Point p1, p2; public void init() p1 = new Point(); p2 = new Point(Color.blue); public void paint ( Graphics g ) p1.plotPoint(g, 30, 15); p2.plotPoint(g, 100, 15); 源源语语言言程程序序编译程序编译程序词法分析词法分析语法分析语法分析语义分析语义分析优化优化目标代码生成目标代码生成输入输入计计算
13、算结结果果运行运行系统系统目目标标语语言言程程序序源语言程序源语言程序(高级语言程序高级语言程序)解释程序解释程序词法分析词法分析语法分析语法分析语句执行语句执行计计算算结结果果输入输入JAVA源程序源程序编译程序编译程序JAVAC.EXEJAVAC.EXE输入输入计计算算结结果果解释程序解释程序JVMJVM字节码字节码程序程序Java Java 程序执行程序执行JVM JavaJVM Java虚拟机虚拟机 为不同的硬件平台提供了一种编译为不同的硬件平台提供了一种编译JavaJava代码的方代码的方法,使法,使JavaJava软件独立于平台;软件独立于平台; JavaJava解释器、解释器、W
14、ebWeb浏览器均内置浏览器均内置JVMJVM;1.1.5 编译编译不同公司的产品不同公司的产品 对语言的外延对语言的外延( (系统函数,数据类型等系统函数,数据类型等) )定义不同。定义不同。 例如:对例如:对C+C+,目前使用比较广泛的有:,目前使用比较广泛的有: 免免费费/ / 部分部分免费免费Apple C+ Bloodshed Dev-C+ 基于GCC的(Mingw)IDE环境Borland C+Cygwin (GNU C+) MINGW - Minimalist GNU for WindowsWindows版本的另一个GCC编译器,包含了免费的w32api(非GPL许可)GNU C
15、C sourceIntel C+ for linuxBorland C+Compaq C+Digital Mars C+Edison Design Group C+ Front End 被许多C+编译器厂商采用Green Hills C+ 支持嵌入式系统平台HP C+IBM C+Intel C+ 支持Windows, Linux, 嵌入式系统Interstron C+Metrowerks C+ 支持多平台Microsoft C+Paradigm C+ 支持x86嵌入式系统The Portland Group C+ 针对奔腾CPU优化SGI C+ 优化的编译器 收收费费多种版本,特性不同多种版本
16、,特性不同 注重程序开发注重程序开发 带集成调试环境的带集成调试环境的 (即:可以编辑,编译,执行,调试)(即:可以编辑,编译,执行,调试) 注重程序调试注重程序调试 诊断编译程序诊断编译程序 注重提高目标代码效率注重提高目标代码效率 优化编译程序优化编译程序 注重运行环境注重运行环境 注重使用方便性注重使用方便性提供者提供者标准化标准化( (与与C+C+标标准的兼容性准的兼容性) )优点优点不足不足Borland Borland C+C+Borland Borland C+ Builder5.5版 92.73%速度快,空间效率高某些版本不稳定Borland C+Builder X6.0 10
17、0%符合ANSI/ISO的C+以及C99标准。Visual Visual C+C+MSVisual Studio6.0版 83.43%开发环境强大标准化低7.1版 98.22%GNU C+GNU C+开源Mingw、Cygwin、 Djgpp 等GCC3.3 96.15% 移植性好跨平台嵌入式代码规模、速度略差Intel Intel C+C+Intel 对:Intel x86结构的CPU经过特别优化, 数值计算等应用能大幅度提高性能。特定机型其他评价指标:其他评价指标:开发环境,库,帮助,调试工具等开发环境,库,帮助,调试工具等 C+ C+ 主要编译器特性主要编译器特性1.2 编译编译分析阶段
18、分析阶段主要工作主要工作 词法分析词法分析 扫描源程序扫描源程序 识别出输入流中的每一个单词;一般用二识别出输入流中的每一个单词;一般用二 元组(单词类别,属性值)来表示。元组(单词类别,属性值)来表示。 不合乎不合乎词法规则词法规则的输入流,报:词法错误的输入流,报:词法错误语法分析语法分析 分析出句子的语法结构。一般用树分析出句子的语法结构。一般用树 (语法树)来表示。(语法树)来表示。 不合乎不合乎语法规则语法规则的输入流,报:语法错误的输入流,报:语法错误分析阶段分析阶段主要工作主要工作 语义分析语义分析根据句子的语法含义,生成中间根据句子的语法含义,生成中间语言的代码序列语言的代码序
19、列 优化优化 对中间代码加工,以产生高效的对中间代码加工,以产生高效的中间代码中间代码( (时间,空间时间,空间) )目标代码生成目标代码生成 将中间代码转换成(特定机器的)将中间代码转换成(特定机器的)目标代码目标代码 其中:代码优化不是必须的。其中:代码优化不是必须的。1.2.1 词法分析工作词法分析工作识别的标准:词法规则。识别的标准:词法规则。 保留字保留字构成形式:字母打头的字母数字串,如:构成形式:字母打头的字母数字串,如:if if 运算符运算符构成形式:构成形式:* *)单一符号构成,)单一符号构成,如:如:+ + , ,* * * *)连续的两个符号构成,)连续的两个符号构成
20、,如:如: :=:= 扫描源程序扫描源程序 识别出输入流中的每一个单词;一般用二元组识别出输入流中的每一个单词;一般用二元组 (单词类别,属性值)来表示。(单词类别,属性值)来表示。 不合乎不合乎词法规则词法规则的输入流,报:词法错误的输入流,报:词法错误例:例: if M+3N then z:=x+10if M+3N then z:=x+10* *y else z:=xy else z:=x* *20201. 1. 保留字保留字 ifif2. 2. 标识符标识符 M M3. 3. 加号加号 + +4. 4. 整数整数 3 35. 5. 大于号大于号 6. 6. 标识符标识符 N N7. 7.
21、 保留字保留字 thenthen8. 8. 标识符标识符 z z9. 9. 赋值号赋值号 :=:=10. 10. 标识符标识符 x x11. 11. 加号加号 + +12.12. 整数整数 101013.13. 乘号乘号 * *14.14. 标识符标识符 y y15.15. 保留字保留字 elseelse16.16. 标识符标识符 z z17.17. 赋值号赋值号 :=:=18.18. 标识符标识符 x x19.19. 乘号乘号 * *20.20. 整数整数 2020词法分析结果集合词法分析结果集合1.2.2 语法分析工作语法分析工作 分析出句子的语法结构。一般用语法树表示;分析出句子的语法结
22、构。一般用语法树表示; 不合乎不合乎语法规则语法规则的输入流,报:语法错误。的输入流,报:语法错误。识别的标准:语言的文法规则。识别的标准:语言的文法规则。例:文法例:文法GSGS: S A:=E |S A:=E | if E then Sif E then S1 1 else S else S2 2 语句语句 E E+E | E-E | EE E+E | E-E | E* *E | E/E | E op E |i E | E/E | E op E |i 表达式表达式 op = | |=|= op = | |=| N if M+3 N then z:=x+10 then z:=x+10* *y
23、 y else z:=x else z:=x* *2020 GSGS: S A:=ES A:=E | if E then Sif E then S1 1 else S else S2 2 E E+E | E-E | E E E+E | E-E | E* *E | E/EE | E/E | E op E |i | E op E |i op = | |=|= op = | |=| N then z:=x+10if M+3 N then z:=x+10* *y else z:=xy else z:=x* *2020 100 (+ , M , 3, T1)101 (j , T1, N, 103)102
24、 (j , _ , _ , 107)103 (* , 10, y, T2) 104 (+ , x, T2, T3)105 (:= , T3, _ , z)106 (j , _ , _ , 109)107 (* , x, 20, T4)108 (:= , T4, _ , z)109 .1.2.4 优化工作优化工作对中间代码加工,以产生高效的中间代码对中间代码加工,以产生高效的中间代码( (时间,空间时间,空间) )优化的依据优化的依据 等价变换规则等价变换规则T1:=2*3.14T2:=T1*rl:=T22 2* *3.143.14的值在编译时就可以确定的值在编译时就可以确定T2:=6.28*r
25、l:=T2例:例:l =2*3.14*r1.2.5 目标代码生成目标代码生成 任务:任务:把中间代码变换成特定机器上的绝对把中间代码变换成特定机器上的绝对指令代码、或可重定位的指令代码、指令代码、或可重定位的指令代码、或汇编指令代码。或汇编指令代码。 特点特点:与硬件系统结构和指令含义有关,涉及与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间的选择、各种数据类型变量的存储空间分配、寄存器和后缓寄存器的调度等。分配、寄存器和后缓寄存器的调度等。解释程序的工作解释程序的工作例:例:if M+3 N if M+3
展开阅读全文