编译原理 第一章 编译程序基本概念
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3
编译程序的实现机制
遍:编译程序对源程序或等价程序从头至
尾扫描的次数。
根据语言和环境的不同,编译程序实现时是把 图1.2 中的各阶段划分成若干遍; 两遍 的编译程序: 第一遍 :词法分析 、语法分析和语义分析; 第二遍 :目标代码生成和目标代码优化。 每遍中的各阶段的工作是穿插进行的, 例如: 使语法分析器处于核心位置,而把词法分析器作为子 程序;当语法分析需要下一个单ห้องสมุดไป่ตู้时,就调用词法分析器, 识别一个单词。
b := a+2*5 :=
b
a
+
* 2 5
或
⑴( *
2
5 t1
t1 ) t2 )
⑵( + a
⑶ ( := t2 _
b)
4. 优化 :提高目标程序质量的工作 ;
例: b := a+2*5
经 常数合并,可分别获得优化后的中间代码如下图所示:
:=
b a + *
⑴( * 2
⑵( + a
5
t1
t1 )
t2 )
【习题1.1 】
【习题1.1】什么是编译程序?什么是解释程序? 二者的区别? 【习题1.2】叙述编译程序的逻辑结构和实现机制。
谢谢收看!
再
见
2
:=
5
⑶ ( := t2 _
b)
⑴( + a
10 _
t2 ) b)
b
a
+
10
⑵ ( := t2
5. 目标代码生成 : 产生计算机可识别的语言 ;
通常,是把中间语言转换成目标代码,
如:
⑴( + a
10
t2 )
⑵ ( := t2 _
目标代码:
b)
① LD R, a ② ADD R, 10 ③ ST R, b
1.2
编译程序结构
编译程序总体结构如图1.4所示。
错 误 处 理 源 语 言
编译程序的 五个阶段:
词法 分析
语法 分析
语义 分析
优化 处理
代码 生成
目 标 语 言
单词串 TOKEN
语法树
符 号 表 管 理
语义树
优化 语义树
图 1.4
编 译 程 序 总 体 结 构 框 图
※ 编译程序与机器翻译的类比 :
b:=a+2*5
<常数> Ⅲ 5
的语法树
3.语义分析:分析各种语法成分的语义特征;
构建标识符的语义辞典---符号表:
符号表 名字 类型 种类 a i v b i v
地址
var a,b:integer; . . . b:=a+2*5;
数据区 a 的值 b 的值
构造语句的语义树---中间语言;
如:
第1章
关于编译程序的基本概念
内容提要:
1.1
1.2 1.3 1.4
什么是编译程序?
编译程序逻辑结构 编译程序实现机制 编程过程实例分析
※ 计算机中语言的层次体系:
Ⅰ. 高级语言1
解 释 程 序 转换程序 高级语言2
Ⅱ.
编译程序 2 汇编语言 汇编程序
编译程序1
反编译程序
反汇编程序
Ⅲ.
图 1.1
机器语言 计算机
计算机中语言的层次体系
1.1
什么是 编译程序?
编译程序(compiler)是一种翻译程序,
它特指把某种高级程序设计语言翻译成具 体计算机上的低级程序设计语言。
高级语言的执行过程 --两个阶段:
源语言 编译程序 编译阶段 图 1.2 数据 运 行 程 序 运行阶段
目标语言
结果
高级语言的执行过程
※ 什么是 解释程序?
R 为寄存器 三条指令分别为: 取、加 和 存 。
• 编译程序的理论基础
编译程序的构造,是一种语言处理工程,其理 论基础和技术基础主要有以下两个方面: 1. 形式语言【第2章】 计算机处理语言,首先应考虑语言的形式化、 规范化,使其具有可计算性和可操作性;形式语言 诞生于1956年,由chomsky创立。 2. 自动机【第3章】 自动机是一种语言模型,是语言的一种识别 工具,它与形式语言几乎同时诞生。 形式语言与自动机也是计算机专业的重要的基 础学科。
【机器翻译】是指利用计算机把一种自然语言 翻译成另一种自然语言。 汉英 辞典
与知 【例1.1】我们用树叶和颜料能够制作美丽的图画。 识库 翻译 Ⅰ. 词法分析: r( ) p( ) n( ) c( ) n( ) u( ) v( ) a( ) n( ). 过程 Ⅱ. 句法分析: Ⅲ. 语义分析: Ⅳ. 优化处理:… Sp 制作(make) 语义网 我们 (we) < 施事 > Sbj Prd Obj <受事> 图画(pictures) r Pp Vp Np <特征> 美丽(beautiful) p Np u v a n <材料> 树叶(leaves) n c n <并列> 颜料(paint) <格标> 用(with) 语 Ⅴ. 目标生成: 法 We can make beautiful pictures with leaves and paint. 树
•
1.4
编译过程实例
例:Pascal程序片段 :
var a,b:integer; . . . b:=a+2*5;
编译过程如下:
单词类码
⒈ 词法分析:识别单词并分类
⑴ ⑵ ⑶ ⑷
关键字 标识符 常 数 界 符
(k) (i) (c) (p)
-----
var,integer ; a, b ; 2, 5 ; , ; : := +
编译原理
如何让计算机 认识、理解 和 执行 高级程序设计语言 ?
2012年9月
关 于:
•课程名称: 编译原理、编译方法、编译技术。… •课程地位: 操作系统、编译系统和数据库系统 •课程特点: 计算机中三大系统软件.
⒈
⒉
⒊
⒋
知识性— 形式语言和自动机作为本课程的两大 理论基础;二者也具有典型的应用技术; 系统性— 从词法、句法、语义直到目标生成, 构成了语言翻译的完整体系; 趣味性— 关于语言处理的一些经典算法和实现 技术,可以享受获取软件设计方法的乐趣。 应用性— 编译技术可广泛应用于文本编辑、信 息检索、模式识别以及机器翻译等各个领域。
解释程序(interpreter)也是一种翻译程序,将某高 级语翻译成具体计算机上的低级程序设计语言;解释程序 的执行过成如图1.3 所示。 数据
一条源语句
图 1.3
解释程序 解释程序的执行过程
结果
编译程序与解释程序的主要区别: ⑴ 前者有目标程序而后者无目标程序; ⑵ 前者运行效率高而后者便于人机对话。
2. 语法分析: 组词成句及语法错误检查
例: b := a + 2 * 5 的分析过程如下所示: 算术表达式的 层次结构 ( 生成的结果是一棵 语法树 )
<赋值语句> <变量> b := <项 > <因式> <变量> a
图 1.5 赋值语句
<表达式> + <项 > * <因式>
Ⅰ Ⅱ
<因式> <常数> 2