我听说“真正的编译器编写者”使用他们自己的手工解析器而不是使用解析器生成器。我还听说解析器生成器不适合现实世界的语言。据推测,有许多特殊情况很难使用解析器生成器来实现。我对此表示怀疑:
- 从理论上讲,GLR 解析器生成器应该能够处理大多数编程语言设计(可能 C++ 除外......)
- 我知道至少一种使用解析器生成器的生产语言:Ruby [1]。
- 当我在学校上编译器课程时,我们使用了解析器生成器。
所以我的问题是:使用解析器生成器编写生产编译器是否合理,或者使用解析器生成器是否被编译器社区认为是一个糟糕的设计决策?