编译器结构


编译原理

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象。

编译器的高层结构

编译器具有非常模块化的高层结构

输入 -> 前端 -> 后端 -> 目标代码

前端处理和输入相关的功能。 后端处理指令集的相关功能。

  • 前端
  • 词法分析
  • 语法分析

  • 后端

  • 指令生成
  • 指令优化

抽象的多个阶段(phase)

编译器可以看成多个阶段构成的"流水线"结构。

词法分析->语法分析->语义分析->代码生成

字符序列->记号序列->抽象语法->中间代码->目标代码

复杂的编译器结构

源代码 -> 词法分析 -> 语法分析 -> 语法树结构 -> 语义分析 -> 翻译 -> 正规化 -> 指令选择 -> 控制流分析 -> 寄存器分析 -> 代码生成 -> 汇编器 -> 连接器 -> 机器代码

流水线模式上一个阶段的输出是下一个阶段的输入。

小结

编译器是由多个阶段组成的,每个阶段处理不同的问题

  • 使用不同的理论、数据结构和算法

  • 如何合理的划分组织各个阶段

  • 接口清晰

  • 编译器容易实现、维护