程序设计语言 是人类用于构造计算机程序的语言,人类通过程序设计语言理解程序语义,运用程序设计语言进行程序开发。 机器指令 是计算机用于理解和运行计算机程序的语言,计算机通过执行机器指令运行程序,完成开发者赋予程序的任务。通常,开发者通过解释器与编译器将人类语言信息翻译为计算机可以理解并执行的指令信息。其中, 解释器 将程序设计语言源代码逐一转化为机器指令交由计算机执行,而 编译器 将程序设计语言源代码转化为包含机器指令的目标程序,计算机执行与源程序相对应的目标程序。
本书介绍用于构建面向多种源语言与目标语言编译器的通用理论、技术、数据结构、算法和思想。现代编译器通常将编译过程分为多个阶段,每一阶段处理不同的程序抽象,完成不同的编译任务。本书各章讨论构成编译器的每一个阶段,涵盖设计编译器的相关理论与核心技术要点,并使用一种类C语言说明编译器将源代码编译为目标代码的过程。
在本章中,我们从高层次概述现代编译器的组织架构和编译器的各个组成部分,讨论设计各部分的关键原理与技术,介绍引导读者实现完整编译器所使用的语言与相关工具,为读者学习后面各章奠定基础。