编译过程
- 词法分析:分析和识别单词
- 语法分析:根据语法规则,分析并识别出各种语法成分,如表达式、各种说明、各种语句、过程、函数等,并进行语法正确性检查
- 语义分析,生成中间代码
- 代码优化:为了获得高质量的目标程序
- 生成目标程序:与机器关系密切
中间代码
一种介于源语言和目标语言之间的中间语言形式
- 方便做优化处理
- 方便编译程序的移植
中间代码可以自行设计,常用的有四元式,三元式,逆波兰表示等
四元式
X1 := (2.0 + 0.8) * C1
运算符 | 左运算对象 | 右运算对象 | 结果 |
---|---|---|---|
+ | 2.0 | 0.8 | T1 |
* | T1 | C1 | T2 |
:= | X1 | T2 |
多层中间表示和PASS
PASS:对源程序(包括源程序中间形式)从头到尾扫描一次,并做有关的加工处理 ,生成新的源程序中间形式或目标程序,通常称之为一遍
编译管理
符号表管理
在整个编译过程中始终都要贯穿着建表(填表)和查表的工作。要及时地把源程序中的信息和编译过程中所产生的信息登记在表格中,而在随后的编译过程中同时又要不断地查找这些表格中的信息
出错处理
规模较大的源程序难免有多种错误,编译程序必须要有出错处理的功能。即能诊察出错误,并能报告用户错误的性质和位置,以便用户修改源程序。出错处理能力的大小是衡量编译程序质量好坏的一个重要指标