【发布时间】:2015-03-10 23:13:13
【问题描述】:
我正在尝试解决关于 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) 因为这个冲突吗?
【问题讨论】:
-
没有。减少只有在
$作为前瞻时才有可能,并且没有移位/移位冲突这样的事情,因为移位只是移位。 -
@rici 不意味着这个 gammar 是 LR(1)? ,并且可以在一个状态下进行 shift 和 reduce 吗?
-
您可以在一种状态下使用 shift 和 reduce 或多个 reduce,只要您可以使用前瞻来决定要采取的操作。整个语法我没仔细看,不过这个状态是没有问题的。
-
谁能提供更多解释?
-
你是怎么进入这个状态的?我为这个语法构建了 LR1 自动机,它没有这样的状态。 @EJP
标签: parsing compiler-construction programming-languages grammar lr