对于家庭作业,我得到了以下语法:
S: D
D: AbBb | BaAb
A: ε
B: ε
我用 LL(1) 计算得很好。第一组是:
S: a, b
D: a,b
A: ε
B: ε
以下套装是:
S: $
D: $
A: b
B: a,b
当我制作解析表时,示例字符串“ab”解析得很好。但是,当我尝试使用 LR(1) 解析相同的语法时,我遇到了错误。
对于项目集 0,我得到以下信息:( , 分隔前瞻终端)
Item set 0:
S: .D, $
D: .AbBb, $
D: .BaAb, $
A: ., b
B: ., a,b
如果你做表,你会清楚地看到项目集0中A和B之间存在reduce-reduce冲突。如果要求我解析字符串“ab”,解析器将不知道是否要减少我的空到A或减少到B。我做错了什么?我总是被告知 LR(1) 实际上可以解析比 LL(1) 更多的语法,那么这里有什么问题呢?如果有人可以帮助我,我将不胜感激,因为这让我发疯。谢谢