为什么 LR(1) DFA 没有 Shift/Reduce 冲突?

Why does a LR(1) DFA doesn't have a Shift/Reduce conflict?

鉴于此语法:

对于 LR(0) DFA 我可以清楚地看到为什么这是一个 Shift/Reduce 冲突:

(部分 DFA)

但是我不明白为什么LR(1) DFA解决了这个问题?

(部分 DFA)

对我来说,这仍然是一个移位减少冲突,因为前瞻符号与 B 规则完全相同? LR(1) 解析器应该如何区分它们,而不是 LR(0) 解析器?

因为如果前瞻是a.

,你只能减少B→ε

在LR(0)中你不能考虑前瞻,但在LR(1)中你可以根据下一个输入符号来决定,这里的规则很简单:如果下一个符号是 b,移位,如果是a,做B.

的epsilon缩减