编译原理(一)
第一章编译程序基本概念
1.1什么是编译程序
课程的特点
文章目录
- 编译程序的特点
- 编译程序的概念
- 编译程序逻辑结构的五个阶段
- 编译程序与外文翻译的类比
1、编译程序的特点
地位:编译程序(系统)和操作系统一起构成 了计算机中两大系统软件;一个是计算机资源的操 纵者;而另一个是计算机软件资源的开拓者。
课程特点:
- 知识性— 形式语言和自动机作为本课程的两大理论基础 具有典型的应用技术;
- 系统性— 从词法、语法、语义直到目标生成,构成了语 言翻译的完整体系;
- 趣味性— 关于语言处理的一些经典算法和实现技术,可 以享受获取软件设计方法的乐趣。
- 应用性— 编译技术可广泛应用于文本编辑、排版系统、 模式识别以及机器翻译等各个领域。
1.1 什么是编译程序?
我们为什么需要编译程序?
编译程序(compiler)是一种翻译程序,它特指把某种高级程序设计语言翻译成与之等价的具体计算机上的低级程序设计语言。
什么是解释程序?
解释程序(interpreter)也是一种翻译程序,它 将源语言书写的源程序作为输入,解释一句后就 提交计算机执行一句,并不形成目标程序。
== 编译程序和解释程序的主要区别是什么?==
1.前者有目标程序而后者无目标程序;
2.前者运行效率高而后者便于人机对话;
1.2编译程序逻辑结构的五个阶段
1.3 编译程序执行过程
1.4编译程序与外文翻译的类比
I wish you success!
2、编译程序的概念
2.1基本概念
①遍:编译程序对开源程序或等价程序从头至尾的扫描次数。
②根据语言和环境的不同,编译程序实现时是把图1.4的各阶段划分成若干遍;典型的情况是两遍的编译程序:
第一遍:词法分析、语法分析和语义分析;
第二遍:中间代码优化和目标代码生成。
③每遍中的各阶段的工作是穿插进行的,例如:
使语法分析器处于核心位置。当语法分析需要下一个单词时,就调用词法分析器,识别一个单词;一旦识别出一个语法单位,就调用语义分析器,完成语义分析并产生中
间代码。
④
⑤
⑥
⑦
2.2编译过程实例分析
例:C语言程序片段 :
int a,b;
. . .
b = a + 2 * 5;
编译过程如下:
- 词法分析:识别源程序中的单词并分类
⑴ 关键字 (k) – int
⑵ 标识符 (i) – a,b
⑶ 常 数 © – 2,5
⑷ 界 符 § – , ; = + *
(k)、(i)、(c)、(p)单词类码 - 语法分析:组词成句及语法错误检查
例: b = a + 2 * 5 的分析过程如下所示:
( 生成的结果是一棵语法树 ) - 语义分析:分析各种语法成分
- 优化:提高目标程序的质量
例:b=a+2*5
经常数合并,可分别获得优化后的中间代码 - 目标代码生成
最终,可生成目标代码(汇编指令):