代码编译过程概览
五个阶段
- 词法分析
- 语法分析
- 语义分析与中间代码产生
- 优化
- 目标代码生成
类比成外文翻译的过程:
我们以Pascal为例介绍每一步的工作(放诸四海而皆准):
1.词法分析(扫描器) 从源程序到单词符号串
以此为例
#### 2.语法分析 从单词字符串到各类语法范畴
以此为例
3.语义分析与中间代码产生 语法范畴到初步翻译,产生中间代码
4.优化 中间代码到高效的中间代码
源程序:
原中间代码:优化后的中间代码:
5.目标代码生成 中间代码到机器的目标代码(汇编语言或机器语言)
概览:
表格管理程序,登记各阶段的执行信息,进展情况,比如符号表。
出错处理程序,发现并指出源程序中的错误性质位置,自动校正。
编译的前后端:
总结:
对源程序词法分析,识别出来源程序单词字符串,如识别float,double。
语法分析,识别出来单词字符串中的逻辑表达式,各种组合语句,如变量及表达式。
语义分析,分析语句含义,形成易于操作的中间代码。
优化,根据中间代码简化程序,比如把已知量代入。