LR解析系统中的R字母

时间:2018-03-12 16:22:56

标签: parsing

我试着理解LR解析的工作原理。 L表示解析器在一个方向上读取输入文本而不进行备份;该方向通常在每行内从左到右,并在整个输入文件的行中从上到下。

R表示解析器反向生成最右边的派生。我的问题在于我无法理解它的意思。

我知道这个语法最正确的推导: E→E + E | E * E | (E)| ID

如下:

E→E + E→E + E * E→E + E * id3→E + id2 * id3→id1 + id2 * id3

谢谢。

1 个答案:

答案 0 :(得分:0)

LR解析器发现最右边的派生向后。因此,在您的示例中,它将发现的派生顺序为:

stack • input          derivation
-----------------      ----------
• id1 + id2 * id3      E → id1
E + • id2 * id3        E → id2
E + E * • id3          E → id3
E + E * E •            E → E * E
E + E •                E → E + E 
E •