第二章 编译程序基本原理 — 编译过程概述
企业开发
2022-06-06 04:58:00
阅读次数: 0
1. 词法分析
- 阶段任务: 对源程序从前到后(从左到右)逐字符的扫描,从中识别出一个个”单词”符号。(单词:关键字、标识符、常数、运算符和分割符)。
- 词法错误:非法字符,关键字或标识符拼写错误。
- 正规式、有限自动机。
2. 语法分析
- 阶段任务: 确定整个输入串是否构成一个语法上的正确程序。
- 语法错误:语法结构出错,if 、endif不匹配;缺分号;
- 语言的语法规则。
3. 语义分析
- 阶段任务:进行类型分析和检查;分析各词法结构的含义;特指静态语义。
- 语义错误:死循环,0除数,其他逻辑出错。
4. 中间代码生成(可无)
5. 代码优化(可无)
- 因为中间代码的生成是机械的、按固定模式进行的,所以在时间和空间上有较大的浪费。要生成高效的代码就得进行优化。
- 优化一般建立在对程序的控制流和数据流分析的基础之上,与具体的机器无关。可在中间代码生成或目标代码生成阶段进行。
6. 目标代码生成
- 把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。此阶段与机器密切相关。
7. 符号表管理
- 符号表的作用是记录源程序中各个符号的必要信息。
- 符号表的建立可以在词法分析、语法分析、语义分析阶段
8. 出错处理
- 在逻辑上分为前端和后端。前端(包括从词法分析到中间代码生成),后端(中间代码优化和目标代码优化)
- 以中间代码为分水岭,把编译器分为与机器有关的部分和与机器无关的部分。
转载自blog.csdn.net/qq_40120946/article/details/108037236