计算机编译原理是计算机专业的基础课之一,列入了国际ACM 91教程。本书系统全面地介绍了高级程序设计语言编译程序的构造原理,重点讨论了词法分析、语义分析以及目标代码的生成与优化,各章末有本章概要、习题与上机实习题,书末附有解题规范例解与总复习思考题。
本书可供计算机及相关专业作为编译原理教材,同时也是计算机软件工作者、研究生以及广大计算机爱好者的参考用书。
第一章 总论
1.1 引言
1.2 程序设计语言与程序
1.3 编译程序构造及有关概念
1.4 形式语言理论与编译实现技术
本章概要
第二章 文法与语言
2.1 符号串与符号串集合
2.2 文法与语言的形式定义
2.3 语言的分类
2.4 文法等价与等价变换
2.5 语法分析树与句型分析
本章概要
习题1~5
第二章 上机实习题
第三章 词法分析
3.1 引言
3.2 正则表达式与有穷状态自动机
3.3 词法分析程序的实现
3.4 词法分析程序的自动生成
本章概要
习题6
第三章上机实习题
第四章 语法分析——自顶向下分析技术
4.1 引言
4.2 带回溯的自顶向下分析技术
4.3 无回溯的自顶向下分析技术
本章概要
习题7
第四章上机实习题
第五章 语法分析——自底向上分析技术
5.1 引言
5.2简单优先分析技术
5.3算符优先分析技术
5.4 LR(k)分析技术
本章概要
习题8~11
第五章 上机实习题
第六章 语义分析与目标代码生成
6.1 概况
6.2 说明部分的翻译
6.3 目标代码的生成
6.4 源程序的内部中间表示
本章概要
习题12~15
第六章 上机实习题
第七章 运行环境
7.1 引言
7.2 存储分配策略
7.3 符号表
7.4 运行时刻支持系统
本章概要
习题16
第八章 代码优化
8.1 引言
8.2基本块与流图
8.3基本块的优化
8.4 与循环有关的优化
8.5 窥孔优化
本章概要
习题17
第八章上机实习题
第九章 程序错误的检查和校正
9.1 概述
9.2 词法错误的复原和校正
9.3 语法错误的复原和校正
9.4 语义错误
本章概要
解题规范例解
总复习思考题
参考文献
《计算机编译原理》(第一版)(张幸儿,科学出版社,1999)一经面世,便得到众多读者的好评,并荣获2002年全国普通高等学校优秀教材二等奖。基于使用情况以及当前实际情况,本书第二版做了下列修改:
(1)以C语言为背景语言。这是因为当前大多数读者所熟悉的程序设计语言是C型语言,尽管C语言不是最合适的背景语言,本书在讨论中尽可能地采用了C(或C型)语言。
(2)每章末增加本章概要,概括全章主要内容和重要概念,这将有助于学生的复习,也可供任课教师在教学中参考。
(3)每章末增加上机实习题。编译原理是一门理论性与实践性都很强的课程。通过上机实践可以加深对概念的理解,同时提高学生的上机动手能力。有条件的读者可以根据自己的实际情况适当选题进行上机实践。
(4)对习题进行了补充修改,主要是增加了提示,并在解题规范例解部分增加了例题,以更多地覆盖重点内容,利于读者举一反三,提高解题的规范性与正确性。建议读者仔细阅读解题规范例解部分。
编译原理有较强的理论性。这表现在:一是以形式语言理论为基础,二是包括了语法制导的翻译。课程本身便决定了有一定难度。理解概念,有利于对事物更深入的认识。一些学生可以熟练地编程,但若与他们讨论程序中的语言概念,往往说不出所以然来。如果不满足于当程序员,而有当分析员等的更高目标,必须掌握概念。如何掌握?举一个例子。“短语”的定义看似非常抽象,但当认识到“短语是句型中这样一个子符号串,即它可以被归约,原句型在归约以后所得符号串仍然是句型”,并且通过画语法分析树来找出短语,“短语”这一概念就很好理解了。
编译原理理论性很强,但本书的一个特点是较多地强调了应用,也就是实践。例如,如何为语言构造文法,如何利用运行状态转换图的思想构造正则文法,如何实现标识符作用域的识别,如何写出词法分析程序又如何结合浯言成分的语义写出翻译方案等等。这里,一个是思路问题,一个是“动手”问题。读者可从中得到—一些启发。
这几年中,本书的第一版曾被用于综合性大学、师范类大学与广播电视大学计算机专业的编译原理课程的教材。同样,对于第二版,教师可以在教学中根据本校的实际情况选择合适的内容,因需施教。总之一句话,“各取所需,为己所用”。
本书各章末附有习题,全书末附有总复习思考题。读者可以通过解答习题和思考题加深对概念的理解,并对编译原理课程有更深入的认识。本书没有给出习题解答,作者认为这样可以更充分地发挥读者的独立思考能力。当然,如果有读者愿意和作者一起切磋习题,作者将热忱欢迎。作者的E-mail地址:zhangxrO@sina.conl或zhang—xinger@hotmail.com。
最后,要感谢科学出版社吴俭编辑毫无保留地把第一版的电子稿提供给我,使我能在很短的时间内完成第二版的电子稿。这里也要感谢钟谊编辑和李宇编辑,是他们的支持和辛勤工作才使第二版能顺利面世。