SlideShare una empresa de Scribd logo
1 de 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]

Más contenido relacionado

La actualidad más candente

Moore Mealy Machine Conversion
Moore Mealy Machine Conversion Moore Mealy Machine Conversion
Moore Mealy Machine Conversion Aiman Hafeez
 
Push Down Automata (PDA) | TOC (Theory of Computation) | NPDA | DPDA
Push Down Automata (PDA) | TOC  (Theory of Computation) | NPDA | DPDAPush Down Automata (PDA) | TOC  (Theory of Computation) | NPDA | DPDA
Push Down Automata (PDA) | TOC (Theory of Computation) | NPDA | DPDAAshish Duggal
 
Pumping lemma Theory Of Automata
Pumping lemma Theory Of AutomataPumping lemma Theory Of Automata
Pumping lemma Theory Of Automatahafizhamza0322
 
Finite automata(For college Seminars)
Finite automata(For college Seminars)Finite automata(For college Seminars)
Finite automata(For college Seminars)Naman Joshi
 
Automata theory - Push Down Automata (PDA)
Automata theory - Push Down Automata (PDA)Automata theory - Push Down Automata (PDA)
Automata theory - Push Down Automata (PDA)Akila Krishnamoorthy
 
Introduction state machine
Introduction state machineIntroduction state machine
Introduction state machineShreyans Pathak
 
Pushdown Automata Theory
Pushdown Automata TheoryPushdown Automata Theory
Pushdown Automata TheorySaifur Rahman
 
Push down automata
Push down automataPush down automata
Push down automataSomya Bagai
 
Control Strategies in AI
Control Strategies in AIControl Strategies in AI
Control Strategies in AIAmey Kerkar
 
2. context free langauages
2. context free langauages2. context free langauages
2. context free langauagesdanhumble
 
Predicate calculus
Predicate calculusPredicate calculus
Predicate calculusRajendran
 

La actualidad más candente (20)

Push down automata
Push down automataPush down automata
Push down automata
 
Theory of computation and automata
Theory of computation and automataTheory of computation and automata
Theory of computation and automata
 
Moore Mealy Machine Conversion
Moore Mealy Machine Conversion Moore Mealy Machine Conversion
Moore Mealy Machine Conversion
 
Push Down Automata (PDA) | TOC (Theory of Computation) | NPDA | DPDA
Push Down Automata (PDA) | TOC  (Theory of Computation) | NPDA | DPDAPush Down Automata (PDA) | TOC  (Theory of Computation) | NPDA | DPDA
Push Down Automata (PDA) | TOC (Theory of Computation) | NPDA | DPDA
 
TOC 7 | CFG in Chomsky Normal Form
TOC 7 | CFG in Chomsky Normal FormTOC 7 | CFG in Chomsky Normal Form
TOC 7 | CFG in Chomsky Normal Form
 
Pumping lemma Theory Of Automata
Pumping lemma Theory Of AutomataPumping lemma Theory Of Automata
Pumping lemma Theory Of Automata
 
Finite automata(For college Seminars)
Finite automata(For college Seminars)Finite automata(For college Seminars)
Finite automata(For college Seminars)
 
Ch2 finite automaton
Ch2 finite automatonCh2 finite automaton
Ch2 finite automaton
 
Ai 7
Ai 7Ai 7
Ai 7
 
Automata theory - Push Down Automata (PDA)
Automata theory - Push Down Automata (PDA)Automata theory - Push Down Automata (PDA)
Automata theory - Push Down Automata (PDA)
 
Introduction state machine
Introduction state machineIntroduction state machine
Introduction state machine
 
Huffman Coding
Huffman CodingHuffman Coding
Huffman Coding
 
Pushdown Automata Theory
Pushdown Automata TheoryPushdown Automata Theory
Pushdown Automata Theory
 
Push down automata
Push down automataPush down automata
Push down automata
 
Control Strategies in AI
Control Strategies in AIControl Strategies in AI
Control Strategies in AI
 
Finite Automata
Finite AutomataFinite Automata
Finite Automata
 
Ch 6 final
Ch 6 finalCh 6 final
Ch 6 final
 
2. context free langauages
2. context free langauages2. context free langauages
2. context free langauages
 
Context free grammar
Context free grammar Context free grammar
Context free grammar
 
Predicate calculus
Predicate calculusPredicate calculus
Predicate calculus
 

Destacado

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
 

Destacado (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
 

Similar a 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
 
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
 
Compiler Design Bottom Up Parsing Technique S
Compiler Design Bottom Up Parsing Technique SCompiler Design Bottom Up Parsing Technique S
Compiler Design Bottom Up Parsing Technique S
 

Más 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
 

Último

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
🐬 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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Último (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

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.