前言


编译技术是计算机专业必修的一门重要的专业基础课程,也是计算机系统软件中非常重要的一个分支,任何计算机语言的实现都离不开编译技术,而且编译技术在语言处理、软件工程、软件自动化、计算机体系结构设计及优化等诸多领域有着广泛的应用。因而,作为计算机专业的学生,学习和掌握编译程序的基本构造原理和实现技术,可以为今后进一步学习、研究和工作奠定坚实的专业理论基础。
本书以“概念清晰、实用性强、通俗易懂”为指导思想,对第1版教材进行了修订,具体改动如下:
(1) 对第1版中的概念与内容进行了重新组合和删减。例如: 第3章为词法分析器的手工构造方法增加了更为详细的实现步骤,对每一种单词的伪代码都进行了描述; 第4章语法分析内容较多,占据较大篇幅,本次改版将第4章拆分为两章(第4章和第5章),其中第4章专门描述自顶向下的语法分析,第5章专门描述自底向上的语法分析,并且删除了算符优先分析法这种目前不太常用的语法分析方法。
(2) 对第1版中的大部分例题进行了调整,选用了与高级语言密切相关的题目,方便读者理解高级语言和编译器之间的联系。同时,为每章增添了大量的习题,包括客观题和主观题,力争做到习题丰富,通俗易懂,便于自学。
(3) 以“实用”为导向,对附录部分进行了重新编写,将编译器前端的词法分析、递归下降语法分析、LR语法分析、语义分析与中间代码生成这四个分散实验通过统一文法(C语言子集)整合为一个编译器前端与后端的设计及实现。
本书共分为10章。第1章介绍编译程序的有关概念,编译过程、编译程序的组织结构等要点。第2章作为后续各章的理论基础,主要介绍描述语言的两大工具——文法和有限自动机。第3章以正规式作为单词识别工具,从手工和自动两个角度讨论词法分析器的设计及实现。第4章对上下文无关文法的自顶向下的
语法分析方法,以及递归下降分析法和
LL(1)分析法进行详细讲解。第5章介绍自底向上的语法分析方法,以及LR分析法。
第6章介绍语义分析,涉及语法制导翻译与中间代码生成,重点讲解属性文法、翻译模式、中间代码表现形式和流行的高级程序设计语言中典型语句的翻译。第7章介绍编译程序运行时环境的有关概念和存储组织与分配技术。第8章介绍整个编译过程都要涉及的数据结构——符号表。第9章介绍代码优化,讨论优化的基本概念、优化涉及的数据流分析技术和控制流分析技术。第10章简要介绍目标代码生成的有关知识点。附录A给出一个能将C语言子集转化为汇编目标代码的编译系统原型。
本书的编写分工: 刘兵编写第1章和第7章,
张辰编写第2章、第3章和附录A,谢红侠编写第4~6章,姜淑娟编写第8~10章。本书参考了国内外的一些专著、论文和资料,借鉴了一些专家学者的研究成果,对这些前辈和同行的引导和帮助表示衷心的感谢。
限于作者水平,本书难免存在疏误,请读者批评指正。

作者
2021年4月