首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lexer/解析器工具

Lexer/解析器工具
EN

Stack Overflow用户
提问于 2009-03-30 14:24:20
回答 7查看 9.4K关注 0票数 7

对于C或C++,哪个词法/解析器生成器是最好的(最容易使用,最快的)?我现在使用的是flex和bison,但是bison只处理LALR(1)语法。我正在解析的语言实际上并不需要无限的前瞻性,但是无限的前瞻性将使解析更加容易。我该试试安特尔吗?可可/雷射?埃尔克伦德?还有别的吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-09-24 05:53:49

更新的 2015-01-05:

我的原始答案指向一个现已删除的问题:

您推荐什么解析器生成器?中已经有很多关于这个问题的好答案。

因此,我从删除archive.org上的答案上拿出了至少1张选票的项目清单:

  • 包装鼠
  • 埃尔克温德
  • 安特尔
  • Boost的神灵部分(C++)
  • 柠檬
  • 黄金分析器
  • DMS软件重组工具包 (非自由和开放源码软件)

我自己做过几个flex/bison系统,但现在我用sqlite中的柠檬替换这两个系统,因为它是一个工具,可重入和线程安全,还有一个基于流/拉的模型。

票数 5
EN

Stack Overflow用户

发布于 2009-06-20 02:51:08

坏消息是,大多数真正的计算机语言并不是"LALR(1)",这意味着您必须采取相当大的黑客手段使YACC解析真正的语言。

如果您正在设计DSL,您可以使用任何LALR解析器生成器,而不需要太多麻烦,因为您可以在解析器生成器发出吱吱声时更改DSL的语法。LL解析器生成器在这里也主要是出于同样的原因而工作,但是缺少左递归可能是一个真正的痛苦。

如果您喜欢语法的方式不包含,GLR解析器将成为赢家。我们在DMS软件重组工具包中使用它们,并为一些30+语言(包括C++ )构建了产品质量解析器,其中有一个民间定理,说它几乎不可能解析。民间定理是由人们使用LL和LALR解析器来尝试和处理C++开始的。GLR做起来很容易。

票数 3
EN

Stack Overflow用户

发布于 2009-10-15 04:40:17

ANTLR使无限的前瞻性非常容易使用‘回溯’选项。它还可能限定您的“最容易使用、最快”的标准,因为它有ANTLRWORKS,可以让您可视化和调试语法。

另一个优点是,它使AST的构建变得非常简单,它内置了对构建AST的支持,而在bison中,AST是缺失的。

随着两本书的出版-‘反two :权威指南’和‘语言设计模式’,它是一个非常好的文档工具可用。您也有一个非常活跃的邮件列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/697442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档