gpt4 book ai didi

c++ - 为什么不能使用 LEX/YACC 为编译器解析 C++?

转载 作者:太空狗 更新时间:2023-10-29 21:45:57 26 4
gpt4 key购买 nike

我知道这是有原因的,但我还没有找到关于为什么 LEX/YACC 不能用于 C++ 的简洁明了的解释。我也很想知道 LEX/YACC 是否可以用于解析 Objective C,或者该语言是否存在同样的问题。 (请注意,我指的是 ObjC,而不是 Obj-C++。)谢谢。

最佳答案

当然可以使用 lex 和 yacc 来解析 c++,但您还需要许多其他机器。曾几何时,gcc 使用基于 yacc 的解析器,但后来被手工构建的递归下降解析器所取代,后者被认为更易于维护,并且更容易生成有意义的语法错误。出于同样的原因,clang 使用手工构建的递归下降解析器。

Bison 可以构建 GLR 解析器,这使得探索替代解析(消歧规则所必需)变得容易得多。请参阅 Ira Baxter 对 Are GCC and Clang parsers really handwritten? 的回答有关 C++ 的 GLR 解析的一些证词。

另请参阅 Matthew Slattery 对同一问题的回答中的链接,了解 gcc 和 clang 的一些背景知识;特别是,在 gcc wiki 上可以找到 2008 年替换 gcc 中旧的 yacc 解析器的成本和 yield 摘要。 (从 Matthew Slattery 复制的链接)。

关于c++ - 为什么不能使用 LEX/YACC 为编译器解析 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com