我有以下语法,有人告诉我是 LR(1) 但不是 SLR(1):
S ::= a A | b A c | d c | b d a
A ::= d
我不明白这是为什么。你将如何证明这一点?
最佳答案
我没有足够的声誉来评论上述答案,我对这个问题有点晚了,但是......
我在其他地方看到过这种语法作为一个例子,而 OP 实际上打错了字。它应该是:
小号 ::= 一个 | b 一个 | |直流 |乙
一个 ::= d
即 的第一个子句小号 是 ' 一个 a',而不是 'a 一个 '。
在这种情况下,A 的 FOLLOWS 设置为 { $, a, c} 并且在状态 8 中存在 SLR 冲突。
关于parsing - 这个语法是 LR(1) 而不是 SLR(1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505717/