SlideShare une entreprise Scribd logo
1  sur  55
Syntax Analysis Part II Chapter 4 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2009
Bottom-Up Parsing ,[object Object],[object Object],[object Object],[object Object],[object Object]
Operator-Precedence Parsing ,[object Object],[object Object]
Shift-Reduce Parsing Grammar: S      a   A B  e A      A   b c  |  b B      d Shift-reduce corresponds to a rightmost derivation: S    rm   a  A B  e    rm   a   A  d e    rm  a  A  b c d e    rm  a b b c d e Reducing a sentence: a  b  b c d e a  A  b c  d e a  A  d  e a  A B   e S S a  b  b  c  d  e A A B a  b  b  c  d  e A A B a  b  b  c  d  e A A a  b  b  c  d  e A These match production’s right-hand sides
Handles Handle Grammar: S      a   A B  e A      A   b c  |  b B      d A  handle  is a substring of grammar symbols in a right-sentential form  that matches a right-hand side of a production NOT a handle, because further reductions will fail (result is not a sentential form) a  b  b c d e a  A  b  c d e a  A A  e … ? a  b  b c d e a  A  b c  d e a  A  d  e a  A B   e S
Stack Implementation of Shift-Reduce Parsing Stack $ $ id $ E $ E + $ E + id $ E + E $ E + E * $ E + E * id $ E + E * E $ E + E $ E Input id+id*id$ +id*id$ +id*id$ id*id$ *id$ *id$ id$ $ $ $ $ Action shift reduce  E      id shift shift reduce  E      id shift (or reduce?) shift reduce  E      id reduce  E      E  *  E reduce  E      E  +  E accept Grammar: E      E   +   E E     E   *   E E      (   E   ) E      id Find handles to reduce How to resolve conflicts?
Conflicts ,[object Object],[object Object],[object Object]
Shift-Reduce Parsing: Shift-Reduce Conflicts Stack $ … $ … if   E   then   S Input … $ else … $ Action … shift or reduce? Ambiguous grammar: S      if   E   then   S   |   if   E   then   S   else   S   |  other Resolve in favor of shift, so  else matches closest  if
Shift-Reduce Parsing: Reduce-Reduce Conflicts Stack $ $ a Input aa$ a$ Action shift reduce  A      a  or   B      a  ? Grammar: C      A B A     a B      a Resolve in favor of reduce  A      a , otherwise we’re stuck!
LR( k ) Parsers: Use a DFA for Shift/Reduce Decisions 1 2 4 5 3 0 start a A C B a Grammar: S      C C      A B A     a B      a State I 0 : S     • C   C     • A B A    • a State I 1 : S      C • State I 2 : C      A • B B    • a State I 3 : A     a • State I 4 : C     A B • State I 5 : B     a • goto ( I 0 , C ) goto ( I 0 , a ) goto ( I 0 , A ) goto ( I 2 , a ) goto ( I 2 , B ) Can only reduce  A      a ( not  B      a)
DFA for Shift/Reduce Decisions Stack $  0 $  0 $  0  a  3 $  0  A  2 $  0  A  2   a  5 $  0  A  2  B  4 $  0  C  1 Input aa$ a a$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce  A      a  (goto 2) shift (goto 5) reduce  B      a  (goto 4) reduce  C      AB  (goto 1) accept ( S      C ) Grammar: S      C C      A B A     a B      a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S     • C   C     • A B A    • a State I 3 : A     a • goto ( I 0 , a )
DFA for Shift/Reduce Decisions Stack $  0 $  0 $  0   a   3 $  0  A  2 $  0  A  2   a  5 $  0  A  2  B  4 $  0  C  1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce  A      a  (goto 2) shift (goto 5) reduce  B      a  (goto 4) reduce  C      AB  (goto 1) accept ( S      C )  Grammar: S      C C      A B A     a B      a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S     • C   C     • A B A    • a State I 2 : C      A • B B    • a goto ( I 0 , A )
DFA for Shift/Reduce Decisions Stack $  0 $  0 $  0  a  3 $  0  A   2 $  0  A  2   a  5 $  0  A  2  B  4 $  0  C  1 Input aa$ aa$ a$ a $ $ $ $ Action start in state 0 shift (and goto state 3) reduce  A      a  (goto 2) shift (goto 5) reduce  B      a  (goto 4) reduce  C      AB  (goto 1) accept ( S      C ) Grammar: S      C C      A B A     a B      a The states of the DFA are used to determine if a handle is on top of the stack State I 2 : C      A • B B    • a State I 5 : B     a • goto ( I 2 , a )
DFA for Shift/Reduce Decisions Stack $  0 $  0 $  0  a  3 $  0  A  2 $  0  A  2   a  5 $  0  A  2  B  4 $  0  C  1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce  A      a  (goto 2) shift (goto 5) reduce  B      a  (goto 4) reduce  C      AB  (goto 1) accept ( S      C ) Grammar: S      C C      A B A     a B      a The states of the DFA are used to determine if a handle is on top of the stack State I 2 : C      A • B B    • a State I 4 : C     A B • goto ( I 2 , B )
DFA for Shift/Reduce Decisions Stack $  0 $  0 $  0  a  3 $  0  A  2 $  0  A  2   a  5 $  0   A  2  B  4 $  0  C  1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce  A      a  (goto 2) shift (goto 5) reduce  B      a  (goto 4) reduce  C      AB  (goto 1) accept ( S      C ) Grammar: S      C C      A B A     a B      a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S     • C   C     • A B A    • a State I 1 : S      C • goto ( I 0 , C )
DFA for Shift/Reduce Decisions Stack $  0 $  0 $  0  a  3 $  0  A  2 $  0  A  2   a  5 $  0  A  2  B  4 $  0  C   1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce  A      a  (goto 2) shift (goto 5) reduce  B      a  (goto 4) reduce  C      AB  (goto 1) accept ( S      C ) Grammar: S      C C      A B A     a B      a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S     • C   C     • A B A    • a State I 1 : S      C • goto ( I 0 , C )
Model of an LR Parser LR Parsing Program (driver) output stack input DFA shift reduce accept error Constructed with LR(0) method, SLR method, LR(1) method, or LALR(1) method a 1 a 2 … a i … a n $ action goto s m X m s m -1 X m -1 … s 0
LR Parsing (Driver) ( s 0   X 1  s 1   X 2  s 2  … X m  s m ,  a i   a i +1  …  a n   $ ) stack input Configuration ( = LR parser state): If   action [ s m , a i ] = shift  s   then  push  a i , push  s , and advance input: ( s 0   X 1  s 1   X 2  s 2  … X m  s m   a i   s ,  a i +1  …  a n   $ ) If   action [ s m , a i ] = reduce A       and  goto [ s m-r , A ] =  s  with  r =|  |  then pop 2 r  symbols, push  A , and push  s : ( s 0   X 1  s 1   X 2  s 2  … X m-r  s m-r   A   s ,  a i   a i +1  …  a n   $ ) If   action [ s m , a i ] = accept  then  stop If   action [ s m , a i ] = error  then  attempt recovery
Example LR Parse Table Grammar: 1.  E      E   +   T 2.  E      T 3.  T     T   *   F 4.  T     F 5.  F      (   E   ) 6.  F      id Shift & goto 5 Reduce by production #1 action goto state s5 s4 s6 acc r2 s7 r2 r2 r4 r4 r4 r4 s5 s4 r6 r6 r6 r6 s5 s4 s5 s4 s6 s11 r1 s7 r1 r1 r3 r3 r3 r3 r5 r5 r5 r5 id + * ( ) $ 0 1 2 3 4 5 6 7 8 9 10 11 E T F 1 2 3 8 2 3 9 3 10
Example LR Parsing Stack $  0 $  0  id  5 $  0  F   3 $  0  T  2 $  0  T  2  *  7 $  0  T  2  *  7  id  5 $  0  T  2  *  7  F  10 $  0  T  2 $  0  E  1 $  0  E  1  +  6 $  0  E  1  +  6  id  5 $  0  E  1  +  6  F  3 $  0  E  1  +  6  T  9 $  0  E  1 Input id*id+id$ *id+id$ *id+id$ *id+id$ id+id$ +id$ +id$ +id$  +id$  id$ $ $ $ $ Action shift 5 reduce 6 goto 3 reduce 4 goto 2 shift 7 shift 5 reduce 6 goto 10 reduce 3 goto 2 reduce 2 goto 1 shift 6 shift 5 reduce 6 goto 3 reduce 4 goto 9 reduce 1 goto 1 accept Grammar: 1.  E      E   +   T 2.  E      T 3.  T     T   *   F 4.  T     F 5.  F      (   E   ) 6.  F      id
SLR Grammars ,[object Object],[object Object],S     E E      id   +   E E      id State I 0 : S     • E   E     • id   +   E E    • id State I 2 : E     id • +   E E     id • goto ( I 0 , id ) goto ( I 3 , + ) FOLLOW( E )={ $ } thus reduce on  $ Shift on  +
SLR Parsing Table ,[object Object],[object Object],1.  S     E 2.  E      id   +   E 3.  E      id FOLLOW( E )={ $ } thus reduce on  $ Shift on  + s2 acc s3 r3 s2 r2 id + $ 0 1 2 3 4 E 1 4
SLR Parsing ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Constructing SLR Parsing Tables ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LR(0) Items of a Grammar ,[object Object],[object Object],[object Object]
Constructing the set of LR(0) Items of a Grammar ,[object Object],[object Object],[object Object],[object Object]
The Closure Operation for LR(0) Items ,[object Object],[object Object],[object Object]
The Closure Operation (Example) Grammar: E      E   +   T  |  T T     T   *   F  |  F F      (   E   ) F      id { [ E ’    •  E ] } closure ({[ E ’    • E ]}) =  { [ E ’    •  E ]   [ E     •  E   +   T ]   [ E     •  T ]   } { [ E ’    •  E ]   [ E     •  E   +   T ]   [ E     •  T ]   [ T    •  T   *   F ]   [ T    •  F ] } { [ E ’    •  E ]   [ E     •  E   +   T ]   [ E     •  T ]   [ T    •  T   *   F ]   [ T    •  F ]   [ F     •  (   E   )]   [ F     •  id ] } Add [ E  •  ] Add [ T  •  ] Add [ F  •  ]
The Goto Operation for LR(0) Items ,[object Object],[object Object],[object Object]
The Goto Operation (Example 1) Suppose  I  = Then  goto ( I , E ) =  closure ({[ E ’     E  •,  E      E  •   +   T ]}) = { [ E ’     E  •]   [ E      E  •   +   T ] } Grammar: E      E   +   T  |  T T     T   *   F  |  F F      (   E   ) F      id { [ E ’    •  E ]   [ E     •  E   +   T ]   [ E     •  T ]   [ T    •  T   *   F ]   [ T    •  F ]   [ F     •  (   E   )]   [ F     •  id ] }
The Goto Operation (Example 2) Suppose  I  = { [ E ’     E  •] ,  [ E      E  •  +   T ]   } Then  goto ( I , + ) =  closure ({[ E      E  +  •  T ]}) = { [ E      E  +  •  T ]   [ T     •  T  *  F ]   [ T     •  F ]   [ F     •  (  E  ) ]   [ F     •  id ] } Grammar: E      E   +   T  |  T T     T   *   F  |  F F      (   E   ) F      id
Example SLR Grammar and LR(0) Items Augmented grammar: 1.  C ’     C 2.  C      A B 3.  A     a 4.  B      a State I 0 : C ’    • C   C     • A B A    • a State I 1 : C ’     C • State I 2 : C      A • B B    • a State I 3 : A     a • State I 4 : C     A B • State I 5 : B     a • goto ( I 0 , C ) goto ( I 0 , a ) goto ( I 0 , A ) goto ( I 2 , a ) goto ( I 2 , B ) I 0  =  closure ({[ C ’    • C ]}) I 1  = goto( I 0 , C ) =  closure ({[ C ’     C •]}) … start final
Example SLR Parsing Table State I 0 : C ’    • C   C     • A B A    • a State I 1 : C ’     C • State I 2 : C      A • B B    • a State I 3 : A     a • State I 4 : C     A B • State I 5 : B     a • 1 2 4 5 3 0 start a A C B a Grammar: 1.  C ’     C 2.  C      A B 3.  A     a 4.  B      a s3 acc s5 r3 r2 r4 a $ 0 1 2 3 4 5 C A B 1 2 4
SLR and Ambiguity ,[object Object],[object Object],I 0 : S ’    • S   S     • L = R S    • R L    • * R   L    • id R    • L I 1 : S ’     S • I 2 : S      L • = R R     L • I 3 : S     R • I 4 : L     * • R   R    • L L    • * R   L    • id I 5 : L     id • I 6 : S      L = • R R    • L  L    • * R   L    • id I 7 : L     * R • I 8 : R     L • I 9 : S      L = R • action [2, = ]=s6 action [2, = ]=r5 no Has no SLR parsing table
LR(1) Grammars ,[object Object],[object Object],[object Object],LR(0) item: [ A  •  ] LR(1) item: [ A  •  ,  a ]
SLR Versus LR(1) ,[object Object],[object Object],I 2 : S      L • = R R     L • action [2, = ]=s6 Should not reduce on  = , because no right-sentential form begins with  R = split R     L • S      L • = R lookahead = $ action [2, $ ]=r5
LR(1) Items ,[object Object],[object Object],[object Object]
The Closure Operation for LR(1) Items ,[object Object],[object Object],[object Object]
The Goto Operation for LR(1) Items ,[object Object],[object Object]
Constructing the set of LR(1) Items of a Grammar ,[object Object],[object Object],[object Object],[object Object]
Example Grammar and LR(1) Items ,[object Object],[object Object],[object Object]
[ S ’    • S, $ ] goto( I 0 , S )= I 1   [ S    • L = R, $ ] goto( I 0 , L )= I 2   [ S    • R, $ ] goto( I 0 , R )= I 3   [ L    • * R, =/$ ] goto( I 0 , * )= I 4   [ L    • id , =/$ ] goto( I 0 , id )= I 5   [ R    • L, $ ] goto( I 0 , L )= I 2   [ S ’     S • , $ ] [ S     L • = R, $ ] goto( I 0 , = )= I 6   [ R     L • , $ ] [ S     R • , $ ] [ L     * • R, =/$ ] goto( I 4 , R )= I 7   [ R    • L, =/$ ] goto( I 4 , L )= I 8   [ L    • * R, =/$ ] goto( I 4 , * )= I 4   [ L    • id , =/$ ] goto( I 4 , id )= I 5   [ L     id • , =/$ ] [ S     L = • R, $ ] goto( I 6 , R )= I 9   [ R    • L, $ ] goto( I 6 , L )= I 10 [ L    • * R, $ ] goto( I 6 , * )= I 11   [ L    • id , $ ] goto( I 6 , id )= I 12   [ L     * R • , =/$ ] [ R     L • , =/$ ] [ S     L = R • , $ ] [ R     L • , $ ] [ L     * • R, $ ] goto( I 11 , R )= I 13 [ R    • L, $ ] goto( I 11 , L )= I 10 [ L    • * R, $ ] goto( I 11 , * )= I 11 [ L    • id , $ ] goto( I 11 , id )= I 12 [ L     id • , $ ]  [ L     * R • , $ ] I 0 : I 1 : I 2 : I 3 : I 4 : I 5 : I 6 : I 7 : I 8 : I 9 : I 10 : I 12 : I 11 : I 13 :
Constructing Canonical LR(1) Parsing Tables ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Example LR(1) Parsing Table Grammar: 1. S’     S 2.  S      L   =   R 3.  S      R 4.  L      *   R 5.  L      id 6.  R      L s5 s4 acc s6 r6 r3 s5 s4 r5 r5 s12 s11 r4 r4 r6 r6 r2 r6 s12 s11 r5 r4 id * = $ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 S L R 1 2 3 8 7 10 9 10 13
LALR(1) Grammars ,[object Object],[object Object],[object Object],[object Object],[object Object]
Constructing LALR(1) Parsing Tables ,[object Object],[object Object],[ L     * • R, =/$ ] [ R    • L, =/$ ]  [ L    • * R, =/$ ]  [ L    • id , =/$ ]  [ L     * • R, $ ] [ R    • L, $ ] [ L    • * R, $ ] [ L    • id , $ ] I 4 : I 11 : [ L     * • R, = / $ ] [ R    • L, = / $ ] [ L    • * R, = / $ ] [ L    • id , = / $ ] Shorthand for two items in the same set
Example LALR(1) Grammar ,[object Object],[object Object],[object Object]
[ S ’    • S, $ ] goto( I 0 , S )= I 1   [ S    • L = R, $ ] goto( I 0 , L )= I 2   [ S    • R, $ ] goto( I 0 , R )= I 3   [ L    • * R, = / $ ] goto( I 0 , * )= I 4   [ L    • id , = / $ ] goto( I 0 , id )= I 5   [ R    • L, $ ] goto( I 0 , L )= I 2   [ S ’     S • , $ ] [ S     L • = R, $ ] goto( I 0 , = )= I 6   [ R     L • , $ ] [ S     R • , $ ] [ L     * • R, = / $ ] goto( I 4 , R )= I 7   [ R    • L, = / $ ] goto( I 4 , L )= I 9   [ L    • * R, = / $ ] goto( I 4 , * )= I 4   [ L    • id , = / $ ] goto( I 4 , id )= I 5   [ L     id • , = / $ ] [ S     L = • R, $ ] goto( I 6 , R )= I 8   [ R    • L, $ ] goto( I 6 , L )= I 9 [ L    • * R, $ ] goto( I 6 , * )= I 4   [ L    • id , $ ] goto( I 6 , id )= I 5   [ L     * R • , = / $ ] [ S     L = R • , $ ] [ R     L • , = / $ ] I 0 : I 1 : I 2 : I 3 : I 4 : I 5 : I 6 : I 7 : I 8 : I 9 : Shorthand for two items [ R     L • , = ] [ R     L • , $ ]
Example LALR(1) Parsing Table Grammar: 1.  S ’     S 2.  S      L   =   R 3.  S      R 4.  L      *   R 5.  L      id 6.  R      L s5 s4 acc s6 r6 r3 s5 s4 r5 r5 s5 s4 r4 r4 r2 r6 r6 id * = $ 0 1 2 3 4 5 6 7 8 9 S L R 1 2 3 9 7 9 8
LL, SLR, LR, LALR Summary ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LL, SLR, LR, LALR Grammars LL(1) LR(1) LR(0) SLR LALR(1)
Dealing with Ambiguous Grammars 1.  S ’     E 2.  E      E   +   E 3.  E      id Shift/reduce conflict: action [4, + ] = shift 4 action [4, + ] = reduce  E      E   +   E   When reducing on  + : yields left associativity (id+id)+id When shifting on  + : yields right associativity id+(id+id) $  0  E  1  +  3  E  4  id+id+id$ +id$ $  0 … … stack input    s2 s3 acc r3 r3 s2 s3/r2 r2 id + $ 0 1 2 3 4 E 1 4
Using Associativity and Precedence to Resolve Conflicts ,[object Object],[object Object],[object Object],[object Object],S ’     E E      E   +   E E      E   *   E E      id $  0  E  1  *  3  E  5  id*id+id$ +id$ $  0 … … stack input reduce  E      E   *   E   
Error Detection in LR Parsing ,[object Object],[object Object]
Error Recovery in LR Parsing ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Contenu connexe

Tendances

Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating SystemsRitu Ranjan Shrivastwa
 
8 queens problem using back tracking
8 queens problem using back tracking8 queens problem using back tracking
8 queens problem using back trackingTech_MX
 
Control Strategies in AI
Control Strategies in AI Control Strategies in AI
Control Strategies in AI Bharat Bhushan
 
Context free grammars
Context free grammarsContext free grammars
Context free grammarsRonak Thakkar
 
Distance Vector Routing
Distance Vector RoutingDistance Vector Routing
Distance Vector RoutingShouvikDhali
 
Floating point arithmetic operations (1)
Floating point arithmetic operations (1)Floating point arithmetic operations (1)
Floating point arithmetic operations (1)cs19club
 
AUTOMATA THEORY - SHORT NOTES
AUTOMATA THEORY - SHORT NOTESAUTOMATA THEORY - SHORT NOTES
AUTOMATA THEORY - SHORT NOTESsuthi
 
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VEC
Unit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VECUnit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VEC
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VECsundarKanagaraj1
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First SearchBreadth First Search & Depth First Search
Breadth First Search & Depth First SearchKevin Jadiya
 
deadlock avoidance
deadlock avoidancedeadlock avoidance
deadlock avoidancewahab13
 
Pipeline processing and space time diagram
Pipeline processing and space time diagramPipeline processing and space time diagram
Pipeline processing and space time diagramRahul Sharma
 
Regular expressions-Theory of computation
Regular expressions-Theory of computationRegular expressions-Theory of computation
Regular expressions-Theory of computationBipul Roy Bpl
 
Stressen's matrix multiplication
Stressen's matrix multiplicationStressen's matrix multiplication
Stressen's matrix multiplicationKumar
 
simple problem to convert NFA with epsilon to without epsilon
simple problem to convert NFA with epsilon to without epsilonsimple problem to convert NFA with epsilon to without epsilon
simple problem to convert NFA with epsilon to without epsilonkanikkk
 
Master method theorem
Master method theoremMaster method theorem
Master method theoremRajendran
 
Lecture 21 problem reduction search ao star search
Lecture 21 problem reduction search ao star searchLecture 21 problem reduction search ao star search
Lecture 21 problem reduction search ao star searchHema Kashyap
 

Tendances (20)

Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating Systems
 
8 queens problem using back tracking
8 queens problem using back tracking8 queens problem using back tracking
8 queens problem using back tracking
 
Control Strategies in AI
Control Strategies in AI Control Strategies in AI
Control Strategies in AI
 
Deadlock Avoidance in Operating System
Deadlock Avoidance in Operating SystemDeadlock Avoidance in Operating System
Deadlock Avoidance in Operating System
 
Context free grammars
Context free grammarsContext free grammars
Context free grammars
 
Dbms anomalies
Dbms anomaliesDbms anomalies
Dbms anomalies
 
Master theorem
Master theoremMaster theorem
Master theorem
 
Distance Vector Routing
Distance Vector RoutingDistance Vector Routing
Distance Vector Routing
 
Floating point arithmetic operations (1)
Floating point arithmetic operations (1)Floating point arithmetic operations (1)
Floating point arithmetic operations (1)
 
AUTOMATA THEORY - SHORT NOTES
AUTOMATA THEORY - SHORT NOTESAUTOMATA THEORY - SHORT NOTES
AUTOMATA THEORY - SHORT NOTES
 
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VEC
Unit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VECUnit III  Knowledge Representation in AI   K.Sundar,AP/CSE,VEC
Unit III Knowledge Representation in AI K.Sundar,AP/CSE,VEC
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First SearchBreadth First Search & Depth First Search
Breadth First Search & Depth First Search
 
deadlock avoidance
deadlock avoidancedeadlock avoidance
deadlock avoidance
 
Pipeline processing and space time diagram
Pipeline processing and space time diagramPipeline processing and space time diagram
Pipeline processing and space time diagram
 
Regular expressions-Theory of computation
Regular expressions-Theory of computationRegular expressions-Theory of computation
Regular expressions-Theory of computation
 
Normalization in DBMS
Normalization in DBMSNormalization in DBMS
Normalization in DBMS
 
Stressen's matrix multiplication
Stressen's matrix multiplicationStressen's matrix multiplication
Stressen's matrix multiplication
 
simple problem to convert NFA with epsilon to without epsilon
simple problem to convert NFA with epsilon to without epsilonsimple problem to convert NFA with epsilon to without epsilon
simple problem to convert NFA with epsilon to without epsilon
 
Master method theorem
Master method theoremMaster method theorem
Master method theorem
 
Lecture 21 problem reduction search ao star search
Lecture 21 problem reduction search ao star searchLecture 21 problem reduction search ao star search
Lecture 21 problem reduction search ao star search
 

En vedette

Parsing using graphs
Parsing using graphsParsing using graphs
Parsing using graphskpingali
 
Chapter Five(2)
Chapter Five(2)Chapter Five(2)
Chapter Five(2)bolovv
 
Artificial intelligence in medical image processing
Artificial intelligence in medical image processingArtificial intelligence in medical image processing
Artificial intelligence in medical image processingFarzad Jahedi
 
Artificial Intelligence: Use of AI and Natural Language Processing to effecti...
Artificial Intelligence: Use of AI and Natural Language Processing to effecti...Artificial Intelligence: Use of AI and Natural Language Processing to effecti...
Artificial Intelligence: Use of AI and Natural Language Processing to effecti...White Clarke Group
 
Artificial Intelligence in Gaming
Artificial Intelligence in GamingArtificial Intelligence in Gaming
Artificial Intelligence in GamingSatvik J
 
Top Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTop Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTanzeela_Hussain
 
LALR Parser Presentation ppt
LALR Parser Presentation pptLALR Parser Presentation ppt
LALR Parser Presentation pptWPVKP.COM
 
Operating system kernal
Operating system kernalOperating system kernal
Operating system kernalSumit Rajpal
 
Validation controls in asp
Validation controls in aspValidation controls in asp
Validation controls in aspShishir Jain
 

En vedette (16)

Module 11
Module 11Module 11
Module 11
 
Ch9a
Ch9aCh9a
Ch9a
 
Ch4a
Ch4aCh4a
Ch4a
 
Parsing using graphs
Parsing using graphsParsing using graphs
Parsing using graphs
 
Predictive parser
Predictive parserPredictive parser
Predictive parser
 
Lexical 2
Lexical 2Lexical 2
Lexical 2
 
Topdown parsing
Topdown parsingTopdown parsing
Topdown parsing
 
Chapter Five(2)
Chapter Five(2)Chapter Five(2)
Chapter Five(2)
 
Artificial intelligence in medical image processing
Artificial intelligence in medical image processingArtificial intelligence in medical image processing
Artificial intelligence in medical image processing
 
Artificial Intelligence: Use of AI and Natural Language Processing to effecti...
Artificial Intelligence: Use of AI and Natural Language Processing to effecti...Artificial Intelligence: Use of AI and Natural Language Processing to effecti...
Artificial Intelligence: Use of AI and Natural Language Processing to effecti...
 
Artificial Intelligence in Gaming
Artificial Intelligence in GamingArtificial Intelligence in Gaming
Artificial Intelligence in Gaming
 
Top Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTop Down Parsing, Predictive Parsing
Top Down Parsing, Predictive Parsing
 
LALR Parser Presentation ppt
LALR Parser Presentation pptLALR Parser Presentation ppt
LALR Parser Presentation ppt
 
Operating system kernal
Operating system kernalOperating system kernal
Operating system kernal
 
Bottom up parser
Bottom up parserBottom up parser
Bottom up parser
 
Validation controls in asp
Validation controls in aspValidation controls in asp
Validation controls in asp
 

Similaire à Ch4b

Similaire à Ch4b (20)

Lecture11 syntax analysis_7
Lecture11 syntax analysis_7Lecture11 syntax analysis_7
Lecture11 syntax analysis_7
 
LR-Parsing.ppt
LR-Parsing.pptLR-Parsing.ppt
LR-Parsing.ppt
 
optimization of DFA
optimization of DFAoptimization of DFA
optimization of DFA
 
LR(1) and SLR(1) parsing
LR(1) and SLR(1) parsingLR(1) and SLR(1) parsing
LR(1) and SLR(1) parsing
 
UNIT 2 (1).pptx
UNIT 2 (1).pptxUNIT 2 (1).pptx
UNIT 2 (1).pptx
 
Compiler Design Unit 2
Compiler Design Unit 2Compiler Design Unit 2
Compiler Design Unit 2
 
11-SLR input string parsing, CLR introduction-06-06-2023.docx
11-SLR input string parsing, CLR introduction-06-06-2023.docx11-SLR input string parsing, CLR introduction-06-06-2023.docx
11-SLR input string parsing, CLR introduction-06-06-2023.docx
 
Bottomupparser
BottomupparserBottomupparser
Bottomupparser
 
Bottomupparser
BottomupparserBottomupparser
Bottomupparser
 
Bottomupparser
BottomupparserBottomupparser
Bottomupparser
 
BOTTOM UP PARSING GROUP 3.pptx
BOTTOM UP PARSING GROUP 3.pptxBOTTOM UP PARSING GROUP 3.pptx
BOTTOM UP PARSING GROUP 3.pptx
 
10-SLR parser practice problems-02-06-2023.pptx
10-SLR parser practice problems-02-06-2023.pptx10-SLR parser practice problems-02-06-2023.pptx
10-SLR parser practice problems-02-06-2023.pptx
 
ch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPT
ch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPTch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPT
ch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPT
 
Compiler Design LR parsing SLR ,LALR CLR
Compiler Design LR parsing SLR ,LALR CLRCompiler Design LR parsing SLR ,LALR CLR
Compiler Design LR parsing SLR ,LALR CLR
 
lr parsers bottom up parsers slr parser.pptx
lr parsers bottom up parsers slr parser.pptxlr parsers bottom up parsers slr parser.pptx
lr parsers bottom up parsers slr parser.pptx
 
sameermlr0parser-200701133032.pptx
sameermlr0parser-200701133032.pptxsameermlr0parser-200701133032.pptx
sameermlr0parser-200701133032.pptx
 
Playing with State Monad
Playing with State MonadPlaying with State Monad
Playing with State Monad
 
LR(0) PARSER
LR(0) PARSERLR(0) PARSER
LR(0) PARSER
 
Compiler Design Material 2
Compiler Design Material 2Compiler Design Material 2
Compiler Design Material 2
 
Ch5b.pdf
Ch5b.pdfCh5b.pdf
Ch5b.pdf
 

Plus de kinnarshah8888 (15)

Yuva Msp All
Yuva Msp AllYuva Msp All
Yuva Msp All
 
Yuva Msp Intro
Yuva Msp IntroYuva Msp Intro
Yuva Msp Intro
 
Ch6
Ch6Ch6
Ch6
 
Ch9c
Ch9cCh9c
Ch9c
 
Ch8a
Ch8aCh8a
Ch8a
 
Ch5a
Ch5aCh5a
Ch5a
 
Ch9b
Ch9bCh9b
Ch9b
 
Ch10
Ch10Ch10
Ch10
 
Ch7
Ch7Ch7
Ch7
 
Ch3
Ch3Ch3
Ch3
 
Ch2
Ch2Ch2
Ch2
 
Ch8b
Ch8bCh8b
Ch8b
 
Ch5b
Ch5bCh5b
Ch5b
 
Ch4c
Ch4cCh4c
Ch4c
 
Ch1
Ch1Ch1
Ch1
 

Dernier

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Dernier (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Ch4b

  • 1. Syntax Analysis Part II Chapter 4 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2009
  • 2.
  • 3.
  • 4. Shift-Reduce Parsing Grammar: S  a A B e A  A b c | b B  d Shift-reduce corresponds to a rightmost derivation: S  rm a A B e  rm a A d e  rm a A b c d e  rm a b b c d e Reducing a sentence: a b b c d e a A b c d e a A d e a A B e S S a b b c d e A A B a b b c d e A A B a b b c d e A A a b b c d e A These match production’s right-hand sides
  • 5. Handles Handle Grammar: S  a A B e A  A b c | b B  d A handle is a substring of grammar symbols in a right-sentential form that matches a right-hand side of a production NOT a handle, because further reductions will fail (result is not a sentential form) a b b c d e a A b c d e a A A e … ? a b b c d e a A b c d e a A d e a A B e S
  • 6. Stack Implementation of Shift-Reduce Parsing Stack $ $ id $ E $ E + $ E + id $ E + E $ E + E * $ E + E * id $ E + E * E $ E + E $ E Input id+id*id$ +id*id$ +id*id$ id*id$ *id$ *id$ id$ $ $ $ $ Action shift reduce E  id shift shift reduce E  id shift (or reduce?) shift reduce E  id reduce E  E * E reduce E  E + E accept Grammar: E  E + E E  E * E E  ( E ) E  id Find handles to reduce How to resolve conflicts?
  • 7.
  • 8. Shift-Reduce Parsing: Shift-Reduce Conflicts Stack $ … $ … if E then S Input … $ else … $ Action … shift or reduce? Ambiguous grammar: S  if E then S | if E then S else S | other Resolve in favor of shift, so else matches closest if
  • 9. Shift-Reduce Parsing: Reduce-Reduce Conflicts Stack $ $ a Input aa$ a$ Action shift reduce A  a or B  a ? Grammar: C  A B A  a B  a Resolve in favor of reduce A  a , otherwise we’re stuck!
  • 10. LR( k ) Parsers: Use a DFA for Shift/Reduce Decisions 1 2 4 5 3 0 start a A C B a Grammar: S  C C  A B A  a B  a State I 0 : S  • C C  • A B A  • a State I 1 : S  C • State I 2 : C  A • B B  • a State I 3 : A  a • State I 4 : C  A B • State I 5 : B  a • goto ( I 0 , C ) goto ( I 0 , a ) goto ( I 0 , A ) goto ( I 2 , a ) goto ( I 2 , B ) Can only reduce A  a ( not B  a)
  • 11. DFA for Shift/Reduce Decisions Stack $ 0 $ 0 $ 0 a 3 $ 0 A 2 $ 0 A 2 a 5 $ 0 A 2 B 4 $ 0 C 1 Input aa$ a a$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce A  a (goto 2) shift (goto 5) reduce B  a (goto 4) reduce C  AB (goto 1) accept ( S  C ) Grammar: S  C C  A B A  a B  a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S  • C C  • A B A  • a State I 3 : A  a • goto ( I 0 , a )
  • 12. DFA for Shift/Reduce Decisions Stack $ 0 $ 0 $ 0 a 3 $ 0 A 2 $ 0 A 2 a 5 $ 0 A 2 B 4 $ 0 C 1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce A  a (goto 2) shift (goto 5) reduce B  a (goto 4) reduce C  AB (goto 1) accept ( S  C ) Grammar: S  C C  A B A  a B  a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S  • C C  • A B A  • a State I 2 : C  A • B B  • a goto ( I 0 , A )
  • 13. DFA for Shift/Reduce Decisions Stack $ 0 $ 0 $ 0 a 3 $ 0 A 2 $ 0 A 2 a 5 $ 0 A 2 B 4 $ 0 C 1 Input aa$ aa$ a$ a $ $ $ $ Action start in state 0 shift (and goto state 3) reduce A  a (goto 2) shift (goto 5) reduce B  a (goto 4) reduce C  AB (goto 1) accept ( S  C ) Grammar: S  C C  A B A  a B  a The states of the DFA are used to determine if a handle is on top of the stack State I 2 : C  A • B B  • a State I 5 : B  a • goto ( I 2 , a )
  • 14. DFA for Shift/Reduce Decisions Stack $ 0 $ 0 $ 0 a 3 $ 0 A 2 $ 0 A 2 a 5 $ 0 A 2 B 4 $ 0 C 1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce A  a (goto 2) shift (goto 5) reduce B  a (goto 4) reduce C  AB (goto 1) accept ( S  C ) Grammar: S  C C  A B A  a B  a The states of the DFA are used to determine if a handle is on top of the stack State I 2 : C  A • B B  • a State I 4 : C  A B • goto ( I 2 , B )
  • 15. DFA for Shift/Reduce Decisions Stack $ 0 $ 0 $ 0 a 3 $ 0 A 2 $ 0 A 2 a 5 $ 0 A 2 B 4 $ 0 C 1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce A  a (goto 2) shift (goto 5) reduce B  a (goto 4) reduce C  AB (goto 1) accept ( S  C ) Grammar: S  C C  A B A  a B  a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S  • C C  • A B A  • a State I 1 : S  C • goto ( I 0 , C )
  • 16. DFA for Shift/Reduce Decisions Stack $ 0 $ 0 $ 0 a 3 $ 0 A 2 $ 0 A 2 a 5 $ 0 A 2 B 4 $ 0 C 1 Input aa$ aa$ a$ a$ $ $ $ Action start in state 0 shift (and goto state 3) reduce A  a (goto 2) shift (goto 5) reduce B  a (goto 4) reduce C  AB (goto 1) accept ( S  C ) Grammar: S  C C  A B A  a B  a The states of the DFA are used to determine if a handle is on top of the stack State I 0 : S  • C C  • A B A  • a State I 1 : S  C • goto ( I 0 , C )
  • 17. Model of an LR Parser LR Parsing Program (driver) output stack input DFA shift reduce accept error Constructed with LR(0) method, SLR method, LR(1) method, or LALR(1) method a 1 a 2 … a i … a n $ action goto s m X m s m -1 X m -1 … s 0
  • 18. LR Parsing (Driver) ( s 0 X 1 s 1 X 2 s 2 … X m s m , a i a i +1 … a n $ ) stack input Configuration ( = LR parser state): If action [ s m , a i ] = shift s then push a i , push s , and advance input: ( s 0 X 1 s 1 X 2 s 2 … X m s m a i s , a i +1 … a n $ ) If action [ s m , a i ] = reduce A   and goto [ s m-r , A ] = s with r =|  | then pop 2 r symbols, push A , and push s : ( s 0 X 1 s 1 X 2 s 2 … X m-r s m-r A s , a i a i +1 … a n $ ) If action [ s m , a i ] = accept then stop If action [ s m , a i ] = error then attempt recovery
  • 19. Example LR Parse Table Grammar: 1. E  E + T 2. E  T 3. T  T * F 4. T  F 5. F  ( E ) 6. F  id Shift & goto 5 Reduce by production #1 action goto state s5 s4 s6 acc r2 s7 r2 r2 r4 r4 r4 r4 s5 s4 r6 r6 r6 r6 s5 s4 s5 s4 s6 s11 r1 s7 r1 r1 r3 r3 r3 r3 r5 r5 r5 r5 id + * ( ) $ 0 1 2 3 4 5 6 7 8 9 10 11 E T F 1 2 3 8 2 3 9 3 10
  • 20. Example LR Parsing Stack $ 0 $ 0 id 5 $ 0 F 3 $ 0 T 2 $ 0 T 2 * 7 $ 0 T 2 * 7 id 5 $ 0 T 2 * 7 F 10 $ 0 T 2 $ 0 E 1 $ 0 E 1 + 6 $ 0 E 1 + 6 id 5 $ 0 E 1 + 6 F 3 $ 0 E 1 + 6 T 9 $ 0 E 1 Input id*id+id$ *id+id$ *id+id$ *id+id$ id+id$ +id$ +id$ +id$ +id$ id$ $ $ $ $ Action shift 5 reduce 6 goto 3 reduce 4 goto 2 shift 7 shift 5 reduce 6 goto 10 reduce 3 goto 2 reduce 2 goto 1 shift 6 shift 5 reduce 6 goto 3 reduce 4 goto 9 reduce 1 goto 1 accept Grammar: 1. E  E + T 2. E  T 3. T  T * F 4. T  F 5. F  ( E ) 6. F  id
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. The Closure Operation (Example) Grammar: E  E + T | T T  T * F | F F  ( E ) F  id { [ E ’  • E ] } closure ({[ E ’  • E ]}) = { [ E ’  • E ] [ E  • E + T ] [ E  • T ] } { [ E ’  • E ] [ E  • E + T ] [ E  • T ] [ T  • T * F ] [ T  • F ] } { [ E ’  • E ] [ E  • E + T ] [ E  • T ] [ T  • T * F ] [ T  • F ] [ F  • ( E )] [ F  • id ] } Add [ E  •  ] Add [ T  •  ] Add [ F  •  ]
  • 29.
  • 30. The Goto Operation (Example 1) Suppose I = Then goto ( I , E ) = closure ({[ E ’  E •, E  E • + T ]}) = { [ E ’  E •] [ E  E • + T ] } Grammar: E  E + T | T T  T * F | F F  ( E ) F  id { [ E ’  • E ] [ E  • E + T ] [ E  • T ] [ T  • T * F ] [ T  • F ] [ F  • ( E )] [ F  • id ] }
  • 31. The Goto Operation (Example 2) Suppose I = { [ E ’  E •] , [ E  E • + T ] } Then goto ( I , + ) = closure ({[ E  E + • T ]}) = { [ E  E + • T ] [ T  • T * F ] [ T  • F ] [ F  • ( E ) ] [ F  • id ] } Grammar: E  E + T | T T  T * F | F F  ( E ) F  id
  • 32. Example SLR Grammar and LR(0) Items Augmented grammar: 1. C ’  C 2. C  A B 3. A  a 4. B  a State I 0 : C ’  • C C  • A B A  • a State I 1 : C ’  C • State I 2 : C  A • B B  • a State I 3 : A  a • State I 4 : C  A B • State I 5 : B  a • goto ( I 0 , C ) goto ( I 0 , a ) goto ( I 0 , A ) goto ( I 2 , a ) goto ( I 2 , B ) I 0 = closure ({[ C ’  • C ]}) I 1 = goto( I 0 , C ) = closure ({[ C ’  C •]}) … start final
  • 33. Example SLR Parsing Table State I 0 : C ’  • C C  • A B A  • a State I 1 : C ’  C • State I 2 : C  A • B B  • a State I 3 : A  a • State I 4 : C  A B • State I 5 : B  a • 1 2 4 5 3 0 start a A C B a Grammar: 1. C ’  C 2. C  A B 3. A  a 4. B  a s3 acc s5 r3 r2 r4 a $ 0 1 2 3 4 5 C A B 1 2 4
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42. [ S ’  • S, $ ] goto( I 0 , S )= I 1 [ S  • L = R, $ ] goto( I 0 , L )= I 2 [ S  • R, $ ] goto( I 0 , R )= I 3 [ L  • * R, =/$ ] goto( I 0 , * )= I 4 [ L  • id , =/$ ] goto( I 0 , id )= I 5 [ R  • L, $ ] goto( I 0 , L )= I 2 [ S ’  S • , $ ] [ S  L • = R, $ ] goto( I 0 , = )= I 6 [ R  L • , $ ] [ S  R • , $ ] [ L  * • R, =/$ ] goto( I 4 , R )= I 7 [ R  • L, =/$ ] goto( I 4 , L )= I 8 [ L  • * R, =/$ ] goto( I 4 , * )= I 4 [ L  • id , =/$ ] goto( I 4 , id )= I 5 [ L  id • , =/$ ] [ S  L = • R, $ ] goto( I 6 , R )= I 9 [ R  • L, $ ] goto( I 6 , L )= I 10 [ L  • * R, $ ] goto( I 6 , * )= I 11 [ L  • id , $ ] goto( I 6 , id )= I 12 [ L  * R • , =/$ ] [ R  L • , =/$ ] [ S  L = R • , $ ] [ R  L • , $ ] [ L  * • R, $ ] goto( I 11 , R )= I 13 [ R  • L, $ ] goto( I 11 , L )= I 10 [ L  • * R, $ ] goto( I 11 , * )= I 11 [ L  • id , $ ] goto( I 11 , id )= I 12 [ L  id • , $ ] [ L  * R • , $ ] I 0 : I 1 : I 2 : I 3 : I 4 : I 5 : I 6 : I 7 : I 8 : I 9 : I 10 : I 12 : I 11 : I 13 :
  • 43.
  • 44. Example LR(1) Parsing Table Grammar: 1. S’  S 2. S  L = R 3. S  R 4. L  * R 5. L  id 6. R  L s5 s4 acc s6 r6 r3 s5 s4 r5 r5 s12 s11 r4 r4 r6 r6 r2 r6 s12 s11 r5 r4 id * = $ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 S L R 1 2 3 8 7 10 9 10 13
  • 45.
  • 46.
  • 47.
  • 48. [ S ’  • S, $ ] goto( I 0 , S )= I 1 [ S  • L = R, $ ] goto( I 0 , L )= I 2 [ S  • R, $ ] goto( I 0 , R )= I 3 [ L  • * R, = / $ ] goto( I 0 , * )= I 4 [ L  • id , = / $ ] goto( I 0 , id )= I 5 [ R  • L, $ ] goto( I 0 , L )= I 2 [ S ’  S • , $ ] [ S  L • = R, $ ] goto( I 0 , = )= I 6 [ R  L • , $ ] [ S  R • , $ ] [ L  * • R, = / $ ] goto( I 4 , R )= I 7 [ R  • L, = / $ ] goto( I 4 , L )= I 9 [ L  • * R, = / $ ] goto( I 4 , * )= I 4 [ L  • id , = / $ ] goto( I 4 , id )= I 5 [ L  id • , = / $ ] [ S  L = • R, $ ] goto( I 6 , R )= I 8 [ R  • L, $ ] goto( I 6 , L )= I 9 [ L  • * R, $ ] goto( I 6 , * )= I 4 [ L  • id , $ ] goto( I 6 , id )= I 5 [ L  * R • , = / $ ] [ S  L = R • , $ ] [ R  L • , = / $ ] I 0 : I 1 : I 2 : I 3 : I 4 : I 5 : I 6 : I 7 : I 8 : I 9 : Shorthand for two items [ R  L • , = ] [ R  L • , $ ]
  • 49. Example LALR(1) Parsing Table Grammar: 1. S ’  S 2. S  L = R 3. S  R 4. L  * R 5. L  id 6. R  L s5 s4 acc s6 r6 r3 s5 s4 r5 r5 s5 s4 r4 r4 r2 r6 r6 id * = $ 0 1 2 3 4 5 6 7 8 9 S L R 1 2 3 9 7 9 8
  • 50.
  • 51. LL, SLR, LR, LALR Grammars LL(1) LR(1) LR(0) SLR LALR(1)
  • 52. Dealing with Ambiguous Grammars 1. S ’  E 2. E  E + E 3. E  id Shift/reduce conflict: action [4, + ] = shift 4 action [4, + ] = reduce E  E + E When reducing on + : yields left associativity (id+id)+id When shifting on + : yields right associativity id+(id+id) $ 0 E 1 + 3 E 4 id+id+id$ +id$ $ 0 … … stack input    s2 s3 acc r3 r3 s2 s3/r2 r2 id + $ 0 1 2 3 4 E 1 4
  • 53.
  • 54.
  • 55.