CS 31003: Compilers

28
CS 31003: Compilers Difference between SLR and LR(1) Construction of LR(1) parsing table LALR parser Bandi Sumanth 11CS30006 Date : 9/10/2013

description

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 - PowerPoint PPT Presentation

Transcript of CS 31003: Compilers

Page 1: CS 31003: Compilers

CS 31003: Compilers

Difference between SLR and LR(1) Construction of LR(1) parsing table LALR parser

Bandi Sumanth11CS30006Date : 9/10/2013

Page 2: CS 31003: Compilers

Differences between SLR and LR(1)

Page 3: CS 31003: Compilers

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

Page 4: CS 31003: Compilers

SLR , Non SLR and LR(1) grammar

A → B + . C A → B . + C A → B .

+

Si

Sj

Page 5: CS 31003: Compilers

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 . + C , = A → B . , *

+

Si

Sj

Page 6: CS 31003: Compilers

Construction of LR(1) parsing table

Page 7: CS 31003: Compilers

Constructing LR(1) parsing table

● Consider the following augmented grammar

Ś → SS → C CC → c C | d

Page 8: CS 31003: Compilers

LR(1) sets of items

Page 9: CS 31003: Compilers

LR(1) parsing table for the grammar

Page 10: CS 31003: Compilers

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

Page 11: CS 31003: Compilers

Can we retain the LR(1) automaton's lookahead information without all its states?

Page 12: CS 31003: Compilers

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.

Page 13: CS 31003: Compilers

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

Page 14: CS 31003: Compilers
Page 15: CS 31003: Compilers
Page 16: CS 31003: Compilers
Page 17: CS 31003: Compilers
Page 18: CS 31003: Compilers
Page 19: CS 31003: Compilers
Page 20: CS 31003: Compilers
Page 21: CS 31003: Compilers
Page 22: CS 31003: Compilers
Page 23: CS 31003: Compilers
Page 24: CS 31003: Compilers
Page 25: CS 31003: Compilers
Page 26: CS 31003: Compilers
Page 27: CS 31003: Compilers

Advantages of LALR(1)

● Maintains lookahead information

● Keeps automaton small

● Resulting automaton has same size as LR(0) automaton

Page 28: CS 31003: Compilers

The End