【问题标题】:How does LR parsing select a qualifying grammar production (to construct the parse tree from the leaves)?LR 解析如何选择合格的语法产生式(从叶子构造解析树)?
【发布时间】:2023-03-20 07:57:01
【问题描述】:

我正在阅读 LR 解析的教程。本教程在这里使用示例语法:

S -> aABe
A -> Abc | b
B -> d

然后,为了说明解析算法的工作原理,教程在下面展示了解析单词“abbcde”的过程。

我了解在算法的每一步,都会搜索一个合格的产生式(即语法规则,如表中的第 2 列所示)以匹配字符串的一部分。但是 LR 解析如何在一组符合条件的产生式中进行选择(如表中第 3 列所示)?

【问题讨论】:

  • 巧合的是,我刚刚写了this answer。也许它对这个问题也有帮助。

标签: parsing lr


【解决方案1】:

一个字符串的 LR 解析反向追踪最右边的推导。从这个意义上说,如果您通过始终展开最右边的非终结符来导出字符串,然后向后运行该过程,那么所应用的缩减的顺序就是您将得到的。 (在你的例子中试试这个 - 不是很好吗?)

LR 解析器实际执行此操作的具体机制涉及使用一个解析自动机,该自动机跟踪语法产生中解析发生的位置,以及一些前瞻信息。有几种不同风格的 LR 解析器(LR(0)、SLR(1)、LALR(1)、LR(1) 等),它们在自动机的结构方式以及它们如何使用前瞻信息方面有所不同。您可能会发现搜索有关这些自动机如何工作的教程很有帮助,因为这是 LR 解析器实际工作的核心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    相关资源
    最近更新 更多