Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
MIT 6 035MIT 6.035 Introduction to Shift-Reduce Parsing
Martin Rinard Laboratory for Computer Science
Massachusetts Institute of Technology
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 1
Orientation
• Specify Syntax Using Context-Free Grammar Expr → Expr Op Expr • Nonterminals • Terminals
Expr → Expr Op Expr Expr → (Expr)
Expr → - Expr • Productions
• Given a grammar, Parser Generator produces a
p p Expr → num Op → +
Generator produces a parser • Starts with input string
Op → -Op → *
• Produces parse tree
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 2
t
• w•
Today’s Lecture
• How generated parser works H d• How parser generator produces parser
• Central mechanism Pushdown automaton hich implements Pushdown automaton, which implements
• Shift-reduce parser
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 3
t
•
t t t t
C i f
Shift:
A h i i
Pushdown Automata • Consists of
• Pushdown stack (can have terminals and nonterminals) Finite state automaton controlFinite state automaton control
• Can do one of three actions (based on state and input): • Shift:
• Shift current input symbol from input onto stack • Reduce:
• If symbols on top of stack match right hand side of some grammar production NT → β
• Pop symbols (β) off of the stack
• Push left hand side nonterminal (NT) onto stack • Accept the input string
•
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 4
p
* ( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +
Stack
Op → -Op → *
Input String
* ( + num )numnum
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 5
p
* ( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → + Op → -Op → *
* ( + num )numnum
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 6
p
* ( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → + Op → -Op → *
FTSH
IF
* ( + num )numnum
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 7
p
* ( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +
num Op → -Op → *
FTSH
IF
* ( + num )num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 8
Shift-Reduce Parser ExamplepExpr → Expr Op Expr
Expr → (Expr)Expr → - Expr
Expr → numOp → +
num
pOp → -Op → *
UC
E
* ( + )RE
DU
* ( + num )numR
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 9
Expr → nump
* ( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr)
Op → -Op → *Expr
UC
E
num
RE
DU
* ( + num )numR
Expr → - ExprExpr → num
Op → +
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 10
p
* ( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → + Op → -Op → *Expr
FT
numSHIF
* ( + num )num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 11
p
( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → + Op → -Op → *Expr
*
FT
numSHIF
( + num )num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 12
Shift-Reduce Parser ExamplepExpr → Expr Op Expr
Expr → (Expr)Expr → - Expr
Expr → numOp → +pOp → -Op → *Expr
Op
UC
E
( + )
num
RE
DU
*
( + num )numR
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 13
p
( + )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → + Op → -Op → *Expr
Op
FT
num *SHIF
( + num )num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 14
p
+ )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +( Op → -Op → *Expr
Op
FT
num *SHIF
+ num )num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 15
p
+ )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +( Op → -Op → *Expr
Op
FT
num *SHIF
+ num )num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 16
p
+ )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +(
num
Op → -Op → *Expr
Op
FT
num *SHIF
+ num )
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 17
p
FT
+ )
SHIFShift -R e duce P a rser Exam p lep
Expr → Expr Op Expr Expr → ( Expr) Expr → - Expr
Expr → num Op → +(
Expr
Op → -Op → *Expr
Op
UC
E
num * num
RE
DU
+ num )R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 18
p
+ )
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +(
Expr
Op → -Op → *Expr
Op
FT
num *SHIF
num
+ num )
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 19
p
)
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr)+ Expr → - Expr
Expr → num Op → +(
Expr
Op → -Op → *Expr
Op
FT
num *SHIF
num
num )
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 20
p
FT
)
SHIFShift -R e duce P a rser Exam p lep
Expr → Expr Op Expr Expr → ( Expr)Op Expr → - Expr
Expr → num Op → +(
Expr
Op → -Op → *Expr
Op
UC
E
num * num
RE
DU
+
num )R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 21
p
)
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr)Op Expr → - Expr
Expr → num Op → +(
Expr
Op → -Op → *Expr
Op
FT
num *SHIF
num +
num )
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 22
p
)
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) num Op
Expr → - Expr Expr → num
Op → +( Expr
Op → -Op → *Expr
Op
FT
num *SHIF
num +
)
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 23
p
FT
)
SHIFShift -R e duce P a rser Exam p lep
Expr → Expr Op Expr Expr → ( Expr)Op
Expr
Expr → - Expr Expr → num
Op → +( Expr
Op → -Op → *Expr
Op
UC
E
num * num +
RE
DU
num
)R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 24
Shift-Reduce Parser ExamplepExpr → Expr Op Expr
Expr → (Expr)Expr → - Expr
Expr → numOp → +(
ExprExpr
Expr
pOp → -Op → *Expr
OpExprOp
FTUC
E
)
num *SHIF
num +
RE
DU
num
)R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 25
p
)
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +( Expr
Expr
Op → -Op → *Expr
Op Expr
Op
FT
num *SHIF
num + num
)
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 26
p
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr)) Expr → - Expr
Expr → num Op → +( Expr
Expr
Op → -Op → *Expr
Op Expr
Op
FT
num *SHIF
num + num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 27
Shift-Reduce Parser ExamplepExpr → Expr Op Expr
Expr → (Expr)Expr → - Expr
Expr → numOp → +E
)Expr p
Op → -Op → *Expr
Op( Op
ExprExpr
UC
E Expr
RE
DU
num * num + num
R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 28
p
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +E
)Expr
Op → -Op → *
Expr
Op
( Op
Expr Expr
Expr
UC
E Expr
RE
DU
num * num + num
R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 29
p
Shift -R e duce P a rser Exam p lep Expr → Expr Op Expr
Expr → ( Expr) Expr → - Expr
Expr → num Op → +E
)Expr
Op → -Op → *
Expr
Op
( Op
Expr Expr
Expr
EPT
! Expr
AC
CE
num * num + num
A
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 30
t t t t
• s sequences•
Basic Idea
• Goal: reconstruct parse tree for input string R d i f l f i h• Read input from left to right
• Build tree in a bottom-up fashion Use tack to hold pending of terminals Use stack to hold pending sequences of terminals and nonterminals
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 31
•
•
t t t t
Potential Conflicts
• Reduce/Reduce Conflict T f h k h RHS f l i l• Top of the stack may match RHS of multiple productions
• Which production to use in the reduction?Which production to use in the reduction? • Shift/Reduce Conflict
• Stack may match RHS of productionStack may match RHS of production • But that may not be the right match • May need to shift an input and later find aMay need to shift an input and later find a
different reduction
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 32
→
+
Conflicts
•Original Grammar •New Grammar Expr → Expr Op Expr Expr → ( Expr)
Expr → Expr Op Expr Expr → Expr - Expr Expr ( Expr )
Expr → - Expr Expr → num O
Expr → ( Expr )
Expr → Expr -Expr → num Op → +
Op → -Op → *
Expr → num Op → + Op → -p Op → *
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 33
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - Expr Expr → ( Expr ) Expr → Expr -
Expr → num Op → + Op → -Op → *Op →
- numnum
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 34
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - Expr Expr → ( Expr ) Expr → Expr -
Expr → num Op → + Op → -Op → *
FT
Op →
SHIF
- numnum
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 35
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - Expr Expr → ( Expr ) Expr → Expr -
Expr → num
num Op → + Op → -Op → *
FT
Op →
SHIF
- num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 36
*
p
FTSH
IFConflicts
Expr → Expr Op Expr Expr → Expr - Expr
Expr → ( Expr ) Expr → Expr -
Expr → num
Expr Op → + Op → -Op → *
UC
E Op →
RE
DU
num
- numR
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 37
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - Expr Expr → ( Expr ) Expr → Expr -
Expr → num
Expr Op → + Op → -Op → *
FT
Op →
SHIF
num
- num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 38
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - Expr Expr → ( Expr ) Expr → Expr -
Expr → num
Expr
- Op → + Op → -Op → *
FT
Op →
SHIF
num
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 39
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprOptions: Expr → (Expr) Expr → Expr -
Expr → num
Options: Reduce Reduce
Expr
- Op → + Op → -Op → *
Shift
Op →
num
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 40
Shift/Reduce/Reduce ConflictExpr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr)Expr → Expr -
Expr → num
What Happens if ChooseReduce
Expr-
pOp → +Op → -Op → *Op → *
UC
E
num
RE
DU
numR
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 41
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose Reduce
Op → + Op → -Op → *
Expr
Expr Op →
T
num -
SHIF
T
numS
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 42
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose Reduce
Op → + Op → -Op → *
Expr
num
Expr Op →
T
num -
SHIF
TS
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 43
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose Reduce
Op → + Op → -Op → *
Expr
Expr
Expr Op →
UC
E
num -
RE
DU
num
R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 44
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose Reduce
Op → + Op → -Op → *
Expr
Expr
Expr Op →
S!
num -
FAIL
S
num
F
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 45
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprBoth of These Expr → (Expr) Expr → Expr -
Expr → num
Both of These Actions Work
Reduce
Expr
- Op → + Op → -Op → *
Shift
Op →
num
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 46
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Reduce
Expr
- Op → + Op → -Op → *Op →
num
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 47
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Reduce
Expr
Op Op → + Op → -Op → *Op →
UC
E
num -
RE
DU
numR
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 48
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Reduce num
Expr
Op Op → + Op → -Op → *Op →
T
num -
SHIF
TS
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 49
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Reduce Expr
Expr
Op Op → + Op → -Op → *Op →
UC
E
num -
RE
DU
num
R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 50
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Reduce
Op Op → + Op → -Op → *
Expr
Expr
Expr Op →
UC
E
num -
RE
DU
num
R
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 51
*
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Reduce
Op Op → + Op → -Op → *
Expr
Expr
Expr Op →
EPT
num -
AC
CE
num
A
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 52
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Shift
Expr
- Op → + Op → -Op → *Op →
FT
num
SHIF
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 53
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → numnum
What Happens if Choose
Shift
Expr
- Op → + Op → -Op → *Op →
FT
num
SHIF
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 54
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → numExpr
What Happens if Choose
Shift
Expr
- Op → + Op → -Op → *Op →
UC
E
num
RE
DU
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 55
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Shift Op → + Op → -Op → *
ExprExpr
Expr
Op →
UC
E
num -
RE
DU
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 56
*
p
Conflicts Expr → Expr Op Expr
Expr → Expr - ExprWhat Happens if Expr → (Expr) Expr → Expr -
Expr → num
What Happens if Choose
Shift Op → + Op → -Op → *
ExprExpr
Expr
Op →
EPT
num -
AC
CE
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 57
*
/
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprThis Shift/Reduce Conflict Expr → (Expr) Expr → Expr -
Expr → num
Reflects Ambiguity in Grammar
Expr
- Op → + Op → -Op → *Op →
num
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 58
*
-/
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr ExprThis Shift/Reduce Conflict Expr → (Expr) Expr → Expr -
Expr → num
Reflects Ambiguity in Grammar
Expr
- Op → + Op → -Op → *Op →
Eliminate by Hacking Grammar
num Grammar
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 59
*
/
p
Shift/Reduce/Reduce Conflict Expr → Expr Op Expr
Expr → Expr - ExprThis Shift/Reduce Expr → (Expr) Expr → Expr -
Expr → num
Conflict Can Be Eliminated By Lookahead of One
Expr
- Op → + Op → -Op → *
Symbol
Op →
Parser Generator Should Handle It
num
num
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 60
Which Production to Reduce
Constructing a Parser
• We will construct version with no lookahead • Key DecisionsKey Decisions
• Shift or Reduce • Which Production to Reduce
• Basic Idea • Build a DFA to control shift and reduce actions • In effect, convert grammar to pushdown
automaton • Encode finite state control in parse table
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 61
State Stack finite state
Parser State
• Input Token Sequence ($ for end of input) • Current State from Finite State AutomatonCurrent State from Finite State Automaton • Two Stacks
• State Stack (implements finite state automaton)(implements automaton) • Symbol Stack (terminals from input and
nonterminals from reductions)
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 62
•
t t t t
••
• s•
Integrating Finite State Control
• Actions P h S b l d S O S k• Push Symbols and States Onto Stacks
• Reduce According to a Given Production AcceptAccept
• Selected action is a function of Current input Current input
• Current state of finite state control • Each action specifies next stateEach action specifies next state • Implement control using parse table
symbol
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 63
Parse Tables
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
• Implements finite state control• At each step, look up
T bl [ f k] [ i b l]• Table[top of state stack] [ input symbol]• Then carry out the action
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 64
Parse Table Example
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
S → X $ (1)GrammarInputState Stack Symbol Stack
S → X $ (1)X → (X ) (2)X → ( ) (3)
(())
Xs0 Xs0
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 65
Parser Tables
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
• Shift to sn• Push input token into the symbol stack• Push sn into state stack• Advance to next input symbol
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 66
Parser Tables
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
• Reduce (n)• Pop both stacks as many times as the number
f b l th RHS f lof symbols on the RHS of rule n• Push LHS of rule n into symbol stack
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 67
Parser Tables
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
• Reduce (n) (continued)• Look up
T bl [t f th t t t k][t f b l t k]• Table[top of the state stack][top of symbol stack]• Push that state (in goto part of table) onto state
stackstack
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 68
Parser Tables
ACTION GotoState ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
• Accept• Stop parsing and report success
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 69
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
(())$
X → ( ) (3)s0
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 70
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
(())$
X → ( ) (3)s0
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 71
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
())$
s2 X → ( ) (3)s0 (s2
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 72
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
())$
s2 X → ( ) (3)s0 (s2
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 73
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
))$
s2 (s2
X → ( ) (3)s0 (s2 (
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 74
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
))$
s2 (s2
X → ( ) (3)s0 (s2 (
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 75
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
)$
s2 (s2s5
)X → ( ) (3)
s0 (s2 (
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 76
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
InputState Stack Symbol Stack Grammar
)$
s2 (s2s5
)S → X $ (1)X → (X ) (2)X → ( ) (3)
s0 (s2 ( X → ( ) (3)
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 77
Step One: Pop StacksACTION Goto
State ( ) $ X
p p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
InputState Stack Symbol Stack Grammar
)$
s2 (s2s5
)S → X $ (1)X → (X ) (2)X → ( ) (3)
s0 (s2 ( X → ( ) (3)
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 78
Step One: Pop StacksACTION Goto
State ( ) $ X
p p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
State Stack Symbol Stack Input Grammar
)$ S → X $ (1)X → (X ) (2)X → ( ) (3)s2 X → ( ) (3)
s0 (s2
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 79
Step Two: Push NonterminalACTION Goto
State ( ) $ X
p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
)$
s2 X → ( ) (3)s0 (s2
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 80
Step Two: Push NonterminalACTION Goto
State ( ) $ X
p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
)$
s2 X X → ( ) (3)s0 (s2 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 81
Step Three: Use Goto, Push New StateACTION Goto
State ( ) $ X
p ,
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
)$
s2 X X → ( ) (3)s0 (s2 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 82
Step Three: Use Goto, Push New StateACTION Goto
State ( ) $ X
p ,
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
)$
s2 Xs3
X → ( ) (3)s0 (s2 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 83
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
)$
s2 Xs3
X → ( ) (3)s0 (s2 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 84
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
s2 Xs3s4
)X → ( ) (3)
s0 (s2 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 85
Parse Table In ActionACTION Goto
State ( ) $ Xs0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
s2 Xs3s4
)X → ( ) (3)
s0 (s2 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 86
Step One: Pop StacksACTION Goto
State ( ) $ X
p p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
s2 Xs3s4
)X → ( ) (3)
s0 (s2 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 87
Step One: Pop StacksACTION Goto
State ( ) $ X
p p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
X → ( ) (3)s0
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 88
Step Two: Push NonterminalACTION Goto
State ( ) $ X
p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
State Stack Symbol Stack Input Grammar
$ S → X $ (1)X → (X ) (2)X → ( ) (3)X → ( ) (3)
s0
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 89
Step Two: Push NonterminalACTION Goto
State ( ) $ X
p
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
X → ( ) (3)s0 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 90
Step Three: Use Goto, Push New StateACTION Goto
State ( ) $ X
p ,
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
X → ( ) (3)s0 X
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 91
Step Three: Use Goto, Push New StateACTION Goto
State ( ) $ X
p ,
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
s1 X → ( ) (3)s0 Xs1
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 92
Accept the String!ACTION Goto
State ( ) $ X
p g
s0 shift to s2 error error goto s1s1 error error accept s2 shift to s2 shift to s5 error goto s33 hift t 4s3 error shift to s4 error
s4 reduce (2) reduce (2) reduce (2) s5 reduce (3) reduce (3) reduce (3)
GrammarInputState Stack Symbol StackS → X $ (1)X → (X ) (2)X → ( ) (3)
$
s1 X → ( ) (3)s0 Ss1
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 93
•
•
t t t t
• c parser a•
• s n s•
Key Concepts
• Pushdown automaton for parsing St k Fi i l• Stack, Finite state control
• Parse actions: shift, reduce, accept Parse table for Parse table for • Indexed by parser state and input symbol
Entries pecify action and ext tateEntries specify action and next state • Use state stack to help control
• Parse tree constructionParse tree construction • Reads input from left to right • Bottom-up construction of parse treeBottom up construction of parse tree
controlling parser actions
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 94
MIT OpenCourseWarehttp://ocw.mit.edu
6.035 Computer Language Engineering Spring 2010
For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.
Source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/lecture-notes/ Saylor Course: http://www.saylor.org/courses/cs304/
The Saylor Foundation 95