0% found this document useful (0 votes)
38 views16 pages

Module-2-Second Half

This document discusses LR parsing techniques. It covers the basics of LR parsing including LR(0) and LR(1) items and item sets. It also discusses constructing the LR parsing tables and compares different LR parsing approaches like SLR, CLR, and LALR.

Uploaded by

rrrkalki
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views16 pages

Module-2-Second Half

This document discusses LR parsing techniques. It covers the basics of LR parsing including LR(0) and LR(1) items and item sets. It also discusses constructing the LR parsing tables and compares different LR parsing approaches like SLR, CLR, and LALR.

Uploaded by

rrrkalki
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

LR Parsing

• The most prevalent type of bottom-up parsers


• LR(k), mostly interested on parsers with k<=1
• Why LR parsers?
• Table driven
• Can be constructed to recognize all programming language constructs
• Most general non-backtracking shift-reduce parsing method
• Can detect a syntactic error as soon as it is possible to do so
• Class of grammars for which we can construct LR parsers are superset of
those which we can construct LL parsers
States of an LR parser
• States represent set of items
• An LR(0) item of G is a production of G with the dot at some position
of the body:
• For A->XYZ we have following items
• A->.XYZ
• A->X.YZ
• A->XY.Z
• A->XYZ.
• In a state having A->.XYZ we hope to see a string derivable from XYZ next on
the input.
• What about A->X.YZ?
Constructing canonical LR(0) item sets
• Augmented grammar:
• G with addition of a production: S’->S
• Closure of item sets:
• If I is a set of items, closure(I) is a set of items constructed from I by the
following rules:
• Add every item in I to closure(I)
• If A->α.Bβ is in closure(I) and B->γ is a production then add the item B->.γ
to clsoure(I).
• Example:
I0=closure({[E’->.E]}
E’->E E’->.E
E -> E + T | T E->.E+T
T -> T * F | F E->.T
T->.T*F
F -> (E) | id T->.F
F->.(E)
F->.id
Constructing canonical LR(0) item sets
(cont.)
• Goto (I,X) where I is an item set and X is a grammar
symbol is closure of set of all items [A-> αX. β] where
[A-> α.X β] is in I
• Example I1
E’->E.
E E->E.+T
I0=closure({[E’->.E]}
E’->.E I2
E->.E+T T
E’->T.
E->.T T->T.*F
T->.T*F I4
T->.F ( F->(.E)
F->.(E) E->.E+T
E->.T
F->.id T->.T*F
T->.F
F->.(E)
F->.id
Canonical LR(0) items
Void items(G’) {
C= CLOSURE({[S’->.S]});
repeat
for (each set of items I in C)
for (each grammar symbol X)
if (GOTO(I,X) is not empty and not in C)
add GOTO(I,X) to C;
until no new set of items are added to C on a round;
}
LR-Parsing model

a1 … ai … an $
INPUT

Sm LR Parsing Program Output


Sm-1

$
ACTION GOTO
LR(0)
canonical
collections
LR(0) Parsing table
LR(0) Parsing
SLR Parsing
Canonical
Collections

Table in
next page
SLR Parsing
Table
SLR Parsing
CLR
Canonical
Collections
CLR Parsing
Table
LALR
Parsing Table
With LALR (lookahead LR) parsing,
we attempt to reduce the number
of states in an
LR(1) parser by merging similar stat
es. This reduces the number of stat
es to the same as
SLR(1), but still retains some of the
power of the LR(1) lookaheads
LALR Parsing

You might also like