



在本章中,我们将介绍实现编译器所需的基本工具。程序通常是由程序员作为文本输入的,即一串字符。作为文本的程序的表示称为 具体语法 ,我们使用具体语法来简洁地记录和讨论程序。在编译器内部,我们使用 抽象语法树 (Abstract Syntax Tree,AST)来表示程序,它可以高效地支持编译器需要执行的操作。将具体语法转化为抽象语法的过程称为 语法分析 ,这将在第3章中进行研究。现在我们使用Python的ast模块中的parse函数,将具体语法转换为抽象语法。
AST在编译器中以许多不同的方式表示,这取决于用于编写编译器的编程语言。我们使用Python类和对象来表示AST,特别是在Python源语言的标准ast模块中定义的类。我们使用语法来定义编程语言的抽象语法(1.2节),并使用模式匹配来检查AST中的各个节点(1.3节)。我们使用递归函数构造和解构AST(1.4节)。本章将简要介绍这些部分。