本书是编译原理课程的辅导教材。书中对该课程的各部分内容进行了整理、归纳和总结,并指出其重点。同时,选取了一些具有一定难度和代表性的例题,进行了深入细致的分析和解答,为读者提供了解题思路和解题方法。书中还精选了一些与历届研究生入学试题相类似、难度相当的题目作为习题,并给出了参考答案。另外,本书还设计了一个简单的程序设计语言的编译程序,并将其作为实验内容,通过该实验可使读者加深对编译理论的理解,提高程序设计水平。本书可作为编译原理课程的考研复习用书、教学辅导用书和实验指导书,也可作为计算机软件人员的参考资料??前言编译技术是计算机语言发展的支柱,也是计算机科学中发展最迅速、最成熟的一个分支。编译原理作为计算机专业的一门核心课程,在教学中占有十分重要的地位。由于其内容具有较强的理论性和实践性,学生在学习过程中普遍感到内容抽象、难于理解、题目难做。为此特编写本书,希望本书能够成为学生学习编译原理的好帮手,能使读者更全面、更透彻地理解和掌握编译的原理和方法,不再感到这门课程难学。本书作为编译原理课程的学习辅导用书,内容包括了编译各阶段的基本理论与方法,以及在编译过程中涉及到的一些问题。全书共分9章:第1章简单介绍了编译程序的功能、编译阶段的划分及编译程序的结构;第2章对语言与它的描述工具——文法进行了叙述;第3章为词法分析,涉及的主要技术是正规式与有限自动机:第4章为语法分析,主要包括自顶向下分析法中的预测分析法(LL(1)分析法)和递归下降分析法、自底向上分析法中的算符优先分析法和LR分析法:第5章为语法制导翻译与中间代码生成的相关内容;第6章介绍了编译过程中大量使用的符号表,包括它的作用及组织方法和管理方式;第7章从编译的角度介绍了程序运行时如何分配、管理好存储空间:第8章为代码优化,主要介绍了局部优化、循环优化的方法;第9章为目标代码生成,主要介绍了基本块的优化算法。书中每章的结构都相同,包括四部分:(1)主要内容。介绍这一章应掌握的概念、技术和相关算法,并点出这一章的重点;(2)例题解析。精选了一些典型题目,给出了解题思路、解题方法和要注意的问题,题目不多,但具有代表性:(3)习题。要学好编译的方法,就必须亲自动手做题目,这里给出了一些与例题相对应的作业:(4)习题参考答案。对习题中的每一道题目都给出了参考答案,大部分题目还给出了解题过程。本书还给出了一个简单的程序设计语言(S语言)的编译程序,将其作为实验。该实验将编译程序划分为三遍,分别实现词法分析、语法分析并生成中间代码、生成目标代码。书的最后附上了C语言程序清单。本书实验程序由戴跃发、刘继臣、王继刚等同学编程、调试,在此表示衷心感谢。由于作者水平有限,书中不妥之处,敬请读者批评指正。编者