gpt4 book ai didi

c - 柠檬力与否?

转载 作者:太空狗 更新时间:2023-10-29 16:29:39 26 4
gpt4 key购买 nike

对于语法解析器,我曾经“玩”过 Bison,它有其优缺点。

上周,我在 SqLite 网站上注意到该引擎是使用另一个语法解析器完成的:Lemon

阅读薄文档后听起来很棒。
您对此解析器有什么反馈吗?

在谷歌和维基百科上看不到相关信息(只是几个例子,相同的教程)它似乎不太受欢迎。 (Stack Overflow 中没有 标签 [ed: 现在有 :P])

最佳答案

我们在固件项目中使用 Lemon 的原因是:

  • 生成的代码和内存占用空间小。它生成我发现的最小的解析器(我比较了 flex、bison、ANTLR 和 Lemon 生成的具有相似复杂性的解析器);
  • 对嵌入式系统的出色支持:Lemon 不依赖于标准库,您可以指定外部内存管理函数,调试日志记录是可移除的。
  • 公共(public)领域许可。有一个单独的 Lemon 分支在 GPLv2 下获得许可,由于病毒许可不适合我们的需求。因此,我们获取最新的 sqlite 源代码并从中编译 Lemon(它仅包含两个文件);
  • 拉解析。与 Flex/Bison 解析代码相比,它使代码更易于理解和维护。线程安全是我钦佩的额外奖励。
  • 与分词器的简单集成。我们的项目性质需要对具有可变标记大小的二进制流进行标记。这是一个非常容易实现的分词器,并与只有 3 个函数和一个反馈上下文变量的解析器 API 集成。我们研究了将 Lemon 与 re2c 和 Ragel 集成的方法,发现它们也很容易实现。
  • 语法非常简单,学起来很快。
  • Lemon 明确分开分词器和词法分析器(解析器)的开发。我的开发流程从设计解析器语法开始。在第一阶段,我可以通过几个 Parser(...) 调用来检查带有隐式标记序列的复杂规则。 Tokenizer 是在之后实现的。

Lemon 肯定不是 Elixir ,它的应用范围有限。缺点:

  • 与 Bison 相比,Lemon 需要编写更多规则,因为语法简化:没有重复和可选、每个规则一个 Action 等。
  • 完整的 LALR(1) 解析器限制集。
  • 只会C语言。

在做出选择之前权衡利弊。我已经完成了我的 ;-)

关于c - 柠檬力与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com