本书介绍程序设计语言编译程序构造的一般原理、基本设计方法和主要实现技术,主要内容包括文法、自动机和语言的基础知识,词法分析,语法分析,语法制导的语义计算,语义分析,中间代码生成,运行时存储组织,代码优化和目标代码生成。全书共12章。前面几章中有关词法分析和语法分析的部分,基本上延续了本书前两个版本的风格和内容,有利于之前阅读和使用过这套教材的教师和学生衔接。新版本重新组织了语法制导的方法、语义分析、中间代码生成、运行时存储组织、代码优化和目标代码生成等相关内容,进行了适当的充实与删减,力求在各主要知识点之间达到某种较合理的均衡,使学生在本科层次的学习中尽可能对编译程序的构造原理和实现技术从整体知识层面上有较好的掌握。对于结合实例的讲解,本书沿用了前两个版本使用的PL/0编译程序。PL/0编译程序比较简单,但不失代表性,在编译原理教学中具有广泛的使用基础。通常情况下,学生能够在很短的时间内掌握PL/0编译程序的实现脉络,对于快速了解一个具体编译程序的作用和设计思想有很好的帮助。和前面的版本不同,第3版中是将PL/0编译程序的介绍分散于不同章节中,不同学校或专业的课程可根据自身的情况选择集中学习和分阶段学习。“编译原理”是一门对实践性要求较高的课程,通常应该设置专门的课程设计。书中涉及两个小型编译程序的设计实例,可选作课程设计的素材。一个是PL/0语言编译程序,其设计和实现框架贯穿于全书相关章节;另一个是简单面向对象语言Decaf的编译程序,参见第11章。不同学校或专业的课程可根据自身的情况制订适当的课程设计方案。本书的第1章、第2章和第3章由张素琴和王生原共同编写,第4章和第6章由吕映芝、张素琴和王生原共同编写,第5章由吕映芝编写,第7章和第11章由王生原编写,第8章和第9章由王生原和蒋维杜共同编写,第10章由董渊和王生原共同编写,第12章由董渊编写。适合在“编译原理”课程中讲授的内容非常广泛,从国际上的著名教材来看,在侧重点、内容和风格上都有相当大的差异。由于编者水平所限,书中必然存在不当和疏漏之处,诚请广大读者批评指正。