编译原理---编译

时间:2023-02-11 16:27:40

 编译器做了什么?(c语言,宏替换和文件包含工作一般不归入编译器的范围而交给一个独立的预处理器)

从最直观的角度讲,编译器就是将高级语言翻译成机器语言的一个工具。

编译过程一般可以分为6步:扫描、语法分析、语义分析、源代码优化、代码生成和目标代码优化

词法分析(即扫描):

首先源代码进入扫描器,扫描器的任务很简单,它只是简单地进行词法分析,运用一种类似于有限状态机的算法可以很轻松地将源代码的字符序列分割成一系列的记号。

词法分析产生的记号一般分为如下几类:关键字、标识符、字面量(包含数字、字符串等)和特殊符号(如加号、等号)。在识别记号的同事,扫描器也完成了其他工作。比如将标识符存放到符号表,将数字、字符串常量存放到文字表等,以备后面的步骤使用。


语法分析:

接下来是语法分析器,它将对由扫描器产生的记号进行语法分析,从而产生语法树(Syntax tree).整个分析过程采用了上下文无关语法的分析手段、简单的讲,由语法分析器生成的语法树就是以表达式(Expression)为节点的树。


语义分析:

接下来是语义分析,由语义分析器完成