内容简介

编译原理与编译器构造方法是计算机科学技术专业本科生的必修课程。一本优秀的编译教材会让学习计算机的大学生受益终生。

本书就是这样一本非常优秀、并且有鲜明特色的编译教材。本书的前身是1988年出版的同名经典教材《编译器构造》以及1991年出版的《编译器构造:C语言描述》和《编译器构造:Ada语言描述》。本书的之前3个版本均在美国许多大学被当做本科生教材而广泛使用。本书的几位原作者在三所美国大学拥有长达25年的编译器教学经验,根据他们的经验在本书中对编译器构造的基本知识与关键技术进行了全新的讲解。

在此前版本的基础之上,本书结合最新的程序语言和编译技术的发展,不仅引入了目前流行的Java语言作为编译器的分析对象,同时更创新性地采用了面向对象的设计模式来组织编译器中的数据结构,特别是对包括抽象语法树在内的各种不同中间表示形式的存储与访问都采用了visitor(访问者)设计模式来实现。设计模式的采用可以在很大程度上降低编译器构造的复杂程度,使初学编译器的读者能更加容易地上手实现自己的编译器。

本书的主要内容包括编译器历史和概述、词法分析(扫描)、语法分析(包括自顶向下和自底向上的分析)、语法制导翻译、符号表和声明处理、语义分析、中间表示形式、虚拟机上的代码生成、运行时支持、目标代码生成和程序优化等。与其他的编译器教材相比,本书具有如下主要特点:

* 本书全面使用了伪码的风格来描述算法,这种伪码方式不仅可以简洁地对算法进行描述,同时也支持更加清晰地对算法的目的和结构进行讨论。

* 在内容方面,本书不仅精简掉了一些过时的内容(比如属性文法),同时对于在实践中常用的技术(比如抽象语法树的构造和使用)提供了更加详尽的讲解。

* 本书在算法中使用了面向对象的设计模式,并且在算法的讲解中引入了现代软件实践中的常用方式。

* 在代码生成技术中,本书不仅讲解了传统的为目标机器生成代码的技术,同时还引入了为虚拟机生成目标代码的方法,给教师和读者提供了不同的选择。

本书提供了详尽清晰的算法,鼓励读者在实践中学习编译器构造的相关技术,同时提供了配合教材使用的教学网站、参考资料以及源代码下载。本书不仅可以作为计算机专业本科生或研究生的参考教材,同时也适合相关领域的软件工程师、系统分析师等作为参考资料。