编译程序整体结构
编译程序结构的主线和编译过程五个阶段相对应
编译过程五个阶段:
1、词法分析
2、语法分析
3、中间代码生成
4、优化
5、目标代码生成
这五个阶段都有对应的程序模块进行实现
1、词法分析器实现词法分析
2、语法分析器实现语法分析
3、语义分析与中间代码生成器实现中间代码产生
4、优化段实现优化
5、目标代码生成器实现目标代码产生
高级语言源程序首先经过词法分析器,完成词法分析,识别出单词符号
然后将单词符号输入到语法分析器中,语法分析器这个模块专门负责语法分析,识别出语法单位,并且将语法单位i组织成树型结构,也就是分析树
识别的语法单位交给语义分析与中间代码生成器,完成语义分析并生成中间代码(三元式、四元式)
生成目标代码前,中间代码需要优化段完成优化,优化后结果还是中间代码,比如说四元式,但优化后的中间代码或者四元式,他的效率更高,比如乘法可能优化为加法,或者将部分循环语句中重复执行无意义代码提在循环前执行且执行一次
最后优化后的中间代码被目标代码生成器这个模块转换生成目标代码
总结:源程序->词法分析器->单词符号->
单词符号->语法分析器->语法单位
语法单位->语义分析与中间代码生成器->中间代码(四元式)
中间代码(四元式)->优化段->优化后的中间代码(四元式)
优化后的中间代码(四元式)->目标代码生成器->目标代码
除此五个模块外,编译程序还有两个重要部分,一个是符号表管理模块,二是出错处理模块。在五个阶段中,各阶段的模块都会与符号表