自动化系编译原理配套全册教学课件.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 教 材 程序设计语言编译原理程序设计语言编译原理第三版第三版 陈火旺、刘春林等,陈火旺、刘春林等, 国
2、防工业出版社,国防工业出版社,2000 主要参考资料主要参考资料 编译原理及实践编译原理及实践 Kenneth C. Louden,冯博琴 译 机械工业出版社 编译原理习题与解析编译原理习题与解析 伍春香 清华大学出版社 学时情况学时情况 总学时总学时 : 64 64 学时学时 学学 分分 : 3.53.5 讲讲 课课 : 48 48 学时学时 上上 机机 : 16 16 学时学时 考考 核核 平时作业:平时作业: 10%10% 上上 机:机: 10%10% 期末考试:期末考试: 80%80% 后续课程后续课程 编译原理课程设计专题实验编译原理课程设计专题实验 3232学时,学时,1.51.5
3、学分学分 第第1章章 编译程序概论编译程序概论 1.1 什么是编译程序什么是编译程序 1.2 编译过程概述编译过程概述 1.3 编译程序的结构编译程序的结构 1.4 编译程序的生成编译程序的生成 1.5 课程特征课程特征 1.1 1.1 什么是编译程序什么是编译程序 1.1.1 什么是什么是程序设计语言程序设计语言 计算机的工作体现为执行程序。计算机的工作体现为执行程序。 程序程序:控制计算机完成特定功能的一组:控制计算机完成特定功能的一组 有序命令。有序命令。 对于机器语言来说,命令被称为对于机器语言来说,命令被称为指令指令; 对于高级语言而言,命令被称为对于高级语言而言,命令被称为语句语句
4、。 程序设计语言程序设计语言(Programming Language) 通常泛指一切用于编写计算机程序的语言。通常泛指一切用于编写计算机程序的语言。 它是人与计算机之间进行信息交流的工具。它是人与计算机之间进行信息交流的工具。 包括包括 机器语言:采用二进制来表示机器语言:采用二进制来表示 (低级语言)(低级语言) 汇编语言:采用机器语言的助记符来表示汇编语言:采用机器语言的助记符来表示 (低级语言低级语言) 高级语言:采用完全符号形式化的方式来表示,高级语言:采用完全符号形式化的方式来表示, 它独立于具体的计算机硬件。它独立于具体的计算机硬件。 例:不同语言实现加法运算例:不同语言实现加法
5、运算 机器语言机器语言汇编语言汇编语言C语言语言 00000010 11001111ADD AX,BXc=a+b; 程序设计语言特性程序设计语言特性 语言语言优点优点缺点缺点 机器语言机器语言 处理简单处理简单 执行效率最高执行效率最高 程序不便于识别程序不便于识别 难以调试。难以调试。 汇编语言汇编语言 较易于理解较易于理解 执行效率高执行效率高 与机器相关与机器相关 可移植性差可移植性差 较难调试较难调试 高级语言高级语言 易于理解易于理解 易于调试易于调试 独立于具体的独立于具体的 计算机硬件计算机硬件 需要配套的编译程序需要配套的编译程序 ( (解释程序解释程序) ) 执行效率相对低执
6、行效率相对低 程序语言需要的支持环境程序语言需要的支持环境 计算机程序设计语言计算机程序设计语言 低级语言低级语言 高级高级 语言语言 机器机器 语言语言 汇编汇编 语言语言 计算机计算机 翻译翻译 程序程序 汇编程序汇编程序 编译程序编译程序 解释程序解释程序 1.1.2 高级高级 FORTRAN (FORmula TRANslation) 第一个被正式推广使用的计算机高级语言;第一个被正式推广使用的计算机高级语言; 适合数值计算,如提供了对矩阵数组的直接计算;适合数值计算,如提供了对矩阵数组的直接计算; 最早一批高级语言中,目前仍在使用的少数之一。最早一批高级语言中,目前仍在使用的少数之一
7、。 DO 7, LOOP =1 , 5 READ * , X , Y AVG = (X + Y ) / 2.0 PRINT * , X , Y, AVG 7 CONTINUE END 标识符隐式定义标识符隐式定义 对数学计算支持多对数学计算支持多( (复数复数) ) 存储管理手段多存储管理手段多( (公共公共, ,等价等价) ) 数据类型偏少,无字符串数据类型偏少,无字符串 等类型(早期)等类型(早期) 负面评价比较多负面评价比较多 LISP (LISt Processor) 基于基于演算的函数式编程语言;演算的函数式编程语言; 已经成为人工智能(已经成为人工智能(AIAI)的首选程序语言。)
8、的首选程序语言。 用作某些系统的内嵌语言,如用作某些系统的内嵌语言,如AUTOCADAUTOCAD中的中的AUTOLISPAUTOLISP。 最早一批高级语言中,目前仍在使用的少数之一。最早一批高级语言中,目前仍在使用的少数之一。 Defun length(x) (cond (null x ) 0) (t (+1 (length (cdr x) length (I love computer) 基本语法很简单,基本语法很简单, 但富于变化但富于变化 代码和数据使用相代码和数据使用相 同的结构来表示同的结构来表示 评价基本比较正面评价基本比较正面 x x是一个表是一个表 (cdr x) (cdr
9、 x) 返回返回x x中除第一个元素之外所中除第一个元素之外所 有元素组成的表有元素组成的表 结果:结果:3 3 PASCAL 发源于欧洲;发源于欧洲; 严格的结构化形式;严格的结构化形式; 丰富完备的数据类型;丰富完备的数据类型; 便于描述各种算法与便于描述各种算法与 数据结构;数据结构; 有益于培养初学者良有益于培养初学者良 好的程序设计风格和好的程序设计风格和 习惯。习惯。 Function gcd(m,n:integer):integer; var remainder:integer; begin while n0 do begin remainder:=m mod n; m:=n;
10、n:= remainder; end; gcd:=n end; C 为了为了UNIXUNIX操作系统所设计操作系统所设计 具有高阶的结构化叙述,也具备了类似低级语言具有高阶的结构化叙述,也具备了类似低级语言 控制硬件的能力控制硬件的能力 为目前最常被使用的高级语言为目前最常被使用的高级语言 Void swap(int *x, int *y) int temp; temp=*x ; *x = *y ; *y = temp; C+ 继承了继承了C C语言的全部内容语言的全部内容 增加了面向对象编程的增加了面向对象编程的 内容,引入类、对象和内容,引入类、对象和 方法的机制方法的机制 通过派生、继承
11、、重载通过派生、继承、重载 和多态性等特征,实现和多态性等特征,实现 软件复用。软件复用。 # include class MyClass public: MyClass(int a)x=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.
12、ItemID; 美国美国SunSun公司于公司于19951995年年 发表发表 具备有面向对象的特性具备有面向对象的特性 提供了跨平台的功能提供了跨平台的功能 import java.awt.*; import 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,
13、 30, 15); p2.plotPoint(g, 100, 15); 源源 语语 言言 程程 序序 编译程序编译程序 词法分析词法分析 语法分析语法分析 语义分析语义分析 优化优化 目标代码生成目标代码生成 输入输入 计计 算算 结结 果果 运行运行 系统系统 目目 标标 语语 言言 程程 序序 源语言程序源语言程序 (高级语言程序高级语言程序) 解释程序解释程序 词法分析词法分析 语法分析语法分析 语句执行语句执行 计计 算算 结结 果果 输入输入 JAVA 源程序源程序 编译程序编译程序 JAVAC.EXEJAVAC.EXE 输入输入 计计 算算 结结 果果 解释程序解释程序 JVMJV
14、M 字节码字节码 程序程序 Java Java 程序执行程序执行 JVM JavaJVM Java虚拟机虚拟机 为不同的硬件平台提供了一种编译为不同的硬件平台提供了一种编译JavaJava代码的方代码的方 法,使法,使JavaJava软件独立于平台;软件独立于平台; JavaJava解释器、解释器、WebWeb浏览器均内置浏览器均内置JVMJVM; 1.1.5 编译编译 不同公司的产品不同公司的产品 对语言的外延对语言的外延( (系统函数,数据类型等系统函数,数据类型等) )定义不同。定义不同。 例如:对例如:对C+C+,目前使用比较广泛的有:,目前使用比较广泛的有: 免免 费费 / / 部分
15、部分 免费免费 Apple C+ Bloodshed Dev-C+ 基于GCC的(Mingw)IDE环境 Borland C+ Cygwin (GNU C+) MINGW - Minimalist GNU for Windows Windows版本的另一个GCC编译 器,包含了免费的w32api(非 GPL许可) GNU CC source Intel C+ for linux Borland C+ Compaq C+ Digital Mars C+ Edison Design Group C+ Front End 被许多C+编译器厂商采用 Green Hills C+ 支持嵌入式系统平台 H
16、P C+ IBM C+ Intel C+ 支持Windows, Linux, 嵌入式系统 Interstron C+ Metrowerks C+ 支持多平台 Microsoft C+ Paradigm C+ 支持x86嵌入式系统 The Portland Group C+ 针对奔腾CPU优化 SGI C+ 优化的编译器 收收 费费 多种版本,特性不同多种版本,特性不同 注重程序开发注重程序开发 带集成调试环境的带集成调试环境的 (即:可以编辑,编译,执行,调试)(即:可以编辑,编译,执行,调试) 注重程序调试注重程序调试 诊断编译程序诊断编译程序 注重提高目标代码效率注重提高目标代码效率 优化
17、编译程序优化编译程序 注重运行环境注重运行环境 注重使用方便性注重使用方便性 提供者提供者 标准化标准化( (与与C+C+标标 准的兼容性准的兼容性) ) 优点优点不足不足 Borland Borland C+C+ Borland Borland C+ Builder 5.5版 92.73% 速度快, 空间效率 高 某些版本 不稳定 Borland C+ Builder X 6.0 100%符合 ANSI/ISO的C+ 以及C99标准。 Visual Visual C+C+ MSVisual Studio 6.0版 83.43% 开发环境 强大 标准化低 7.1版 98.22% GNU C+G
18、NU C+开源Mingw、 Cygwin、 Djgpp 等 GCC3.3 96.15% 移植性好 跨平台 嵌入式 代码规模、 速度略差 Intel Intel C+C+ Intel 对:Intel x86结构的CPU经过特别优化, 数值计算等应用能大幅度提高性能。 特定机型 其他评价指标:其他评价指标:开发环境,库,帮助,调试工具等开发环境,库,帮助,调试工具等 C+ C+ 主要编译器特性主要编译器特性 1.2 编译编译 分析阶段分析阶段 主要工作主要工作 词法分析词法分析 扫描源程序扫描源程序 识别出输入流中的每一个单词;一般用二识别出输入流中的每一个单词;一般用二 元组(单词类别,属性值)
19、来表示。元组(单词类别,属性值)来表示。 不合乎不合乎词法规则词法规则的输入流,报:词法错误的输入流,报:词法错误 语法分析语法分析 分析出句子的语法结构。一般用树分析出句子的语法结构。一般用树 (语法树)来表示。(语法树)来表示。 不合乎不合乎语法规则语法规则的输入流,报:语法错误的输入流,报:语法错误 分析阶段分析阶段主要工作主要工作 语义分析语义分析 根据句子的语法含义,生成中间根据句子的语法含义,生成中间 语言的代码序列语言的代码序列 优化优化 对中间代码加工,以产生高效的对中间代码加工,以产生高效的 中间代码中间代码( (时间,空间时间,空间) ) 目标代码生成目标代码生成 将中间代
20、码转换成(特定机器的)将中间代码转换成(特定机器的) 目标代码目标代码 其中:代码优化不是必须的。其中:代码优化不是必须的。 1.2.1 词法分析工作词法分析工作 识别的标准:词法规则。识别的标准:词法规则。 保留字保留字构成形式:字母打头的字母数字串,如:构成形式:字母打头的字母数字串,如:if if 运算符运算符构成形式:构成形式:* *)单一符号构成,)单一符号构成,如:如:+ + , ,* * * *)连续的两个符号构成,)连续的两个符号构成,如:如: :=:= 扫描源程序扫描源程序 识别出输入流中的每一个单词;一般用二元组识别出输入流中的每一个单词;一般用二元组 (单词类别,属性值)
21、来表示。(单词类别,属性值)来表示。 不合乎不合乎词法规则词法规则的输入流,报:词法错误的输入流,报:词法错误 例:例: if M+3N then z:=x+10if M+3N then z:=x+10* *y else z:=xy else z:=x* *2020 1. 1. 保留字保留字 ifif 2. 2. 标识符标识符 M M 3. 3. 加号加号 + + 4. 4. 整数整数 3 3 5. 5. 大于号大于号 6. 6. 标识符标识符 N N 7. 7. 保留字保留字 thenthen 8. 8. 标识符标识符 z z 9. 9. 赋值号赋值号 :=:= 10. 10. 标识符标识符
22、 x x 11. 11. 加号加号 + + 12.12. 整数整数 1010 13.13. 乘号乘号 * * 14.14. 标识符标识符 y y 15.15. 保留字保留字 elseelse 16.16. 标识符标识符 z z 17.17. 赋值号赋值号 :=:= 18.18. 标识符标识符 x x 19.19. 乘号乘号 * * 20.20. 整数整数 2020 词法分析结果集合词法分析结果集合 1.2.2 语法分析工作语法分析工作 分析出句子的语法结构。一般用语法树表示;分析出句子的语法结构。一般用语法树表示; 不合乎不合乎语法规则语法规则的输入流,报:语法错误。的输入流,报:语法错误。
23、识别的标准:语言的文法规则。识别的标准:语言的文法规则。 例:文法例:文法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 y else z:=x else z:=x* *2020 GSGS: S A:=ES A:=E
24、 | 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 (j , _ , _ , 107) 103 (* , 10, y, T2) 104 (+
25、, x, T2, T3) 105 (:= , T3, _ , z) 106 (j , _ , _ , 109) 107 (* , x, 20, T4) 108 (:= , T4, _ , z) 109 . 1.2.4 优化工作优化工作 对中间代码加工,以产生高效的中间代码对中间代码加工,以产生高效的中间代码 ( (时间,空间时间,空间) ) 优化的依据优化的依据 等价变换规则等价变换规则 T1:=2*3.14 T2:=T1*r l:=T2 2 2* *3.143.14的值在编译时就可以确定的值在编译时就可以确定 T2:=6.28*r l:=T2 例:例:l =2*3.14*r 1.2.5 目标
展开阅读全文