The Gateway to Computer Science Excellence
+28 votes

An LALR(1) parser for a grammar G can have shift-reduce (S-R) conflicts if and only if

  1. The SLR(1) parser for G has S-R conflicts

  2. The LR(1) parser for G has S-R conflicts

  3. The LR(0) parser for G has S-R conflicts

  4. The LALR(1) parser for G has reduce-reduce conflicts

in Compiler Design by | 5.1k views

3 Answers

+36 votes
Best answer

Both LALR(1) and LR(1) parser uses LR(1) set of items to form their parsing tables. And LALR(1) states can be find by merging LR(1) states of LR(1) parser that have the same set of first components of their items.

i.e. if LR(1) parser has $2$ states I and J with items $A \rightarrow a.bP$,$x$ and $A \rightarrow a.bP$,$y$ respectively, where $x$ and $y$ are look ahead symbols, then as these items are same with respect to their first component, they can be merged together and form one single state, let’s say $K$. Here we have to take union of look ahead symbols. After merging, State $K$ will have one single item as $A \rightarrow a.bP$,$x$,$y$ . This way LALR(1) states are formed ( i.e. after merging the states of LR(1) ).

Now, $S-R$ conflict in LR(1) items can be there whenever a state has items of the form :

A-> a.bB , p
C-> d. , b

i.e. it is getting both shift and reduce at symbol b, 
hence a conflict. 

Now, as LALR(1) have items similar to LR(1) in terms of their first component, shift-reduce form will only take place if it is already there in LR(1) states. If there is no S-R conflict in LR(1) state it will never be reflected in the LALR(1) state obtained by combining LR(1) states.

Correct Answer: $B$

edited by
Nicely Explained.
Same thing happens for RR conflict also.rt?


An LALR(1) parser for a grammar G can have shift-reduce (S-R) conflicts if and only if  The LR(1) parser for G has S-R conflicts
for rr , its not if and only if , bcoz after merging might be there will rr conflict
@Madhab @ Bikram
A-> a.bB , p
C-> d. , b

how it is getting s-r conflict if LHS of both productions are different?

It will only be possible if A-> d. , b

what if the question is

SLR(1) parser for a grammar G can have shift-reduce (S-R) conflicts if and only if?
@iarnav here conflict will create for a state ,unlike in LL(1) for non-terminal
can we merge the two states of LR(1) if state I has one more item,other than the common one,which is not present in another state J?

@meghna, No.
2 states can be merged only if they are identical.
These two states are virtually identical if they have the same number of items, the core of each item is identical, and they differ only in their lookahead sets. 

Let there are two states to be merged

1st state -

A->K.b, m

B->c. , a

2nd state-

A->K.b, n

B->c. ,b

None of these have any conflict but if you will merge them both

A->K.b, m/n

B->c. ,a/b

Now shift on b will clash with reduce move of B as in lookaheads a and b , B->c. will be placed ?
But there is also a possibility that conflict in clr and can be a sr conflict in lalr right?

@Harish Alavala

No. I think it's not possible


@Ved Sinha

There is already a S-R conflict for 2nd state. 

+13 votes
Answer is B.
LALR(1) can have conflict even if LR(1) do not contain any conflict. Conflict may arise while merging.
why not (c), in LR(0) items S-R conflict??

edit:correction, LR(1) = CLR(1) so it makes sense , so option (b) is correct
+1 vote
Option B

Related questions

Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true
52,345 questions
60,471 answers
95,275 users