代码编译过程概览

五个阶段

  • 词法分析
  • 语法分析
  • 语义分析与中间代码产生
  • 优化
  • 目标代码生成

类比成外文翻译的过程:

代码编译过程概览

我们以Pascal为例介绍每一步的工作(放诸四海而皆准):

1.词法分析(扫描器) 从源程序到单词符号串

代码编译过程概览以此为例
代码编译过程概览#### 2.语法分析 从单词字符串到各类语法范畴
代码编译过程概览以此为例
代码编译过程概览

3.语义分析与中间代码产生 语法范畴到初步翻译,产生中间代码

代码编译过程概览代码编译过程概览代码编译过程概览

4.优化 中间代码到高效的中间代码

代码编译过程概览
代码编译过程概览源程序:
代码编译过程概览
原中间代码:
代码编译过程概览优化后的中间代码:
代码编译过程概览

5.目标代码生成 中间代码到机器的目标代码(汇编语言或机器语言)代码编译过程概览

概览:

代码编译过程概览
表格管理程序,登记各阶段的执行信息,进展情况,比如符号表。
出错处理程序,发现并指出源程序中的错误性质位置,自动校正。
编译的前后端:
代码编译过程概览

总结:

对源程序词法分析,识别出来源程序单词字符串,如识别float,double。
语法分析,识别出来单词字符串中的逻辑表达式,各种组合语句,如变量及表达式。
语义分析,分析语句含义,形成易于操作的中间代码。
优化,根据中间代码简化程序,比如把已知量代入。