编译过程包含各个阶段的顺序。每个阶段以一种表示形式获取源程序, 并以另一种表示形式产生输出。每个阶段都从其上一阶段获取输入。
编译器分为多个阶段:
图:编译阶段
词法分析:
词法分析器阶段是编译过程的第一阶段。它以源代码作为输入。它一次读取源程序一个字符, 并将其转换为有意义的词素。词法分析器以记号的形式表示这些词素。
语法分析
语法分析是编译过程的第二阶段。它以令牌作为输入, 并生成解析树作为输出。在语法分析阶段, 解析器检查令牌生成的表达式在语法上是否正确。
语义分析
语义分析是编译过程的第三阶段。它检查语法分析树是否遵循语言规则。语义分析器跟踪标识符, 标识符的类型和表达式。语义分析阶段的输出是带注释的树语法。
中间代码生成
在中间代码生成中, 编译器将源代码生成为中间代码。在高级语言和机器语言之间生成中间代码。中间代码的生成方式应使你可以轻松地将其转换为目标机器代码。
代码优化
代码优化是一个可选阶段。它用于改进中间代码, 以便程序的输出可以运行得更快并且占用更少的空间。它删除了不必要的代码行, 并排列了语句序列, 以加快程序执行速度。
代码生成
代码生成是编译过程的最后阶段。它以优化的中间代码作为输入, 并将其映射到目标机器语言。代码生成器将中间代码转换为指定计算机的机器代码。
例:
评论前必须登录!
注册