编译原理 ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 解释程序(Interpreter)
把源程序作为输入接收,边解释边执行的翻译程序
源程序 数据
CompilerPrinciples
解释 程序
结果
18
3. 编译程序
将高级语言程序转变为低级语言程序的翻译程序
源程序
编译 程序
目标 程序
19 CompilerPrinciples
20 CompilerPrinciples
1 CompilerPrinciples
百度文库
第一讲 引论
课程信息 编译程序概述 高级语言的语法描述
§1.课程信息
一、课程名称:编译原理 ❖ 基本内容是介绍编译程序构造的基本原理、
方法和技术,包括词法分析、语法分析、 语义分析与中间代码产生、代码优化及目 标代码产生等。简言之,就是介绍如何将 源程序翻译成目标代码程序。
3 CompilerPrinciples
二、课程性质:专业基础课,必修 ❖ 编译程序(器)出现于上世纪50年代后期
(第一个高级语言1958年) ❖ 60年代~70年代是研究高峰期 ❖ 60年代中期开始在高校中开设课程 ❖ 80年代开始作为计算机科学与技术专业的
必修基础课程
4 CompilerPrinciples
❖ 编译程序又可根据用途和侧重点的不同, 进一步分类为:
①诊断编译程序(Diagnostic Compiler)
专门用于帮助程序开发和调试的编译程序 ②优化编译程序(Optimizing Compiler)
着重于提高目标代码效率的编译程序 ③交叉编译程序(Cross Compiler)
能够产生不同于其宿主机机器代码的编译程序 ④可变目标编译程序(Retargetable complier)
八、期末总评
平时成绩:10% 课程设计:20% 期终考试:70%
14 CompilerPrinciples
15 CompilerPrinciples
§2.编译程序概述
一、翻译程序(Translator)
能够把一种语言程序(称为源语言 程序)转换成逻辑上等价的另一种 语言程序(称为目标语言程序)的 程序
无须重写与机器无关部分就能改变目标机的 编译程序
21 CompilerPrinciples
每一个计算机科学与技术工作者的职业生涯中反复用到, “享用一辈子”
这儿接受的训练很难在其他地方获得,如:抽象与形式 化方法、局部与全局优化方法、构造技术、证明方法等
6 CompilerPrinciples
四、学习该课程的意义
❖ 编译程序是计算机系统不可缺少的重要组成 部分
对程序设计语言的设计与实现能有更深刻的理 解
11 CompilerPrinciples
2. 理论联系实际——亲自动手,构造一个 演示性编译程序,至少要完成扫描器和 语法分析器,以及语法制导翻译产生中 间代码(课程设计)
3. 认真完成作业,进一步巩固并加深理解 所学知识
4. 特别要下功夫认真学习如何从实际问题 进行抽象并形式化,最终建立实际问题 的模型(上升为理性认识),并借助模 型进一步设计实现,这将对你能力的提 高大有益处
12 CompilerPrinciples
六、教材
《程序设计语言编译原理》(第3版) 国防工业出版社 陈火旺等 1. 内容详实丰富,理论与技术相结合
2. 较为全面介绍了编译程序构造的基本 原理、方法与技术
3. 厚度适中
4. 大多数院校一直采用,硕士入学考试 参考书
5. 所谓教材,实为第一参考书而已
9 CompilerPrinciples
五、学习方法 ❖ 编译程序的构造是一个庞大而复杂的系统
工程,无论是概念还是理论、方法,对初 学者来说许多都是新的,学习起来会感到 困难大一些,这一点必须有充分认识,为 此建议学习方法上注意以下几点:
10 CompilerPrinciples
1. 课前预习,课堂认真听讲,课后复习加深理 解,特别要经常有意识地将前后内容联系起 来融会贯通。 因为编译程序是一个庞大的程序系统,讲解 过程必须“分而治之”(这也是人们处理复杂 问题的基本方法),这就要求大家在学习过 程中,始终以处理过程为主线,把前后联系 起来考虑。
5 CompilerPrinciples
三、课程特点:
❖ 充分体现了计算学科中抽象、理论和设计三个学科 形态
❖ 该课程涉及多门课程的内容综合运用,涉及面广,
内容庞杂,学习艰难
程序设计语言、计算机体系结构、语言理论及算法等 数据结构、离散数学
❖ 该课程涉及的原理、方法和技术具有十分普遍的意 义
❖ 编译课程蕴含着计算学科中解决问题的思路、抽 象和方法,这些与高等数学一样,使你“享用一 辈子”
❖ 课程所涉及的内容至今非常活跃
自然语言的翻译 软件移植 网络安全 形式化方法 形式语义学等
8 CompilerPrinciples
鉴于以上所述,作为计算机科 学与技术专业的学生必须学习和 掌握编译原理这门课程,当然由 于其综合性、处理问题的复杂性 等,学习起来有一定难度,这就 需要艰苦奋斗的精神和良好的学 习方法
13 CompilerPrinciples
七、参考书目
1.《编译原理》第2版 赵建华等译, <Compilers: Principles, Techniques,& Tools> A.V.Aho, M.S.Lam,Ravi Sethi, J.D.Ullman著,机械工业出版社,2009;
2.《编译原理课程设计》 王雷等著,机械工业 出版社,2005;
对程序设计语言有关理论有所了解 从宏观上把握程序设计语言——掌握了编译原
理后,就不能再说:“某语言未学过,所以不 会” 有助于快速理解、定位和解决程序调试与运行 中出现的问题
7 CompilerPrinciples
❖ 编译方法与技术有着广泛应用
安全技术、程序理解、软件逆向工程、应用软件与软 件工具开发、软件测试与验证等
16 CompilerPrinciples
❖ 任何非机器语言程序都需要翻译程序 ❖ 翻译程序的工作就是进行等价变换(映射) ❖ 两个程序逻辑上等价是指对相同输入得到
相同的输出
汇编程序
翻译程序
解释程序
CompilerPrinciples
编译程序
17
1. 汇编程序(Assembler)
把汇编语言程序转变为机器语言程序的翻译程序
把源程序作为输入接收,边解释边执行的翻译程序
源程序 数据
CompilerPrinciples
解释 程序
结果
18
3. 编译程序
将高级语言程序转变为低级语言程序的翻译程序
源程序
编译 程序
目标 程序
19 CompilerPrinciples
20 CompilerPrinciples
1 CompilerPrinciples
百度文库
第一讲 引论
课程信息 编译程序概述 高级语言的语法描述
§1.课程信息
一、课程名称:编译原理 ❖ 基本内容是介绍编译程序构造的基本原理、
方法和技术,包括词法分析、语法分析、 语义分析与中间代码产生、代码优化及目 标代码产生等。简言之,就是介绍如何将 源程序翻译成目标代码程序。
3 CompilerPrinciples
二、课程性质:专业基础课,必修 ❖ 编译程序(器)出现于上世纪50年代后期
(第一个高级语言1958年) ❖ 60年代~70年代是研究高峰期 ❖ 60年代中期开始在高校中开设课程 ❖ 80年代开始作为计算机科学与技术专业的
必修基础课程
4 CompilerPrinciples
❖ 编译程序又可根据用途和侧重点的不同, 进一步分类为:
①诊断编译程序(Diagnostic Compiler)
专门用于帮助程序开发和调试的编译程序 ②优化编译程序(Optimizing Compiler)
着重于提高目标代码效率的编译程序 ③交叉编译程序(Cross Compiler)
能够产生不同于其宿主机机器代码的编译程序 ④可变目标编译程序(Retargetable complier)
八、期末总评
平时成绩:10% 课程设计:20% 期终考试:70%
14 CompilerPrinciples
15 CompilerPrinciples
§2.编译程序概述
一、翻译程序(Translator)
能够把一种语言程序(称为源语言 程序)转换成逻辑上等价的另一种 语言程序(称为目标语言程序)的 程序
无须重写与机器无关部分就能改变目标机的 编译程序
21 CompilerPrinciples
每一个计算机科学与技术工作者的职业生涯中反复用到, “享用一辈子”
这儿接受的训练很难在其他地方获得,如:抽象与形式 化方法、局部与全局优化方法、构造技术、证明方法等
6 CompilerPrinciples
四、学习该课程的意义
❖ 编译程序是计算机系统不可缺少的重要组成 部分
对程序设计语言的设计与实现能有更深刻的理 解
11 CompilerPrinciples
2. 理论联系实际——亲自动手,构造一个 演示性编译程序,至少要完成扫描器和 语法分析器,以及语法制导翻译产生中 间代码(课程设计)
3. 认真完成作业,进一步巩固并加深理解 所学知识
4. 特别要下功夫认真学习如何从实际问题 进行抽象并形式化,最终建立实际问题 的模型(上升为理性认识),并借助模 型进一步设计实现,这将对你能力的提 高大有益处
12 CompilerPrinciples
六、教材
《程序设计语言编译原理》(第3版) 国防工业出版社 陈火旺等 1. 内容详实丰富,理论与技术相结合
2. 较为全面介绍了编译程序构造的基本 原理、方法与技术
3. 厚度适中
4. 大多数院校一直采用,硕士入学考试 参考书
5. 所谓教材,实为第一参考书而已
9 CompilerPrinciples
五、学习方法 ❖ 编译程序的构造是一个庞大而复杂的系统
工程,无论是概念还是理论、方法,对初 学者来说许多都是新的,学习起来会感到 困难大一些,这一点必须有充分认识,为 此建议学习方法上注意以下几点:
10 CompilerPrinciples
1. 课前预习,课堂认真听讲,课后复习加深理 解,特别要经常有意识地将前后内容联系起 来融会贯通。 因为编译程序是一个庞大的程序系统,讲解 过程必须“分而治之”(这也是人们处理复杂 问题的基本方法),这就要求大家在学习过 程中,始终以处理过程为主线,把前后联系 起来考虑。
5 CompilerPrinciples
三、课程特点:
❖ 充分体现了计算学科中抽象、理论和设计三个学科 形态
❖ 该课程涉及多门课程的内容综合运用,涉及面广,
内容庞杂,学习艰难
程序设计语言、计算机体系结构、语言理论及算法等 数据结构、离散数学
❖ 该课程涉及的原理、方法和技术具有十分普遍的意 义
❖ 编译课程蕴含着计算学科中解决问题的思路、抽 象和方法,这些与高等数学一样,使你“享用一 辈子”
❖ 课程所涉及的内容至今非常活跃
自然语言的翻译 软件移植 网络安全 形式化方法 形式语义学等
8 CompilerPrinciples
鉴于以上所述,作为计算机科 学与技术专业的学生必须学习和 掌握编译原理这门课程,当然由 于其综合性、处理问题的复杂性 等,学习起来有一定难度,这就 需要艰苦奋斗的精神和良好的学 习方法
13 CompilerPrinciples
七、参考书目
1.《编译原理》第2版 赵建华等译, <Compilers: Principles, Techniques,& Tools> A.V.Aho, M.S.Lam,Ravi Sethi, J.D.Ullman著,机械工业出版社,2009;
2.《编译原理课程设计》 王雷等著,机械工业 出版社,2005;
对程序设计语言有关理论有所了解 从宏观上把握程序设计语言——掌握了编译原
理后,就不能再说:“某语言未学过,所以不 会” 有助于快速理解、定位和解决程序调试与运行 中出现的问题
7 CompilerPrinciples
❖ 编译方法与技术有着广泛应用
安全技术、程序理解、软件逆向工程、应用软件与软 件工具开发、软件测试与验证等
16 CompilerPrinciples
❖ 任何非机器语言程序都需要翻译程序 ❖ 翻译程序的工作就是进行等价变换(映射) ❖ 两个程序逻辑上等价是指对相同输入得到
相同的输出
汇编程序
翻译程序
解释程序
CompilerPrinciples
编译程序
17
1. 汇编程序(Assembler)
把汇编语言程序转变为机器语言程序的翻译程序