“编译原理与技术”是计算机科学与技术专业的专业基础课程,通过本课程的学习,不仅可以提高编程技巧,掌握软件设计的一般方法,而且对计算机系统软件有一个比较清楚的认识和理解,为进一步的学习和研究打下良好的基础。
本书的前身是北京邮电大学出版社出版的《编译程序设计原理与技术》,主要介绍编译程序的设计原理和基本实现技术。根据多年的教学实践,对原书的内容进行了调整、补充和完善,并加强了实践环节。本书主要以Pascal和C语言为背景、就编译原理和技术有关的主要课题进行了系统和深入的讨论。
全书共分11章。第1章对编译程序的组成、功能及有关的前后处理器等进行了介绍,读者可以从中了解编译程序的概况,这是其余各章节的基础。第2章介绍了有关形式语言与自动机的基本概念,这是学习编译原理必备的基础理论知识。第3章引入了词汇、模式等概念,介绍了利用状态转换图手工编写词法分析程序的方法和步骤,并对词法分析程序自动生成工具LEX的使用和工作原理作了介绍。第4章详细讨论了常用的语法分析技术,如适于手工实现的递归调用预测分析方法、适合利用分析程序自动生成工具实现的完备的LR分析技术等,介绍了语法分析程序自动生成工具YACC的使用方法等。第5章讨论了语法制导翻译技术,介绍了语法制导定义和翻译方案的概念,以及根据语法制导定义和翻译方案设计相应的翻译程序的基本方法,后继的语义分析和中间代码生成就是基于这种技术实现的。第6章介绍了语义分析的基本概念和要求,讨论了编译程序所用的重要数据结构--符号表的组织和管理,详细介绍了借助符号表、利用语法制导翻译技术实现类型检查的方法。第7章讨论了程序运行时的存储组织与管理问题,介绍程序运行相关的问题及解决方案,有助于读者理解程序设计中的问题,如非局部名字的访问、参数传递机制等。第8章介绍了中间语言,讨论了如何利用语法制导翻译技术把一般的程序设计语言结构翻译成中间代码。第9章介绍了目标代码生成的思想和一个简单的实现算法。第10章简单讨论了常用的代码优化技术。最后一章介绍了编译程序实现的一般方法,剖析了PL/0语言的编译程序,介绍了GCC编译程序的基本结构,并提供了一个课程设计题目,按照软件工程的思想,对课程设计提出了基本要求,希望通过实际操作,有助于加深读者对编译原理的理解及对编译技术的掌握。
由于作者水平所限,书中难免存在缺点和不妥之处,真诚地希望得到广大读者和同行、专家的批评指正。
编 者