"编译原理"是计算机专业的一门主要专业课。通过对本课程的学习,不仅可以掌握编译程序本身的基本实现原理和技术,同时也有助于提高对程序设计语言的理解,提高语言设计及程序设计的能力。该课程涉及内容较广,具有很强的理论性与实践性,且内容抽象、较难理解,掌握起来有一定的难度。本书根据编者多年的教学实践,精选了该课程主要内容的典型习题,通过课程辅导与习题解析的方式帮助读者理解编译程序构造的基本原理和概念,掌握编译的相关技术,提高解题能力。
本书共分9章。第1章简要介绍程序设计语言的特点与编译的基本概念。第2章介绍词法分析器的设计,主要涉及正则表达式与有限自动机相关理论方法。第3章概要介绍了形式语言的基本概念、文法的定义及变换方法。第4章主要介绍语法分析的相关内容,包括自顶向下和自底向上两种语法分析方法;自顶向下分析法介绍了递归下降法和LL方法;自底向上分析法介绍了简单优先方法、算符优先方法和LR方法。第5章介绍符号表的组织,主要涉及语义信息的提取、存放和使用方法。第6章介绍语法制导翻译与中间代码生成的有关内容,给出了如何利用语法分析算法控制语义加工生成中间代码的方法。第7章重点介绍程序运行时存储空间组织及分配的相关内容。第8章主要介绍代码优化内容。第9章提供了本科期末考试试题和硕士研究生入学考试试题供读者参考。
为了便于读者学习,本书每一章内容分为三部分:第一部分介绍本章包含的内容和需要重点掌握的知识要点;第二部分对本章的典型例题进行较详细的分析和解答;第三部分提供了自测习题和部分自测习题的参考答案,目的是提高读者独立分析和解决问题的能力。
本书提供的习题难易程度较为适当,既可作为高校计算机专业本科生的学习辅导书,也可用于计算机相关专业研究生入学考试的复习指导。
本书的完成得益于编者多年来编译原理教学实践的积累,同时也与张基温教授大力支持和帮助密不可分,在此致以真诚的谢意。本书主要由张伟编写,康辉、张利华两位老师也参加了部分编写工作。由于编者水平有限,书中难免有错漏和不妥之处,敬请广大读者批评指正。
编 者
2004年10月