通过解剖分析现成软件的源代码来学习计算机的专业课程,是一种行之有效的途径。本书通过解剖一个LALR(1)语法分析的生成器——LEMON,来达到学习编译原理中有关LALR(1)语法分析的目的。.本书的结构安排,以LEMON在mmn()主函数中执行流为串联主线,在分析过程中,按遇见的顺序,逐个分析阐述每个函数的工作机制、相关的数据结构,以及它们互相之间发生的有机联系。全书分11章。第1章对LEMON进行概略性的介绍。第2章通过一个带有变量功能、具有可重载函数的桌面计算器的开发实例,介绍如何应用LEMON来开发应用程序。第3章分析LEMON如何对命令行中输入的参数进行处理。第4章阐述LEMON中的各种数据结构以及它们的初始化过程。第5章为LEMON对语法文件内容进行词法扫描,并介绍如何将磁盘上的语法文件转换为机器内存里的各种数据结构。第6章讲述寻得符号Firsr集并建立优先级的过程。第7章讨论形成LR(0)分析器的各个状态和建立各项目的传播链表。第8章为寻找各语法符号的Follow集元素。第9章阐述在已有LR(0)分析器的基础上,添加先行符从而建立LALR(1)分析器的机理和过程。第10章是本书最重要的部分,讨论了LEMON如何与精心设计的lempar.c模板文件互相配合,最终生成LALR(1)类型语法分析器的C语言版文件。第11章非常简要地介绍了语法分析器内函数调用与数组之间的关系、它们的良好封装性,以及如何删除调试排错功能以获得更小的软件体积。..本书可作为大学计算机专业高年级学生和研究生的教材或教学参考书,也可作为从事计算机系统研究或应用开发人员的参考书。...