lemon语法分析生成器的使用以及源代码分析
特点以及优点
1、Lemon是一个C或者C++语言的LALR(1)语法分析器生成器。
2、它和“bison”与“yacc”的功能是一样的,但它不是“bison”或者“yacc”的简单复制。
3、为了减少编写代码的错误,它使用了一种不同的语法。
4、Lemon使用了一种更为高级的分析引擎,运行速度比“bison”与“yacc”要更快,并且该引擎是可重入的和线程安全的。生成的解析器是可重入和线程安全的。
5、更进一步的,Lemon引入了非终结符析构器的概念,实现了能够消除资源泄漏的特性,适合于长时间运行的程序例如GUI或者嵌入式控制器中。
Lemon解析器生成器的完整源代码包含在两个文件中。文件lemon.c是解析器生成器程序本身。柠檬生成的解析器子例程的模板是一个单独的文件lempar.c。也提供柠檬文档。
Lemon本身的源代码和Lemon生成的代码均属于公共领域。
要查看有关如何使用Lemon的示例,请参见SQLite数据库引擎的源代码。 Lemon是SQLite项目的一部分。
操作的原理
lemon源码下载和官方文档:
http://www.hwaci.com/sw/lemon/
https://sqlite.org/src/doc/trunk/doc/lemon.html
可参考《LEMON语法分析生成器(LALR(1))源代码情景分析》来学习bison的实现原理。
lemon语法分析生成器的使用以及源代码分析相关推荐
- LALR(1)语法分析生成器--xbytes
0.概述: 看了编译器龙书和虎书后,自己手动写了一个LALR(1)语法分析生成器,使用的语法文件格式和lemon的差不多. 程序里面很多的算法也都是摘录自虎书,龙书虽然讲的很详细,但是真正动手写的时候 ...
- Java源代码分析与生成
源代码分析:可使用ANTLR ANTLR是开源的语法分析器,可以用来构造自己的语言,或者对现有的语言进行语法分析. JavaParser 对Java代码进行分析 CodeModel 用于生成Java代 ...
- nux 平台的 libpcap 源代码分析
nux 平台的 libpcap 源代码分析 施聪 (javer@163.com), 高级程序员.网络设计师 简介: libpcap 是 unix/linux 平台下的网络数据包捕获函数包,大多数网络监 ...
- java语法分析生成器,语法词法生成器
一.语法词法生成器 Flex 语法扫描器生成器 flex (fast lexical analyser generator) 是Lex的另一个替代品.它经常和自由软件Bison语法分析器生成器 一起使 ...
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...
- 《LINUX3.0内核源代码分析》第一章:内存寻址
https://blog.csdn.net/ekenlinbing/article/details/7613334 摘要:本章主要介绍了LINUX3.0内存寻址方面的内容,重点对follow_page ...
- Scrapy源代码分析-经常使用的爬虫类-CrawlSpider(三)
CrawlSpider classscrapy.contrib.spiders.CrawlSpider 爬取一般站点经常使用的spider.其定义了一些规则(rule)来提供跟进link的方便的机制. ...
- Android 中View的绘制机制源代码分析 三
到眼下为止,measure过程已经解说完了,今天開始我们就来学习layout过程.只是在学习layout过程之前.大家有没有发现我换了编辑器,哈哈.最终下定决心从Html编辑器切换为markdown编 ...
- Android应用程序进程启动过程的源代码分析(1)
Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信机制:这两个特点都是在进程的初始化过程中实 ...
最新文章
- linux常用指令_Linux系统常用指令总结
- linux插光驱自动重启,Linux两种光驱自动挂载的方法
- JVM——CPU缓存架构与Java 内存模型
- IDEA中配置Python环境并运行
- 雪城大学信息安全讲义 3.2 Set-UID 程序的漏洞
- Python学习心路历程
- 用Cython编译Python的C扩展
- 走进WPF之开发类似Visio软件
- 12个国外免费DNS服务
- [转]windows 7 professional 64 bit SP1 change system language(sucess)
- 专业学习经验交流会成功举行
- 计算机网络 路由器的端口ip,给路由器的一个接口上配置两个IP地址
- Github建个人静态网页
- 三款ActiveX图表控件对比评测 Pro ActiveX、ProEssentials、ChartDirector
- 一页两个uEdit编辑器写法记录
- 我讽刺中医把每个养生的都化成了神仙
- One by wacom数位板安装及初步使用
- 【laravel】整合云片短信验证---引入第三方类的方式
- 汽车理论matlab编程,汽车理论课后作业matlab编程详解(带注释)
- 《Spring视频教程》(p14~p16)