11CS30006

advertisement
CS 31003: Compilers
 Difference between SLR and LR(1)
 Construction of LR(1) parsing table
 LALR parser
Bandi Sumanth
11CS30006
Date : 9/10/2013
Differences between SLR and LR(1)
●
SLR , Non SLR and LR(1) grammar
● SLR grammar
● A grammar is said to be an SLR grammar if the SLR
parsing table for the grammar has no conflicting
entries
SLR , Non SLR and LR(1) grammar
●
A→B+.C
Sj
+
A→B.+C
A→B.
Si
SLR , Non SLR and LR(1) grammar
● LR(1) grammar
A→B+.C
Sj


+
A→B.+C,=
A→B.,*
Si
If the current state is Si and + is the next token,
a shift is made leading to the state Sj
Reduction cannot be made because the lookahead symbol
* and the next token + does not match
Construction of LR(1) parsing table
●
Constructing LR(1) parsing table
● Consider the following augmented grammar
Ś → S
S → CC
C → cC|d
LR(1) sets of items
LR(1) parsing table for the grammar
LR(1) vs SLR parser
● LR(1) parser is better than SLR parser because
LR(1) accepts more languages than SLR
● SLR(1) is weak because it has no
lookahead information
● But the cost is LR(1) has more states than SLR
and thus it consumes more space
● LR(1) is impractical because its
lookahead information makes the
automaton too big
Can we retain the LR(1) automaton's
lookahead information without all its
states?
Review of LR(1)
● Each state in an LR(1) automaton is a
combination of an LR(0) state and
lookahead information.
● Two LR(1) items have the same core if
they are identical except for lookahead.
A Surprisingly Powerful Idea
● In an LR(1) automaton, we have multiple
states with the same core but different
Lookahead
● What if we merge all these states
together?
 This is called LALR parser
Lookahead LR parser
Advantages of LALR(1)
● Maintains lookahead information
● Keeps automaton small
● Resulting automaton has same size as LR(0)
automaton
The End
Download