什么是编译器
编译器是一类程序,用来将高级语言的源代码转化成机器能够识别的目标代码。
什么是解释器
解释器也是用来解析高级语言的,将源代码转化成对应的结果输出。
上述二者的区别
输入相同,输出不同,解释器直接输出程序的结果,而编译器先生成中间代码然后再生成可执行的目标代码。
编译器的模块构成
编译器是由多个功能模块构成的流水线结构。
- 词法分析:将源程序看作一个字符流,处理得到记号流。
- 语法分析:处理记号流,生成抽象语法树。
- 语义分析:对语法树进行语义检查,保证合法性。
- 中间代码生成:根据语义分析器的输出生成中间代码。具体代码和机器类型有关。
- 中间代码优化:相关的优化工作。
- 目标代码生成:与机器的指令相关。
编译器和解释器都包括前3个模块,而解释器的第四部直接输出程序结果。