一、关于编译原理编译原理是计算机专业的一门核心课程,在计算机本科教学中占有十分重要的地位。设置本课程的目的在于系统地向学生讲述编译程序设计的基本理论、编译系统的结构及编译程序各部分的设计原理和实现技术。通过对这些知识的学习,使学生既能掌握编译理论和编译方法等方面的基本知识,又具有设计、实现、分析和维护编译程序等方面的能力。由于编译原理课程具有很强的理论性和实践性,因而学生在学习过程中普遍感到内容抽象,不易理解,掌握起来难度较大。因此,本书在编写过程中充分考虑到各类学生的特点,力求将基本概念、基本原理和实现方法的思路阐述清楚,条理清晰,通俗易懂,同时书中还穿插了大量的实例,便于自学。为了帮助学生掌握每章的重点和难点,本书每章附有一定数量的习题,以帮助读者巩固所学内容,并附有习题参考答案,方便读者对照课后的习题进行练习。本书部分章节配有丰富的代码,读者在学习过程中可以结合里面的代码进行相关操作,以巩固所学知识。
二、本书结构全书共分9章,各章内容如下:第1章:编译概述。主要介绍了编译程序及其各个阶段、各阶段的分组及构造工具等具体内容。第2章:文法及语言的基本知识。主要介绍形式语言理论,本书给出了便于理解、有助于研究各种分析方法和设计构造编译程序的形式语言理论。第3章:词法分析及有穷自动机。主要介绍词法分析程序的设计原理和构造方法及有穷自动机。有穷自动机是描述词法的有效工具,也是进行词法分析的主要理论基础。因此,我们专门讨论了有穷自动机与正规文法、正规表达式之间的对应关系以及它的确定化和最小化方面的知识。第4章:语法分析。主要介绍语法分析程序的功能、自上向下语法分析、自下向上语法分析、算符优先分析法、LR 分析法等内容。第5章:语法制导翻译技术和中间代码生成。主要介绍属性文法和语法制导翻译方法的基本思想,介绍几种典型的中间代码形式和一些常见语法成分的翻译方法。第6章:符号表的组织和管理。主要讨论符号表的组织和存取符号表的各种方法。第7章:代码优化。主要介绍包括了优化技术的相关知识、局部优化、循环优化与全局优化几种常用优化方法。第8章:运行时存储空间组织。其中考虑了一些重要的语言特征,如过程调用、参数传递、数组和记录的存取方式以及多种存储分配技术。第9章:目标代码生成。主要介绍了代码生成器设计中的问题、目标机器、基本块和流图、下次引用信息等内容。附录:设计了实验内容、实验要求、实验参考算法。
三、本书特点本书简明易懂、条理清晰,用简练的语言结合大量的图、表详细介绍了编译原理的基本原理和相关知识。在编写过程中,作者力图将其中的基本概念、基本编译技术和实现方法的思路阐述清楚,同时书中还穿插了大量的实例。本书各章都配有一定数量的习题和参考答案,以帮助读者巩固所学内容。
四、本书适用对象本书可作为高等院校计算机专业教材,也可以作为成人高等教育计算机专业本科和专科起点本科生的教材,也可以作为计算机专业人员的参考用书。本书第1~3章由蒋伟进编写,第4章由万亚平和蒋伟进编写,第5章由卿桐编写,第6~7章由戴英明编写,第8章由雷向东编写,第9章及附录由吴取劲编写,第5~9章部分习题及参考答案由蒋伟进编写,全书由蒋伟进统稿。陈火旺院士担任主审,在本书出版前,陈火旺院士仔细审阅了书稿,提出了很多宝贵意见,在此表示诚挚的谢意。在本书编写过程中还得到湖南省计算机学会、中南大学出版社的领导和有关同志的支持、关心和帮助,对此也表示衷心的感谢。吴超、张亚西、蔡勋良、孙学安、宁兵等同学也倾注了许多劳动并做了大量的校对和整理工作,在此一并表示感谢。在成书过程中,我们参考了许多相关文献,在此,亦谨向它们的作者表示诚挚的感谢。书中如有不妥和纰漏之处,谨请读者和专家指正。本书配有电子教案,需要者可向出版社免费索取。
编者
2005年6月