c++ - Windows 上的 LALR(1) 或 GLR - 当前的 Bison++/Flex++ 替代品?

标签 c++ parsing compiler-construction bison lalr

更新:此问题已过时,但仅供引用。

原始问题

自 2002 年以来,我一直在使用相同版本的 bison++ (1.21-8) 和 flex++ (2.3.8-7)。

目前我不是在寻找 LALR(1) 或 GLR 的替代方案,只是在寻找最新的选项。有谁知道这些不依赖于 Cygwin 的原始端口之后的任何端口?

其他人在 Windows 环境中使用什么进行 C++ 编译器开发(除了 ANTLR 或 Boost.spirit)?如果您有第一手经验,商业选择是可以的。我也确实需要在 Linux 上编译。

更新:这个老问题是在我不知道有关工具推荐的政策时被问到的(不确定政策是否存在于 2010 年,但无论如何...

我已经更新到具有 GLR 功能的 Bison 3.0,并开始试验它。

我最终决定对我的解析器的任何重写都将是递归下降,以改进错误报告并允许在编译器之外的工具中更容易使用,所以现在我将在 Bison 中完成引用版本。我认为此时转换为不同的 PG 工具没有什么意义。

最佳答案

您可以试试 Elsa(现在它是 Oink 项目的一部分)。但它现在快死了。它唯一吸引人的特点是有一个完整而健壮的 C 和 C++ 解析器是在它之上编写的。

LLVM 包含一个相当现代的解析框架。还有一个 C++ 解析器(请参阅 clang 项目)。

一些 C++ 的 Packrat 实现可用,这是解析中最流行的东西。

关于c++ - Windows 上的 LALR(1) 或 GLR - 当前的 Bison++/Flex++ 替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440033/

相关文章:

c++ - 将一个包含很多类的文件转换为每个文件一个类的多个文件

c++ - 递归 noexcept 规范

java - 如何从 SOAP 响应中获取单个元素的值? ( java )

javascript - ng-repeat 解析 JSON 后无法显示

c++ - 为什么 C++ 编译器不做更好的常量折叠?

c++ - C++处理文本文件——从文本文件中提取某个字符串

c++ - GCC 和 VC++ 之间 std::vector::emplace_back 的区别

sql - 好的开源 SQL 解析器?

c - 链接步骤找不到符号(XC8 编译器)

c++ - 最少的项目重建?