本书介绍编译系统的一般构造原理、基本设计方法、主要实现技术和一些自动构造工具,主要由语言基础知识、词法分析、语法分析、中间代码生成、代码优化、目标代码生成、符号表的构造和运行时存储空间的组织等8部分组成。本书首先从剖析一个简单的编译程序(PL/0)入手,对编译程序设计的基本理论,如有穷自动机、上下文无关文法等给予必要的介绍;对于广泛使用的语法分析方法和语义分析技术,如递归子程序法、算符优先分析、LR分析及语法制导翻译等进行了详细的讲解;对编译程序的结构及其各部分功能、实现方法以及整体的设计考虑等给予了描述;此外还介绍了编译程序的构造工具。同时引入“PL/0语言的编译程序”结构及文本,还引入LEX、YACC使用方法与实例。各章末附有习题。“编译原理”是一门对实践性要求较高的课程,为此,我们拟定了教学实验要求,列在附录D中。实验所参考的PL/0编译程序文本列在附录A中。附录B和C是对编译程序构造工具LEX和YACC的介绍。配合本书的教学自行研制了“编译原理计算机辅助教学软件”,附录E对该软件的功能和使用进行了说明。本书是高等院校计算机科学与技术专业的教材,也可作为教师、研究生或软件工程技术人员的参考书。