LEMON语法分析生成器

当前位置:首页 > 计算机网络 > 计算机理论 > LEMON语法分析生成器

出版社:浙江大学
出版日期:2006-7
ISBN:9787308048149
作者:虞森林
页数:405页

书籍目录

第1章 介绍LEMON 1.1 编译原理的由来和发展 1.2 LEMON简介 1.3 命令行中各个选项 1.4 语法分析器的界面和工作过程 1.5 与YACC和BISON的不同之处 1.6 语法文件的语法 1.7 特殊申明符 1.8 语法分析过程的错误恢复策略第2章 设计计算器 2.1 最简陋计算器 2.2 使用自定义的数据类型——结构 2.3 语法分析器的状态和动作 2.4 语法分析的动作记录 2.5 比较完善的计算器 2.6 如何释放符号占用的内存空间 2.7 具有变量功能的计算器 2.8 具有函数功能的计算器 2.9 添加带两个参数的函数功能以及让函数能够重载 2.10 计算器的全部源代码第3章 处理命令行输入 3.1 函数调用关系 3.2 内容概述 3.3 如何阅读分析LEMON源程序  3.4 与命令行有关变量、数组的申明和赋值  3.5 命令行选项错误输入时的处理 3.6 命令行带参数选项的处理  3.7 提示正确参数输入形式第4章 初始化LEMON  4.1 函数调用关系  4.2 内容概述  4.3 LEMON程序的“全局”变量  4.4 启用“符号之家”的strsafe—init函数  4.5 启用符号表的Symbol—init函数  4.6 符号(symb01)结构  4.7 启用状态表的State—init函数  4.8 状态(state)数据结构  4.9 项目(config)数据结构  4.10 产生式(rule)数据结构  4.11 动作(action)数据结构  4.12 一些变量的初始化  4.13 装配和安置符号  4.14 检测符号的安置第5章 词法扫描和语法要素内部表示  5.1 函数调用关系  5.2 内容概述  5-3 词法处理的主角  5.4 词法分析专用的数据结构(pstate)  5.5 读入整个语法文件  5.6 打印出错信息函数  5.7 处理条件编译  5.8 分析字符流和裁成记号流  5.9 记号的语法分析  5.10 文法符号计数、排序  5.11 重现语法文件第6章 符号的First集  6.1 函数调用关系  6.2 内容概述  6.3 计算优先级  6.4 找出符号的First集第7章 计算LR(0)分析器 7.1 函数调用关系  7.2  内容概述 ……第8章 符号的Follow集第9章 计算LALR(1)分析器第10章 生成LALR(1)语法分析器第11章 语法分析器的一些特性主要参考文献

作者简介

通过解剖分析现成软件的源代码来学习计算机的专业课程,是一种行之有效的途径。本书通过解剖一个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章非常简要地介绍了语法分析器内函数调用与数组之间的关系、它们的良好封装性,以及如何删除调试排错功能以获得更小的软件体积。
本书可作为大学计算机专业高年级学生和研究生的教材或教学参考书,也可作为从事计算机系统研究或应用开发人员的参考书。

图书封面


 LEMON语法分析生成器下载 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     前年底开始阅读Lua源码,中间发现编译基础不行,于是折回去看龙书之类的编译书记.前面看的还能明白点儿,到了LALR部分开始卡壳,于是找来这本书看,以Lemon这个仅有几千行代码量的LALR分析器来讲解一个LALR分析器的完整实现,需要补充一下背景知识的是,这并不是一个实验性质的项目,著名的开源项目Sqlite就以它作为sql解析生成器,当然Lemon的作者也是sqlite之父本人.有了之前生吞编译的一些理论基础,大概花了两周的时间,把该书的绝大部分看完,除了最后一部分根据模板生成相应的代码部分没有细看,因为对于要了解LALR算法的实现,到生成Action和GO表部分,已然足够了.写代码分析类的书籍,不是一个容易的事情,因为在分析的同时,也需要将相应的背景知识逐个交代.本书这点做的不够好,当然这不是他的责任,读者需要先把编译前端的理论知识补一补,同时随手背一本做参考.书中的讲解,基本做到了逐行解释,甚至于有些罗嗦,比如插入符号的hash算法也要解释一下.实际上,做为读者而言,应该也要学会看书时抓住重点,对于类似这样的内容,完全可以一目十行--毕竟你真正的目的是要快速了解这个算法,而不是局限在一些代码上的细节.本书几年前我就在书店看过,时隔多年之后终于买了一本,打开一看发现还是2006年的第一次印刷版本,可见销量之惨淡.这种讲解看似用不上的理论书籍,在中国卖的不好也是可以预料的,不过难免让人唏嘘.其实我的本职工作,并不是语言编译等相关的,要看懂Lua源码,也着实不必深入到LALR这一层才足够,Lua本身用的是最简单的递归下降分析法,只不过,理解编译这样可以用语言生成语言的技术,对我而言一直以来都很神秘而且觉得能做到了是件很酷的事情.如果有类似体验的同学,强烈建议从Lua和Lemon这种短小精悍又五脏俱全非玩具项目的小项目入手.给本书打4星半,内容无问题作者也确实扎实的深入探索了一遍Lemon的实现,奈何不是什么人都是侯捷能把知识描述阐述的清晰易懂.

精彩短评 (总计14条)

  •     写的很详细,基本按照main函数的流程把整个过程详尽的过了一遍,详细的你都会觉得作者罗嗦,比如在hash中查找添加个字符串还要分析。缺陷是错别字多,另外没有从整体上对整个架构算法做分析而是一下子就扎进细节里面。不过不算是硬伤。要看LALR算法的,推荐跟着这本书来个实战。
  •     东西难懂,待初略学习编译原理后再慢慢啃,看上去是本有价值的书
  •     给朋友买的,他应该喜欢吧。
  •     一直对当当的感觉还是蛮好的,但是这本书让我很伤心,书侧整个都沾满了土,显然是沾过水的,其中一页还有个鞋印,很多书页的都折了,当当作为比较主流的图书网站,不应该这样对待我们广大学生吧,我们可是经常买书的啊!
  •     帮同事买的, 书籍印刷还不错
  •     感谢作者很有心,这本书作为高校教材还是挺不错的,但是用于指导实践我认为还有不足。首先lemon解析器的定位,它是处于词法分析,语法分析还是语义分析的哪个阶段到现在还是不太清楚的,lemon缺乏可视化的UI进行处理,使用起来如果还要自己进行词法分析,那实用性就打折扣了。因为此书中对LALR1解析算法进行剖析,相比一些老外的图书,例如Monographs in ***puter Science,Packret分析(第二版)要差了很多。其次我实际上需要的是实践操作的指导,工作后难得有时间和有精力去深入学习算法,算法对于我是黑盒即可,我需要的是短平快的进行开发,快速实现我所需要的目标,lemon的能力显然有限,当然lemon是免费的,这点没有疑问。最后给大家推荐几款我前期研究中发现的软件,希望和大家多多交流:1)Parser Generator2)UltraGram上述两个软件的语法书写上和lemon是不同的,虽然我也没有深入的使用,但是发现在实用性方面似乎这两款软件更能满足我的要求。
  •     这本书对农民种地很有帮助,能提高农作物的产量,提高种植收割效率
  •     废话,又见废话
  •     内容挺好,就是啰嗦了一点,能简洁一点就好了
  •     这本书对龙书在LALR方面有一个很好的补充作用,个人认为龙书一直以来对LALR的解释和实例是不够的,而这本书主要是一个通过分析一个LALR(1)文法作为核心的语法分析生成器来解释LALR技术和实现方法,是在实例方面对龙书的不足之处的一个很好的支持,而且内容写得不错,对于想了解自底向顶编译器技术以及语法生成器构造的人来讲,是不个不错的选择!
  •     这本书分析的很详细,但是分析过程不是很让人容易懂。需要反复读,反复看代码,才能明白。
  •     路边摊20元收了 为来年做sql分析做准备。 稍微看了一遍,比 bison 的语法好的多,以后细细看,代码真的不错。
  •     这书真不能说好,lemon源码,作者的注释够多了。这个系列,也就毛教授在好好写书。
  •     情景分析系列,支持
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024