图书前言

本书介绍程序设计语言编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。为计算机科学和技术专业的本科生提供教材。

尽管“编译程序”是特指将高级程序设计语言翻译成低级语言的软件,但编译程序构造的基本原理和技术也广泛应用于一般软件的设计和实现,因此本书也是从事系统软件和软件工具研究及开发者的参考书。

本书首先从剖析一个简单的编译程序(PL/0)入手,对编译程序设计的基本理论,如有穷自动机、上下文无关文法等给予必要的介绍;对于广泛使用的语法分析方法和语义分析技术,如递归子程序法、算符优先分析、LR分析及语法制导翻译等进行了详细的讲解;对编译程序的结构及其各部分功能、实现方法以及整体的设计考虑等给予了描述;此外还介绍了编译程序的构造工具。

“编译原理”是一门对实践性要求较高的课程,为此,我们拟定了教学实验要求,列在附录D中。实验所参考的PL/0编译程序文本列在附录A中。附录B和C是对编译程序构造工具LEX和YACC的介绍。为利于教学,我们自行研制了编译原理计算机辅助教学软件。附录E对该软件的功能和使用进行了说明。

本书的第1章、第3章、第4章、第8章、第10章和第11章由张素琴编写,第2章、第5章至第7章及第12章和第13章由吕映芝编写,第9章由蒋维杜编写。

书中如有不妥之处,请读者批评指正。