140 likes | 162 Views
Bottom-Up Parsing. David Woolbright. The Parsing Problem. Produce a parse tree starting at the leaves The order will be that of a rightmost derivation The most common bottom-up parsing algorithms are in the LR family L – Read the input left to right R – Trace out a rightmost parse tree.
E N D
Bottom-Up Parsing David Woolbright
The Parsing Problem • Produce a parse tree starting at the leaves • The order will be that of a rightmost derivation • The most common bottom-up parsing algorithms are in the LR family L – Read the input left to right R – Trace out a rightmost parse tree
The Parsing Problem • Given a right sentential form, , determine what substring of is the right-hand side of the rule in the grammar that must be reduced to produce the previous sentential form in the right derivation • The correct RHS is called the handle
A Small example E E + T | T T T * F | F F ( E ) | id A Rightmost Derivation: E E + T E + T * F E + T * id E + F * id E + id * id T + id * id F + id * id id + id * id
Definition • Def: is the handle of the right sentential form = w if and only if S =>*rm Aw =>rm w E E + T Let = w be E + T * F E + F * id E + T * id What is ? E + F * id What is w ? What is ? What is A?
Definition • Def: is a phrase of the right sentential form if and only if S =>* = 1A2 =>+ 12 E E + T Let = 1A2 be E + T * FE + T E + T * id Let A be T. What is 1 ?2 ? What can be?
Definition • Def: is a simple phrase of the right sentential form if and only if S =>* = 1A2 => 12 E E + T Let = 1A2 be E + T * FE + T E + T * id Let A be T. What is 1 ?2 ? What can be? • The handle of any rightmost sentential form is its leftmost simple phrase
Think Parse Tree! E T F E + T * id T F Id id • Three internal nodes = three phrases in the sentential form E + T * id Phrases: Id T * id E + T * id
LR Parsers • The handle of a right sentential form is its leftmost simple phrase • Given a parse tree, it is now easy to find the handle • Parsing can be thought of as handle pruning
LR Parsers Use Shift-Reduce • Shift-Reduce Algorithms • Reduce: replace the handle on the top of the parse stack with its corresponding LHS • Shift: move the next token to the top of the parse stack
LR Parsers • Advantages of LR parsers: • Work for most grammars that describe programming languages. • Detect syntax errors as soon as it is possible. • The LR class of grammars is a superset of the class of grammars parsable by LL parsers.
The LR Algorithm • An LR configuration stores the state of an LR parser (S0X1S1X2S2…XmSm, aiai+1…an$) S0 = Start state Xm = symbol m Sm = state m ai = input symbol i