编译原理学习笔记(一)概述

什么是编译器

编译器是一类程序,用来将高级语言的源代码转化成机器能够识别的目标代码。

什么是解释器

解释器也是用来解析高级语言的,将源代码转化成对应的结果输出。

上述二者的区别

输入相同,输出不同,解释器直接输出程序的结果,而编译器先生成中间代码然后再生成可执行的目标代码。

编译器的模块构成

编译器是由多个功能模块构成的流水线结构。

  • 词法分析:将源程序看作一个字符流,处理得到记号流。
  • 语法分析:处理记号流,生成抽象语法树。
  • 语义分析:对语法树进行语义检查,保证合法性。
  • 中间代码生成:根据语义分析器的输出生成中间代码。具体代码和机器类型有关。
  • 中间代码优化:相关的优化工作。
  • 目标代码生成:与机器的指令相关。

编译器和解释器都包括前3个模块,而解释器的第四部直接输出程序结果。
c

分享到