- 编译程序:编译程序的基本任务是将源语言程序翻译成等价的目标语言程序。
- 编译过程:通常划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。另外有两个重要工作:表格管理和出错处理与上述六项阶段都有联系
词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词
语法分析:是在词法分析的基础上将单词序列分解成各类语法成分,如:“程序”、“语句”、“表达式”等等
语义分析:使用语法树和符号表中的信息来检查源程序是否和语言定义一致;审查源程序有无语义错误,为代码生成阶段收集类型信息
中间代码生成:在进行了上述的语法分析和语义分析阶段的工作以后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码
代码优化:对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间
目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码 - 编译阶段的组合:前端和后端
编译过程除了用六个阶段划分,也可以用其他的角度描述编译过程。
前端的主要工作依赖于源语言而与目标机无关。包括词法分析、语法分析、语义分析和中间代码生成,以及一些优化代码生成的工作,同时包括与每个工作相关的出错管理和表格管理的工作。
后端工作指那些依赖于目标机而一般不依赖于源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表管理。
编译过程可以由一遍、两遍或多遍完成
遍(趟):对源程序或中间代码程序,从头至尾扫描一次并完成所规定的工作称为一遍(趟)
特点:
多遍功能独立,相互联系简单,逻辑结构清晰,但增加了编译程序的长度和编译时间
遍数少则逻辑结构比较复杂,占用系统的内存较多,但减少了中间过程读取文件的开销
编译原理:引论
最新推荐文章于 2024-09-14 23:51:25 发布