第一章 引论

1 翻译程序(Translator)、编译程序(Compiler)、解释程序(Interpreter)

翻译程序是把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的程序。

编译程序是把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序。

解释程序是把源语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序。

2 编译过程

词法分析程序自动生成--LEX

词法分析程序自动生成--LEX

词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出单词符号;
语法分析:在词法分析的基础上,根据语法规则把单词符号串分解成各类语法单位(语法范畴);
中间代码生成:对各类语法单位按语言的语义进行初步翻译;
优化:依据程序的等价变换规则,对前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码;
目标代码产生:把中间代码变换成特定机器上的目标代码,目标代码有三种形式,汇编指令代码、绝对指令代码、可重新定位指令代码。

3 编译程序结构

包括词法分析器、语法分析器、语义分析与中间代码生成器、优化段、目标代码生成器、符号表管理和出错处理

4 遍(pass)

所谓”遍”, 就是对源程序或源程序的中间表示从头到尾扫描一次.阶段与遍是不同的概念,一遍可以由若干段组成,一个阶段也可以分若干遍来完成

5 编译前端与后端

编译前端:与源语言有关,如词法分析,语法分析,语义分析与中间代码产生,与机器无关的优化;
编译后端:与目标机有关,与目标机有关的优化,目标代码产生;
带来的好处:程序逻辑结构清晰;优化更充分,有利于移植。

6 编译语言的生成

以汇编语言和机器语言为工具。
优点: 可以针对具体的机器,充分发挥计算机的系统功能;生成的程序效率高
缺点: 程序难读、难写、易出错、难维护、生产的效率低

以高级语言为工具。程序易读、易理解、容易维护、生产的效率高

自编译方式。