retagged by
5,026 views

4 Answers

3 votes
3 votes
The basic difference between the parser tables generated with SLR vs LR, is that reduce actions are based on the Follows set for SLR tables. This can be overly restrictive, ultimately causing a shift-reduce conflict.

An LR parser, on the other hand, bases reduce decisions only on the set of terminals which can actually follow the non-terminal being reduced. This set of terminals is often a proper subset of the Follows set of such a non-terminal, and therefore has less chance of conflicting with shift actions.

LR parsers are more powerful for this reason.
3 votes
3 votes

When the input has a syntax error, the LALR parser may do some additional (harmless) reductions before detecting the error than would the canonical LR parser. And the SLR parser may do even more. 

- Wikipedia(https://en.wikipedia.org/wiki/LR_parser#Lookahead_sets)

Hence, the error detecting capabilities of LALR parser (in general) is superior to that of SLR parsers. The LR(0) parsing table has fewer number of blank spaces than both LALR and SLR parsing tables, thereby making LR(0) parsers occupy the last position when comparing with the other two.

Thus, in the decreasing order of error detecting capabilities we have:

LALR(1) > SLR(1) >> LR(0)

1 votes
1 votes

I guess LALR(1) Since Error Detecting Capablity of lalr parser is the highest (because of more Blank entries in the LALR tables)

Related questions

0 votes
0 votes
1 answer
2
1 votes
1 votes
2 answers
3
Nishu asked Mar 3, 2016
9,310 views
Consider the following grammer:S- aAb | ScA- d | Sd | SThe above grammer is:a) SLR(1)b) LL(1)c) LR(0)d) none of the above