语言翻译的两种基本形态
- 先翻译后执行
- 边翻译边执行
编译器各阶段的工作(编译程序的工作过程)
编译程序的工作过程一般划分为5个阶段:
- 词法分析
- 语法分析
- 语义分析和中间代码生成(可选)
- 代码优化(可选)
- 目标代码生成
- PS另外还有:符号表管理和出错处理
意思解释:
- 词法分析
识别单词,至少分以下几大类:关键字(保留字)、标识符、字面量、特殊符号; - 语法分析
得到语言结构并以树的形式表示; - 语义分析
考察结构正确的句子是否语义合法,修改树结构; - 中间代码生成(可选)
生成一种既接近目标语言,又与具体机器无关的表示,便于优化与代码生成;
(到目前为止,编译器与解释器可以一致) - 中间代码优化(可选)
局部优化、循环优化、全局优化等;优化实际上是一个等价变换,变换前后的指令序列完成同样的功能,但在占用的空间上和程序执行的时间上都更省、更有效。 - 目标代码生成
不同形式的目标代码-汇编、可重定位、内存形式(Load-and-Go); - 符号表管理
合理组织符号,便于各阶段查找、填写等; - 出错处理
错误的种类-词法错、语法错、静态语义错、动态语义错。
编译器扫描的遍数
每个阶段将程序完整分析一遍的工作模式称为一遍扫描。