对于语法解析器,我曾经与Bison “玩”,它有其优点/缺点。
上周,我在SqlLite网站上注意到该引擎是由另一个语法解析器完成的: Lemon
阅读精简文档后听起来很棒。
你对这个解析器有什么反馈吗?
在 Google 和 Wikipedia 上无法真正看到相关信息(只是几个示例,相同的教程) 它似乎不太受欢迎。(堆栈溢出中没有柠檬标签[编辑:现在有:P])
我们在固件项目中使用 Lemon 的原因是:
柠檬当然不是灵丹妙药,它的应用范围有限。缺点:
在做出选择之前权衡利弊。我已经完成了我的;-)
有趣的发现!我实际上并没有使用它,所以评论是基于阅读文档。
重新设计以便立即将词法分析与解析分开进行似乎具有优点。特别是,它有可能简化操作,例如处理多个或嵌套的源文件。基于 Lex 的yywrap()
机制并不理想。它避免了所有全局变量并具有仔细的内存分配和释放控制,这应该对其有利(它允许选择分配器和释放器也有很大帮助 - 至少对于我工作的环境来说,内存分配总是一个问题) .
重新思考如何组织规则以及如何识别终端是一个好主意。
总而言之,它看起来像是对 Bison 的深思熟虑的重新设计。
根据引用的网页,它属于公共领域。