bison和lex文法编译慢

Slow compilation of bison and lex grammar

我使用 bison 和 flex 使用 grammar.y 文件生成 C 解析器。它在大约 10 秒内正确且快速地编译。 为了获得 C++ 输出,我更改了我的 bison 和 flex 参数,虽然它生成了正确的结果,但编译和输出语法的 CPP 结果大约需要 1 分钟。 有没有人有解决这个问题的想法? 语法文件约6000行

C++ 编译 运行 像糖蜜一样慢是很常见的,这取决于 C++ 代码的复杂性。 C++ 编译器有很多工作要做,要把事情弄清楚。比 C 编译器要做的工作多得多。我有一些 C++ 代码需要几分钟,并且需要接近 1 GB 的 RAM 来咀嚼。

使用 bison 从 6000 行规则集中喷出的机器人生成的 LALR(1) 解析器,这并非完全出乎意料的结果。如果解析器的 运行time 性能不重要,您可以通过删除 -O 优化选项来加快速度,对于机器人生成的语法文件。这可能会加快速度。

您也可以尝试更新您的编译器。 gcc 在最近的版本中显着提高了性能,因此如果您使用的是较旧的 gcc,您可能会看到改进。

欢迎使用 C++。