前端是与目标代码无关的部分,包含词法分析、语法分析,语义分析与中间代码的生成 和部分的优化部分
后端是与目标代码相关的部分,包括与目标代码相关的优化和目标代码的生成
前端与源程序有关,后端与目标程序有关
遍:对源程序或其中间结果从头到尾扫视一次,并作有关的加工处理工作,生成新的中间结果或目标程序。
可以把编译程序的几个阶段合为一遍,也可一个阶段分成若干遍。如:把词法分析、语法分析、语义分析安排成一遍,语法分析处于核心,当它在识别语法结构而需要下一个单词符号时,调用词法分析,一旦识别出语法单位时,调用语义分析,完成语义分析并产生中间代码。
某些程序语言,如PASCAL、C宜采用多遍扫描的编译程序结构,即将整个编译程序划分为若干个相继执行的模块,每一模块都对它前一模块的输出扫描一遍,并在扫描过程中完成前述八个部分的一个或几个部分,然后将工作的结果供下一模块加工。