Mat*_*man 5 compiler-construction parsing parser-generator
我听说"真正的编译器编写者"使用自己的手工解析器而不是使用解析器生成器.我也听说过解析器生成器不会为真实语言剪切它.据说,使用解析器生成器很难实现许多特殊情况.我对此表示怀疑:
所以我的问题是:使用解析器生成器编写生成编译器,或使用解析器生成器被编译器社区认为是一个糟糕的设计决策是否合理?
就其价值而言,我相信 GCC 在 4.0 之前使用了解析器生成器,然后改用手写的递归下降解析器,因为它更容易维护和扩展。
解析器生成器确实针对“真正的”语言进行了“剪切”,但是将语法转换为可行的东西的工作量呈指数级增长。
编辑:链接到 GCC 文档,详细说明了更改的原因以及收益与成本分析:http://gcc.gnu.org/wiki/New_C_Parser。