且仅当且仅当语法G的LALR(1)解析器可能具有Shift-reduce(SR)冲突
(A) G的SLR(1)解析器存在SR冲突
(B) G的LR(1)解析器有SR冲突
(C) G的LR(0)解析器存在SR冲突
(D) G的LALR(1)解析器具有减少-减少冲突答案: (B)
解释:
LALR(1)和LR(1)解析器都使用LR(1)项集来形成其解析表。可以通过合并具有相同项的第一组件的LR(1)解析器的LR(1)状态来找到LALR(1)状态。
即如果LR(1)解析器具有2个状态I和J,分别具有项A-> a.bP,x和A-> a.bP,y,其中x和y是超前符号,则这些项与关于它们的第一个组成部分,它们可以合并在一起并形成一个单一的状态,比方说K。在这里,我们必须采用前瞻性符号的并集。合并后,状态K将只有一个项,即A-> a.bP,x,y。这样就形成了LALR(1)状态(即在合并LR(1)的状态之后)。
现在,只要状态具有以下形式的项,就可以在LR(1)项中出现SR冲突:
A-> a.bB , p
C-> d. , b
i.e. it is getting both shift and reduce at symbol b,
hence a conflict.
现在,由于LALR(1)在其第一部分上具有类似于LR(1)的项,因此只有在LR(1)状态下已经存在移位减少形式时,才会发生移位减少形式。如果在LR(1)状态中没有SR冲突,它将永远不会反映在通过组合LR(1)状态获得的LALR(1)状态中。
注意:但是,此合并过程可能会引入RR冲突,因此语法将不会是LALR(1)。这个问题的测验