CS 488 Spring 2012 Lecture 4
description
Transcript of CS 488 Spring 2012 Lecture 4
CS 488 Spring 2012
Lecture 4
Bapa RaoCal State L.A.
Reverse rightmost derivation• ETT*FT*idF*idid*id• Reduction
– Replace RHS of production with LHS• Handle
– Substring (terms and non-terms) that matches the body of a production
– Reduction by handle represents one step along a reverse rightmost derivation
• “a handle” vs “the handle”– Ambiguity!– >1 rightmost derivation of αβw– w can only have terminals
Four possible actions of a shift-reduce parser
• Shift– Token on to top of stack
• Reduce– Handle to non-terminal on right of production– Handle always on top of stack– Never need to go “inside” stack to find handle
• Accept• Error
• Case 1: expand A via nonterminal B• Case 2: expand A and B directly to terminal
• In both cases, handle on top of stack
Shift-reduce conflicts• Dangling-else
Stmt if expr then stmt | if expr then stmt else stmt | otherSTACK has … if expr then stmtINPUT has else … $Should you shift the else or reduce?
• Array references and procedure calls have same syntas– P(a,b)– A(I,j)
Simple LR parsing
• Can handle nearly all programming languages• Most general method of nonbacktracking
parsing, still efficient• Earliest syntax error detection• Proper superset of LL parsable grammars
• Hard to construct by hand
Items and Closure• LR(0) item is a production of grammar with a dot somewhere on RHS
– How much have you seen on RHS• Canonical LR(0) collection• Build a DFSA: LR(0) automaton• States represent set of items• Augmented Grammar
– S’ S• Closure is Recursive-transitive closure of an item from the grammar• GOTO transition function• Kernel and non-kernel items
– Kernel: S’ .S and all items whose dots are not at left end– Non-kernel: all items with dots at left end except for S’ S
• GOTO transition function– GOTO(Item,GrammarSymbol) Closure of set of
all items such GrammarSymbol is reduced
• Kernel and non-kernel items– Kernel: S’ .S and all items whose dots are not at
left end– Non-kernel: all items with dots at left end except
for S’ S