我使用bison和flex来使用grammar.y文件生成 C 解析器。它可以在大约10秒内正确编译并快速编译。 我已经改变了我的bison和flex参数以获得C ++输出,虽然它产生了正确的结果但是编译和输出CPP语法结果大约需要1分钟。 有没有人有任何想法解决这个问题? 语法文件大约是6000行。
答案 0 :(得分:1)
将C ++编译作为糖蜜运行缓慢是很常见的,这取决于C ++代码的复杂性。 C ++编译器有很多工作要做,要弄明白。比C编译器更多的工作要做。我有一些C ++代码,需要花费几分钟时间,并接近一堆RAM,以便咀嚼。
使用机器人生成的LALR(1)解析器,野牛从6000行规则集中喷出,这并非完全是一个意想不到的结果。如果解析器的运行时性能不是很关键,那么对于机器人生成的语法文件,可以通过删除-O优化选项来加快速度。这可能会加快速度。
您也可以尝试更新编译器。 gcc在最近的版本中明显改善了它的性能,所以如果你使用旧的gcc,你可能会看到改进。
欢迎使用C ++。