我试着理解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
谢谢。
答案 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 •