编译原理第一章ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《编译原理》课程简介
• 本课程的地位:
• 1. 计算机专业的专业基础课
• 2. 软件技术的基础
• 3. 是计算机专业的学生必修的一门主干课。
《编译原理》课程简介
作用: 1. 编译原理是介绍如何将高级程序设计语言变换成计 算机硬件所能识别的机器语言,以便计算机进行处 理。
编译原理是编译程序的原理。
– 分析句子的语法结构;
– 根据句子的含义进行初步翻译;
中间代码 产生 优化 目标代码 产生
– 对译文进行修饰;
– 写出最后的译文。 例:I wish you success
1.1
编译器概述
1. 词法分析(lexical analysis)
词法分析阶段的主要任务是对输入的符号串形式的源程 序进行最初的加工处理。它依次扫描读入的源程序中的 每个字符,识别出源程序中有独立意义的源语言单词, 词法分析阶段工作依循的是源 用某种特定的数据结构对它的属性予以表示和标注。 语言的词法规则 词法分析实际上是一种线性分析。属性字的数据结 构可据不同语言及编译程序实现方案来设计,但一般设 计成单词属性标示及单词内码两个数据项。
编译程序的表示与分类
主 要 内 容
编译程序的结构与编译过程 语言开发环境中的伙伴程序 编译程序结构的实例模型 编译程序的构造与实现
1.1
编译器概述
1.1.1 编译程序鸟瞰 为什么要使用编译器?
机器语言 (machine language) C7 06 0000 0002 汇编语言 (assembler language) MOV X , 2 高级语言 (high-level language) X=2
注:10表示16
编译程序所处的层次
语言处 理程序
Fortran语言
Fortran编译程序
高 级 语 言
C 语 言
操作系统
C 编译 程序
计算机硬件 汇编语言
Basic解释程序
Basic语言
. . . . . .
. . . . . .
1.1
编译器概述
在机器上如何执行一个高级语言程序?
◈把高级语言程序翻译成机器语言程序
1.4 语言开发环境中的伙伴程序
1.编辑器 2.预处理器 3.连接程序
4.装入程序
5.调试程序
1.5 编译程序结构的实例模型
1.5 编译程序结构的实例模型
1.5 编译程序结构的实例模型
1.6 编译程序的构造与实现
1.5 编译程序结构的实例模型
编译程序的构造工具
1. 词法分析器自动生成器 Lex Flex
1
词法分析
ቤተ መጻሕፍቲ ባይዱ
词法分析的功能 词法分析阅读构成源程序的字符流,按编 程语言的词法规则把它们组成词法记号流。 记号:
<记号名,属性值>
是一个词法单元 有别于同类中其 他单元的特征值
是同类词法单 元共用的名称
2 语法分析
Void jisuan()
{ int y,c,d;
分析:
float x,a,b; X=a+b*50; y=c+)d*(x+b; }
用源语言写的程序称为源程序
目标语言 (target language) 目标程序的描述语言称为目标语言
1.1
编译器概述
目标程序:(target program) 源程序经过编译后生成的程序称之为目标程序 宿主语言(实现语言): 编译程序的实现语言 宿主机(目标机): 编译程序的运行环境
1.1
编译器概述
2. 它的理论基础坚实,其形式化系统不仅应用于编译 技术,还大量应用于人工智能,多媒体技术及数据 等领域。
《编译原理》课程简介
–学习意义 –对编程语言的设计和实现有深刻的理解,对和编程语 言有关的理论有所了解,对宏观上把握编程语言来说, 起一个奠基的作用。 –从软件工程看,编译器是一个很好的实例,所介绍的 概念和技术能应用到一般的软件设计之中。 –编译技术的应用和编译技术的发展 高级语言设计、计算机体系结构的优化(并行、内存 分层)、新型计算机体系结构设计、程序翻译、提高 软件开发效率的工具 、高可信软件。
《编译原理》课程简介
学习任务: 1. 掌握编译的理论基础和形式化系统
2. 了解编译的全过程及其具体实现方法。
《编译原理》课程简介
学习方法:
1. 认真听课,认真理解书中的基本概念、基本原理
和基本算法 2. 弄懂书上的例题和习题 3. 在看书时或理解例题时,一定要画出相应的细节 变化过程,通过画图来加深理解
编译阶段
二阶段
运行阶段
1.1
三个阶段的转换 编译——汇编——运行
源程 序 编译 程序 汇编 语言 汇编 程序
编译器概述
目标 代码
初始 数据
目标代 码(运 行子程 序)
计算 结果
编译时
汇编时
运行时
目标代码 .exe .obj
Link不属于编译
1.2 编译程序的表示与分类
1.2.1 T型图
编译程序的表示方法
任务:
对于法分析识别出的各类语法范畴,分
析其含义,进行和初步翻译,产生介于源代
码和目标代码之间的一种代码。
分为两个阶段工作
——对每种语法范畴进行静态语义检查
例:蚂蚁戴眼镜
——若语义正确就进行中间代码的翻译
中间代码的形式
——四元式、三元式、逆波兰式
X=a+b*50 中间代码表——四元式
序号
(1) (2)
例计算表达式3*16+2的值,实现该计算的机器语言程 序、汇编语言程序和程序设计语言(C语言)程序如下 1.1 编译器概述 所示。 void main(void) { cout=3*16+2; } Load R0,3 Mul R0,10 Load R1,2 Add R0,R1 Write R0 Halt 2203 8210 2602 6101 1000 f000
4. 在理解的基础上记忆
5. 理论结合实践
课程内容
第1章 编译引论
第2章 形式语言与自动机理论 第3章 词法分析
第4章 语法分析——自上而下分析
第5章语法分析——自下而上分析 第6章 语义分析与中间代码生成 第7章 运行环境 第8章 代码优化
第9章 代码生成
第1章
编译引论
程序设计语言与编译程序
例:若将A语言的源程序翻译成B语言的程序, 翻译的实现语言是Y语言。 则称:A语言是翻译的源语言 B语言是目标语言 Y语言是宿主语言
1.1
1.1.2
compile 编译程序 计算机
编译器概述
源程序的执行
Abc.exe 目标程序
0、1代码
Abc.exe 运行子程序( 或解释程序) 计算机
Abc.C
源程序
2.语法分析程序产生器
YACC Bison
3.语法制导翻译器
4.代码自动生成器
模板比较、模板映射 5.数据流分析装置
代码优化部分
1.5 编译程序结构的实例模型
1.2 编译程序的表示与分类
1.2 编译程序的表示与分类
1.2.2 编译程序的分类
(1)从语言类型或实现机制不同
(2)从对源程序执行途径的不同
解释执行
编译执行
1.2
编译程序的表示与分类
1.3
编译程序的结构与编译过程
词法分析 语法分析
编译程序的工作
• 把英文翻译为中文 – 识别出句子中的一个个单词;
算符
左操作 数
右操作 数
结果
T1 T2
将整常数50转换为实常数 * b T1
(3)
(4)
+
=
a
T3
T2
T3
x
等价变换
任务:
对前面产生的中间代码进行加工变换,以 期在最后阶段能产生更为高效的目标代码。 原则:等价变换
任务:
把经过优化的中间代码转化成特定机器上的低
级语言代码。
6. 分析和综合
教材 编译原理
清华大学 出版社 陈英 陈朔鹰
参考资料
• 编译原理 、吕映芝 、清华大学出版社 • 编译原理实用教程、温敬和 、清华大学出版社 • 编译原理、王磊 胡元义、科学出版社
• 编译原理、陈意云 张昱 、高等教育出版社
• 编译原理及实践教程、黄贤英 曹琼、清华大学出版社
考核方法 • 期末考试成绩(70%) • 平时成绩(30%),包括: 作业(20%) 考勤(10%)
7. 前端和后端
将编译器是依赖于对源语言的操作还是对
目标语言的操作,将其分为前端和后端两部分。
编译程序的前端和后端
根据编译程序各部分功能,将编译程序分成前端和后端
前端:通常将与源程序有关的编译部分称为前端。
词法分析、语法分析、语义分析、中间代码生成
---分析部分
特点:与源语言有关
后端:与目标机有关的部分称为后端。 代码优化、代码生成 特点:与目标机有关 ---综合部分
1.3.2 编译程序结构的公共功能与编译程序的组织

对源程序(包括源程序中间形式)从头到尾扫 描一次,并做有关的加工处理 ,生成新的源程序中 间形式或目标程序,通常称之为一遍。
第一遍 S.P C1 第二遍
S.P
中间形式1
C2
S.P
中间形式2
……
O.P
上一遍的结果是下一遍的输入,最后一遍生成 目标程序。
◈运行所得到的机器语言程序求得计算结果
1.1
定义1.1:
编译器概述
将某一种程序设计语言写的程序翻译成等价的另一 种语言的程序的程序,称之为编译程序(编译器 compiler)或翻译程序(翻译器 translator)
1.1
编译器概述
1.1
编译器概述
源语言 (source language) 源语言是用来编写源程序的语言,一般是汇 编语言或高级程序设计语言 源程序 (source program)
相关文档
最新文档