Parsing LR解析如何选择符合条件的语法产品(从叶子构造解析树)?

Parsing LR解析如何选择符合条件的语法产品(从叶子构造解析树)?,parsing,lr,Parsing,Lr,我正在阅读LR解析的教程。本教程在此处使用了一个语法示例: S -> aABe A -> Abc | b B -> d 然后,为了说明解析算法的工作原理,本教程将在下面展示解析单词“abbcde”的过程 我知道在算法的每个步骤中,都会搜索符合条件的结果(即表中第2列所示的文法规则),以匹配字符串的一段。但是LR解析如何在一组合格的结果中进行选择(如表中第3列所示)字符串的LR解析反向追踪最右边的派生。从这个意义上说,如果您总是通过展开最右边的非终结符来派生字符串,然后向后运

我正在阅读LR解析的教程。本教程在此处使用了一个语法示例:

S -> aABe
A -> Abc | b
B -> d
然后,为了说明解析算法的工作原理,本教程将在下面展示解析单词“abbcde”的过程


我知道在算法的每个步骤中,都会搜索符合条件的结果(即表中第2列所示的文法规则),以匹配字符串的一段。但是LR解析如何在一组合格的结果中进行选择(如表中第3列所示)

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

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

巧合的是,我刚刚写道。也许这也有助于解决这个问题。