本书是与《编译原理教程(第五版)》(胡元义主编,西安电子科技大学出版社)一书配套的习题解析与上机指导教材,也可单独使用。本书的习题解析部分对《编译原理教程(第五版)》中的习题进行了深入、细致的分析和解答,为读者熟练掌握编译原理知识,抓住重点,突破难点提供了有益的帮助。本书的上机指导部分包括由高级程序语言到中间语言,由汇编语言到机器语言的翻译,使编译的主要翻译阶段和环节都能微观且实时地显示出来,较好地解决了编译原理的理论与实践的衔接问题。此外,我们结合自己开发的8086/8088小汇编指令到机器代码的翻译成果,将8086/8088汇编指令到机器代码的翻译方法引入到书中,有利于读者了解低级语言的翻译过程和实现方法。
本书对《编译原理教程(第四版)》中的习题进行了深入、细致的分析和解答,较好地解决了编译原理的理论与实践的衔接问题。
编译原理是计算机专业的一门核心课程,在计算机本科教学中占有十分重要的地位。由于编译原理课程具有很强的理论性和实践性,因而学生在学习时普遍感到内容抽象,不易理解,掌握起来难度较大。本书通过习题解析的方式来帮助读者理解编译技术的原理和概念,掌握编译原理的相关方法,提高分析问题与解决问题的能力。本书的上机指导部分则给读者提供了一个完整的小型编译程序,以便读者上机实践,较好地解决了编译原理与实践的衔接问题,使读者对编译原理有一个形象、直观和透彻的认识和感受,能够更深入地了解和掌握编译原理的内容和实现方法。
本书是与编者在西安电子科技大学出版社出版的《编译原理教程(第五版)》一书相配套的习题解析与上机指导教材,它也可以与目前各种编译原理教材配套使用。本书分为两篇,第一篇为编译原理习题解析部分。为了便于读者正确理解编译原理的概念,掌握解题方法,本篇对《编译原理教程(第五版)》一书中各章的习题都给出了详尽的解题过程,对书中引用到的概念、原理和公式给出了出处;对有代表性的习题和疑难习题也给出了详细的分析和解答。此外,对某些习题,本书还给出了一些新的解题思路和方法。本书的第二篇是编译原理上机指导部分,给出了一个完整的小型编译程序,该程序涵盖了编译原理的词法分析、语法分析、中间代码生成等各阶段的内容。此外,还给出了8086/8088汇编语言到机器语言的翻译程序。本书中的小型编译程序可接受本书中文法规定的高级语言程序,将其翻译成四元式代码形式的中间语言程序,并且使编译的主要翻译阶段和环节都能微观且实时地显示出来,有利于读者深入了解编译的内部过程和实现细节,并为读者开拓了进一步学习和运用编译原理的视野。对目标代码生成,国内的编译教材只是笼统地介绍了从中间代码到假想机汇编这一级的翻译,对于计算机究竟是如何实现将汇编语言翻译成可执行的机器代码的却均无介绍。我们结合自己开发的8086/8088小汇编指令到机器代码的翻译成果,将8086/8088汇编指令到机器代码的翻译方法引入到书中,有利于读者了解低级语言的翻译过程和实现方法。
由于编者水平所限,本书难免存在差错和不足,敬请广大读者批评指正。
编者
2021年11月
第一篇 编译原理习题解析
第一章 绪论 1
第二章 词法分析 3
第三章 语法分析 13
第四章 语义分析和中间代码生成 56
第五章 代码优化 65
第六章 运行时存储空间组织 74
第七章 目标代码生成 81
第八章 符号表与错误处理 86
第二篇 编译原理上机指导
第九章 小型编译程序介绍 90
9.1 小型编译程序结构 90
9.2 小型编译程序关于高级语言的规定 90
9.3 小型编译程序关于单词的内部定义 92
9.4 小型编译程序的LR分析表 93
9.5 小型编译程序运行实例分析 95
第十章 上机实验内容 100
10.1 实验一 编译程序的分析与验证 100
10.2 实验二 算术表达式的扩充 100
10.3 实验三 添加新的程序语句(一) 101
10.4 实验四 添加新的程序语句(二) 102
10.5 编译原理课程设计 102
第十一章 高级语言到四元式的编译程序 104
第十二章 8086/8088小汇编的设计与实现 129
12.1 汇编指令系统的分析 129
12.2 8086/8088小汇编的设计实现 136
12.3 8086/8088小汇编实验 144
12.4 8086/8088小汇编程序 146
附录1 8086/8088指令码汇总表 199
附录2 8086/8088指令编码空间表 204
参考文献 206