第一章编译程序基本概念
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
词法分析 -- 识别单词,确认词类; 语法分析 -- 识别短语和句型的
语法属性; 语义分析 -- 确认单词、短语和句型的
语义特征; 代码优化 -- 修辞、文本编辑; 代码生成 -- 生成译文。
1.3 编译程序的实现机制
遍:编译程序对源程序或等价程序从头至 尾扫 描的次数。
根据语言和环境的不同,编译程序实现时是把 图1.2 中的各阶段划分成若干遍;典型的情况是 两遍的编译程序:
目 标 语 言
符号表管理 图 1.4 编 译 程 序 总 体 结 构 框 图
※ 编译程序执行过程预演:
五个阶段 流程:
错误处理
源 语 言
词法 分析
语法 分析
语义 分析
优化 处理
代码 生成
目 标 语 言
符号表管理 编 译 程 序 执 行T语语单优O过义法义词K化树树E串程N 图 解
※ 编译程序及外文翻译的类比 :
数据
源语句
解释程序
结果
图 1.3 解释程序的执行过程
编译程序及解释程序的主要区别: ⑴ 前者有目标程序而后者无目标程序; ⑵ 前者运行效率高而后者便于人机对话。
1.2 编译程序结构
编译程序总体结构如图1.4所编译示程。序的五个阶段:
错误处理
源 语 言
词法 分析
语法 分析
语义 分析
优化 处理
代码 生成
( 生成的结果是一棵 语法树 ) 算术表达式的
<赋值语句>
层次结构
<变量> := <表达式>
b
<项> + <项>
Ⅰ
<因式> <因式> * <因式> Ⅱ
<变量 a>
<常数 >2
<常数> Ⅲ 5
图 1.5 赋值语句 b:=a+2+5 的语法树
var a,b:integer; 3.语义分析:分析各种语法成分的语义.特.征.;
例: b := a+2*5
经 常数合并,可分别获得优化后的中间代码如下图所示:
:=
b
+
a
*
2
5
⑴ ( * 2 5 t1 ) ⑵ ( + a t1 t2 ) ⑶ ( := t2 _ b )
:=
b
+
a
10
⑴ ( + a 10 t2 ) ⑵ ( := t2 _ b )
5.目标代码生成:
⑴ ( + a 10 t2 )
• 课程特点:
知识性— 形式语言和自动机作为本课程的两大 理论基础并具有典型的应用技术;
系统性— 从词法、句法、语义直到目标生成, 构成了语言翻译的完整体系;
趣味性— 关于语言处理的一些经典算法和实现 技术,可以享受获取软件设计方法的乐趣。
应用性— 编译技术可广泛应用于文本编辑、排 版系统、模式识别以及机器翻译等各个领域。
1.1 什么是 编译程序?
编译程序(compiler)是一种翻译程序, 它特指把某种高级程序设计语言翻译成具 体计算机上的低级程序设计语言。
编译程序的执行过程 ---
两个阶段:
数据
源语言
编译程序
目标语言
运行程序
编译阶段
运行阶段
图 1.2 编译程序的执行过程
结果
※ 什么是 解释程序?
解释程序(interpreter)也是一种翻译程序,将某高 级语翻译成具体计算机上的低级程序设计语言;解释程序 的执行过成如图1.3 所示。
构建标识符的语义辞典---符号表:
b:=a+2*5;
符号表
名字 类型 种类
a
i
v
b
i
v
地址
数据区
a 的值 b 的值
构造语句的语义树---中间语言;
如: b := a+2*5
:=
b
+
a
*
2
5
或 ⑴ ( * 2 5 t1 ) ⑵ ( + a t1 t2 )
⑶ ( := t2 _ b )
4. 优化 :提高目标程序质量的工作 ;
第一遍 :词法分析 、语法分析和语义分析; 第二遍 :目标代码生成和目标代码优化。 每遍中的各阶段的工作是穿插进行的, 例如:
使语法分析器处于核心位置,而把词法分析器作为子 程序;当语法分析需要下一个单词时,就调用词法分析器, 识别一个单词。
1.4 编译过程实例
例:Pascal程序片段 :
var a,b:integer; ...
b:=a+2*5;
❖ 编译过程如下:
单词类码
⒈ 词法分析:识别单词并分类
⑴ 关键字 (k) -- var,integer ; ⑵ 标识符 (i) -- a,b ; ⑶ 常 数 (c) -- 2,5 ; ⑷ 界 符 (p) -- , ; : := +
2. 语法分析: 组词成句及语法错误检查
例: b := a + 2 * 5 的分析过程如下所示:
第1章 关于编译程序的基本概念
内容提要:
1.1 什么是编译程序? 1.2 编译程序逻辑结构 1.3 编译程序实现机制 1.4 编程过程实例分析
计算机中语言的翻译程序体系
wk.baidu.com
Ⅰ. 高级语言1
转换程序
高级语言2
解释程 序
Ⅱ.
编译程序
编译程序
1
2
汇编语言
反编译程序
汇编程序
反汇编程序
Ⅲ.
机器语言
计算机
图 1.1 计算机语言的层次体系
编译程序的设计原理及实现
如何让计算机 认识、理解 和 执行 高级程序设计语言 ?
• 课程名称:分别有:编译理论、编译原理、编译 结构、编译技术和编译方法等。
• 课程关地位于::编译程序(系统)和操作系统一起构
成的课操了程纵计的者算机;名而中称另两一大、系个地统是软计位件算和;机特一软个件点是资计源算的机开资拓源者。
上例:可生成目标代码: ⑵ ( := t2 _ b )
R 为寄存器
三条指令分别为: 取、加 和 存 。
① LD R,10
② ADD R, a
③ ST R, b
课后作业:
1. 什么是编译程序?什么是解释程序?二者的 区别?
2. 叙述编译程序的逻辑结构和实现机制。
语法属性; 语义分析 -- 确认单词、短语和句型的
语义特征; 代码优化 -- 修辞、文本编辑; 代码生成 -- 生成译文。
1.3 编译程序的实现机制
遍:编译程序对源程序或等价程序从头至 尾扫 描的次数。
根据语言和环境的不同,编译程序实现时是把 图1.2 中的各阶段划分成若干遍;典型的情况是 两遍的编译程序:
目 标 语 言
符号表管理 图 1.4 编 译 程 序 总 体 结 构 框 图
※ 编译程序执行过程预演:
五个阶段 流程:
错误处理
源 语 言
词法 分析
语法 分析
语义 分析
优化 处理
代码 生成
目 标 语 言
符号表管理 编 译 程 序 执 行T语语单优O过义法义词K化树树E串程N 图 解
※ 编译程序及外文翻译的类比 :
数据
源语句
解释程序
结果
图 1.3 解释程序的执行过程
编译程序及解释程序的主要区别: ⑴ 前者有目标程序而后者无目标程序; ⑵ 前者运行效率高而后者便于人机对话。
1.2 编译程序结构
编译程序总体结构如图1.4所编译示程。序的五个阶段:
错误处理
源 语 言
词法 分析
语法 分析
语义 分析
优化 处理
代码 生成
( 生成的结果是一棵 语法树 ) 算术表达式的
<赋值语句>
层次结构
<变量> := <表达式>
b
<项> + <项>
Ⅰ
<因式> <因式> * <因式> Ⅱ
<变量 a>
<常数 >2
<常数> Ⅲ 5
图 1.5 赋值语句 b:=a+2+5 的语法树
var a,b:integer; 3.语义分析:分析各种语法成分的语义.特.征.;
例: b := a+2*5
经 常数合并,可分别获得优化后的中间代码如下图所示:
:=
b
+
a
*
2
5
⑴ ( * 2 5 t1 ) ⑵ ( + a t1 t2 ) ⑶ ( := t2 _ b )
:=
b
+
a
10
⑴ ( + a 10 t2 ) ⑵ ( := t2 _ b )
5.目标代码生成:
⑴ ( + a 10 t2 )
• 课程特点:
知识性— 形式语言和自动机作为本课程的两大 理论基础并具有典型的应用技术;
系统性— 从词法、句法、语义直到目标生成, 构成了语言翻译的完整体系;
趣味性— 关于语言处理的一些经典算法和实现 技术,可以享受获取软件设计方法的乐趣。
应用性— 编译技术可广泛应用于文本编辑、排 版系统、模式识别以及机器翻译等各个领域。
1.1 什么是 编译程序?
编译程序(compiler)是一种翻译程序, 它特指把某种高级程序设计语言翻译成具 体计算机上的低级程序设计语言。
编译程序的执行过程 ---
两个阶段:
数据
源语言
编译程序
目标语言
运行程序
编译阶段
运行阶段
图 1.2 编译程序的执行过程
结果
※ 什么是 解释程序?
解释程序(interpreter)也是一种翻译程序,将某高 级语翻译成具体计算机上的低级程序设计语言;解释程序 的执行过成如图1.3 所示。
构建标识符的语义辞典---符号表:
b:=a+2*5;
符号表
名字 类型 种类
a
i
v
b
i
v
地址
数据区
a 的值 b 的值
构造语句的语义树---中间语言;
如: b := a+2*5
:=
b
+
a
*
2
5
或 ⑴ ( * 2 5 t1 ) ⑵ ( + a t1 t2 )
⑶ ( := t2 _ b )
4. 优化 :提高目标程序质量的工作 ;
第一遍 :词法分析 、语法分析和语义分析; 第二遍 :目标代码生成和目标代码优化。 每遍中的各阶段的工作是穿插进行的, 例如:
使语法分析器处于核心位置,而把词法分析器作为子 程序;当语法分析需要下一个单词时,就调用词法分析器, 识别一个单词。
1.4 编译过程实例
例:Pascal程序片段 :
var a,b:integer; ...
b:=a+2*5;
❖ 编译过程如下:
单词类码
⒈ 词法分析:识别单词并分类
⑴ 关键字 (k) -- var,integer ; ⑵ 标识符 (i) -- a,b ; ⑶ 常 数 (c) -- 2,5 ; ⑷ 界 符 (p) -- , ; : := +
2. 语法分析: 组词成句及语法错误检查
例: b := a + 2 * 5 的分析过程如下所示:
第1章 关于编译程序的基本概念
内容提要:
1.1 什么是编译程序? 1.2 编译程序逻辑结构 1.3 编译程序实现机制 1.4 编程过程实例分析
计算机中语言的翻译程序体系
wk.baidu.com
Ⅰ. 高级语言1
转换程序
高级语言2
解释程 序
Ⅱ.
编译程序
编译程序
1
2
汇编语言
反编译程序
汇编程序
反汇编程序
Ⅲ.
机器语言
计算机
图 1.1 计算机语言的层次体系
编译程序的设计原理及实现
如何让计算机 认识、理解 和 执行 高级程序设计语言 ?
• 课程名称:分别有:编译理论、编译原理、编译 结构、编译技术和编译方法等。
• 课程关地位于::编译程序(系统)和操作系统一起构
成的课操了程纵计的者算机;名而中称另两一大、系个地统是软计位件算和;机特一软个件点是资计源算的机开资拓源者。
上例:可生成目标代码: ⑵ ( := t2 _ b )
R 为寄存器
三条指令分别为: 取、加 和 存 。
① LD R,10
② ADD R, a
③ ST R, b
课后作业:
1. 什么是编译程序?什么是解释程序?二者的 区别?
2. 叙述编译程序的逻辑结构和实现机制。