首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flex/Lex和Yacc/Bison之间的区别是什么?

Flex/Lex和Yacc/Bison之间的区别是什么?
EN

Stack Overflow用户
提问于 2009-03-08 12:31:53
回答 5查看 52.4K关注 0票数 136

Flex & Lex和Yacc & Bison有什么不同?我在网上疯狂地搜索,没有找到任何可靠的答案。

我可以在Ubuntu上安装纯Lex和Yacc,也可以只安装flex和bison。我很困惑。

  • 是不是还有人在维护Lex或Yacc?
  • 它们都是免费的吗?
  • 如果Lex不是免费的,为什么我要把它安装在我的Ubuntu发行版上?

lex --版本lex 2.5.35

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-08 12:58:39

Lex和Flex之间有一些不同,但是您必须滥用Lex才能遇到Flex的问题。(因此,我有一个滥用Lex的程序,不能在Flex下工作。)这主要是在输入前视方面;在Lex中,您可以提供自己的输入代码并修改字符流;Flex不允许这样做。

Yacc和Bison是非常兼容的,尽管Bison有一些额外的技巧可以做。

您可能找不到可以在Ubuntu上安装的Lex和Yacc的合法副本(原始的AT&T版本)。我不一定会说这是不可能的,但我没有意识到这一点。Flex和Bison很容易获得,并且在大多数情况下是等效的。您还可以从BSD世界中找到各种替代的和近似等效的程序。

Lex和Yacc由Unix SVRx许可证持有人维护- IBM (AIX)、HP (HP-UX)和Sun (Solaris)等公司在其命令下修改了Lex和Yacc的版本。MKS还提供了MKS Lex和MKS Yacc;但是,Yacc至少有一些非标准扩展。

Flex和Bison是免费的。(AT&T) Lex和Yacc并非如此。

票数 90
EN

Stack Overflow用户

发布于 2009-03-08 12:35:33

Bison是Yacc的GNU实现/扩展,Flex是Lex的继任者。在这两种情况下,都可以(推荐)使用bison / flex。

票数 35
EN

Stack Overflow用户

发布于 2009-04-18 00:21:51

在大多数(所有?)在Linux系统中,"Lex“实际上是flex的一个符号链接。基本上,它只是一个与免费版本不同的名称。

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

https://stackoverflow.com/questions/623503

复制
相关文章

相似问题

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