当前位置: 首页 > article >正文

ANTLR4 与 flex/bision、lex/yacc 的比较

ANTLR4、flex/bison、lex/yacc 都是可根据形式化文法生成程序语言分词器(lexer)与解析器(parser)的工具。

lex 与 yacc 分别是词法分析器生成器与语法分析器生成器。历史悠久,早期是在Unix 系统中的工具。flex/bison 分别是兼容 lex/yacc 的lexer与parser生成器。在Linux系统中,flex/bison 更加常用。ANTLR 是1992年起开始发布的lexer/parser 生成器,目前的新版本为 ANTLR4。

## 输出语言种类的支持

flex 支持的输出语言有 c99[1]、c++。其中,对 c++ 的支持为试验性(experimental)状态[2]。Bison 支持的输出语言除了 C 之外,还支持 C++、D、Java[3]。

ANTLR4 支持的目标语言有 Cpp, CSharp, Dart, Java, JavaScript, PHP, Python3, Swift, TypeScript, Go 等[4]。对 C++ 目标语言对应的运行时环境,对C++标准最低要求为 C++17[5].

文法的支持

ANTLR4 文法支持EBNF文法形式,生成ALL 自顶向下parser。Bison 文法支持 BNF 文法形式,生成 LALR 自底向上 parser。

项目活跃程度

ANTLR4 最新发布版本为 24年8月4日发布[4],17k stars, 维护人数351。

Flex 最新发布版本为 17年5月7日发布[6],3.6k stars, 维护人数 64。

Bison 最新发布版本为 21年9月25发布[7],329 stars, 维护人数 43。

[1]: The Generated Scanner, westes.github.io/flex/manual/Generated-Scanner.html

[2]: Generating C++ Scanners, westes.github.io/flex/manual/Cxx.html

[3]: www.gnu.org/software/bison/manual/bison.html

[4]: github.com/antlr/antlr4

[5]: github.com/antlr/antlr4/tree/dev/runtime/Cpp

[6]: github.com/westes/flex/tree/master

[7]: github.com/akimd/bison


http://www.kler.cn/news/330817.html

相关文章:

  • Electron 进程通信
  • Spring MVC系统学习(二)——Spring MVC的核心类和注解
  • 五子棋双人对战项目(5)——对战模块
  • Ubuntu编译fftw3
  • 端口隔离配置的实验
  • ElasticSearch学习笔记(三)Ubuntu 2204 server elasticsearch集群配置
  • JavaCV 实现视频链接截取封面工具
  • 掌控物体运动艺术:图扑 Easing 函数实践应用
  • 【Linux 从基础到进阶】Cassandra数据库安装与调优
  • SpringBoot与微服务:网上租赁系统的现代化构建
  • CSS——文字闪烁效果
  • 机器学习框架
  • 虚拟机三种网络模式详解
  • Android常用C++特性之std::sort
  • 影刀---如何进行自动化操作
  • Kubernetes Ingress:简化外部访问的利器
  • 02Cesium中常用的鼠标事件
  • Python 学习笔记1 - 认识Python
  • 【2025】基于Django的鱼类科普网站(源码+文档+调试+答疑)
  • 《深度学习》OpenCV 背景建模 原理及案例解析