【发布时间】:2020-08-27 18:09:09
【问题描述】:
GCC/Clang 是手写解析器。我读过一篇文章说 LR(1) 解析器 (Why can't C++ be parsed with a LR(1) parser?) 无法解析 C++。如果是这样,当 LR(1) 比递归下降更强大时,GCC/Clang 怎么会是手写的递归下降解析器?
【问题讨论】:
-
你如何定义权力?
-
@user4581301 -- LR(1) 可以解析更多递归下降的语法。
-
“LR(1) 可以解析更多递归下降的语法”在手写解析器上您可以使其解析任何语法,因为您可以根据上下文更改解析器的状态。在完全指定的 LR(1) 上,您不能这样做 - 您必须正式指定完整的语法。
-
您指向的链接似乎回答了这个问题,只是不在接受的最高答案中。此外,您似乎在问两个不同的问题:(1) GCC/Clang 如何使用手写解析器解析 C++,以及 (2) 为什么 GCC/Clang 是手写解析器。
-
这能回答你的问题吗? Why can't C++ be parsed with a LR(1) parser?
标签: c++ parsing grammar recursive-descent lr