一个编译器至少需要包含如下几个部分:

词法分析器:对源代码的字符串进行扫描和分解,根据构词法将字符流转换成单词流。

语法分析器:根据文法规则把单词序列分解成各类语法单位,识别出一个一个句子。

语义分析器:根据前边产生的一个个句子,按语言的语义进行翻译,产生四元式或三元式等中间语言。

优化器:把中间代码进行转换,以产生更加高效的目标代码。

代码生成器:把中间代码转换成汇编指令或可重定位的目标代码(这时会用到连接器)。

补充概念:编译器自举。现有C编译器后有C语言,之所以可以用C语言开发C编译器、是因为之前已经存在由其他语言开发的C编译器。



更多推荐

《C编译原理》自己写C语言编译器