📜  编译器流程

📅  最后修改于: 2020-12-06 06:24:46             🧑  作者: Mango

编译阶段

编译过程包含各个阶段的顺序。每个阶段以一种表示形式获取源程序,并以另一种表示形式产生输出。每个阶段都从其上一阶段获取输入。

编译器分为多个阶段:

图:编译阶段

词法分析:

词法分析器阶段是编译过程的第一阶段。它以源代码作为输入。它一次读取源程序一个字符,并将其转换为有意义的词素。词法分析器以记号的形式表示这些词素。

语法分析

语法分析是编译过程的第二阶段。它以令牌作为输入,并生成一个解析树作为输出。在语法分析阶段,解析器检查令牌生成的表达式在语法上是否正确。

语义分析

语义分析是编译过程的第三阶段。它检查语法分析树是否遵循语言规则。语义分析器跟踪标识符,标识符的类型和表达式。语义分析阶段的输出是带注释的树语法。

中间代码生成

在中间代码生成中,编译器将源代码生成为中间代码。在高级语言和机器语言之间生成中间代码。中间代码的生成方式应使您可以轻松地将其转换为目标机器代码。

代码优化

代码优化是一个可选阶段。它用于改进中间代码,以便程序的输出可以运行得更快并且占用更少的空间。它删除了不必要的代码行,并排列了语句序列,以加快程序执行速度。

代码生成

代码生成是编译过程的最后阶段。它以优化的中间代码作为输入,并将其映射到目标机器语言。代码生成器将中间代码转换为指定计算机的机器代码。

例: