不确定这个 LR(1) 文法是否有 shift/reduce 冲突
Not sure if this LR(1) grammar has shift/reduce conflict
我正在尝试解决有关 LR(1) 语法的问题:
S->AA
A->Aa
A-> b
我卡在状态 4 时:
S-> AA. ,$
A-> A.a ,$
A->.Aa ,$
A->.a ,$
a
和 A
转移到其他状态并且 A
在相同状态下减少我应该认为这个语法不是 LR(1) 和 SLR(1) 因为这场冲突?
您需要检查 shift-reduce(SR) 或 reduce-reduce(RR) 问题
在你提到的状态 4 中只有一个 reduce 条目 S-> AA., $
因此 没有 RR 问题。检查 SR :
LR(1) 的 S-> AA.,$
的减少条目将在 $
和 SLR(1) 的 follow(S),即 $
。
仅检查终端而不检查变量的班次条目。变量输入是在 table 的 GOTO 部分进行的,而班次输入是在 table 的 ACTION 部分进行的。在 SLR(1 ) 和 LR(1) 的情况下,移位仅在终端 a
。
所以你提供的state是没有问题的(既不是SR也不是RR)。
我正在尝试解决有关 LR(1) 语法的问题:
S->AA
A->Aa
A-> b
我卡在状态 4 时:
S-> AA. ,$
A-> A.a ,$
A->.Aa ,$
A->.a ,$
a
和 A
转移到其他状态并且 A
在相同状态下减少我应该认为这个语法不是 LR(1) 和 SLR(1) 因为这场冲突?
您需要检查 shift-reduce(SR) 或 reduce-reduce(RR) 问题
在你提到的状态 4 中只有一个 reduce 条目 S-> AA., $
因此 没有 RR 问题。检查 SR :
LR(1) 的 S-> AA.,$
的减少条目将在 $
和 SLR(1) 的 follow(S),即 $
。
仅检查终端而不检查变量的班次条目。变量输入是在 table 的 GOTO 部分进行的,而班次输入是在 table 的 ACTION 部分进行的。在 SLR(1 ) 和 LR(1) 的情况下,移位仅在终端 a
。
所以你提供的state是没有问题的(既不是SR也不是RR)。