280 likes | 398 Views
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
E N D
CS 31003: Compilers Difference between SLR and LR(1) Construction of LR(1) parsing table LALR parser Bandi Sumanth 11CS30006 Date : 9/10/2013
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 A → B . A → B + . C Sj Si
SLR , Non SLR and LR(1) grammar • LR(1) grammar • 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 + A → B . + C , = A → B . , * A → B + . C Sj Si
Constructing LR(1) parsing table Ś → S S → C C C → c C | d • Consider the following augmented 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 lookaheadinformation makes the automaton too big
Can we retain the LR(1) automaton's lookaheadinformation without all its states?
Review of LR(1) • Each state in an LR(1) automaton is a combination of an LR(0) state and lookaheadinformation. • 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