SlideShare uma empresa 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]

Mais conteúdo relacionado

Mais procurados

closure properties of regular language.pptx
closure properties of regular language.pptxclosure properties of regular language.pptx
closure properties of regular language.pptxThirumoorthy64
 
Formal Languages and Automata Theory Unit 1
Formal Languages and Automata Theory Unit 1Formal Languages and Automata Theory Unit 1
Formal Languages and Automata Theory Unit 1Srimatre K
 
Depth first search [dfs]
Depth first search [dfs]Depth first search [dfs]
Depth first search [dfs]DEEPIKA T
 
Introduction TO Finite Automata
Introduction TO Finite AutomataIntroduction TO Finite Automata
Introduction TO Finite AutomataRatnakar Mikkili
 
Ll(1) Parser in Compilers
Ll(1) Parser in CompilersLl(1) Parser in Compilers
Ll(1) Parser in CompilersMahbubur Rahman
 
Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)Hossain Md Shakhawat
 
Syntax directed translation
Syntax directed translationSyntax directed translation
Syntax directed translationAkshaya Arunan
 
3.2 insertion sort
3.2 insertion sort3.2 insertion sort
3.2 insertion sortKrish_ver2
 
I. AO* SEARCH ALGORITHM
I. AO* SEARCH ALGORITHMI. AO* SEARCH ALGORITHM
I. AO* SEARCH ALGORITHMvikas dhakane
 
LR(1) and SLR(1) parsing
LR(1) and SLR(1) parsingLR(1) and SLR(1) parsing
LR(1) and SLR(1) parsingR Islam
 

Mais procurados (20)

Finite automata
Finite automataFinite automata
Finite automata
 
Bfs and Dfs
Bfs and DfsBfs and Dfs
Bfs and Dfs
 
Collision in Hashing.pptx
Collision in Hashing.pptxCollision in Hashing.pptx
Collision in Hashing.pptx
 
LR PARSE.pptx
LR PARSE.pptxLR PARSE.pptx
LR PARSE.pptx
 
L3 cfg
L3 cfgL3 cfg
L3 cfg
 
closure properties of regular language.pptx
closure properties of regular language.pptxclosure properties of regular language.pptx
closure properties of regular language.pptx
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
Parsing LL(1), SLR, LR(1)
Parsing LL(1), SLR, LR(1)Parsing LL(1), SLR, LR(1)
Parsing LL(1), SLR, LR(1)
 
Formal Languages and Automata Theory Unit 1
Formal Languages and Automata Theory Unit 1Formal Languages and Automata Theory Unit 1
Formal Languages and Automata Theory Unit 1
 
Depth first search [dfs]
Depth first search [dfs]Depth first search [dfs]
Depth first search [dfs]
 
Introduction TO Finite Automata
Introduction TO Finite AutomataIntroduction TO Finite Automata
Introduction TO Finite Automata
 
Ll(1) Parser in Compilers
Ll(1) Parser in CompilersLl(1) Parser in Compilers
Ll(1) Parser in Compilers
 
Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)Counting sort(Non Comparison Sort)
Counting sort(Non Comparison Sort)
 
Syntax directed translation
Syntax directed translationSyntax directed translation
Syntax directed translation
 
3.2 insertion sort
3.2 insertion sort3.2 insertion sort
3.2 insertion sort
 
PDA (pushdown automaton)
PDA (pushdown automaton)PDA (pushdown automaton)
PDA (pushdown automaton)
 
And or graph
And or graphAnd or graph
And or graph
 
I. AO* SEARCH ALGORITHM
I. AO* SEARCH ALGORITHMI. AO* SEARCH ALGORITHM
I. AO* SEARCH ALGORITHM
 
LR(1) and SLR(1) parsing
LR(1) and SLR(1) parsingLR(1) and SLR(1) parsing
LR(1) and SLR(1) parsing
 
NLP_KASHK:Minimum Edit Distance
NLP_KASHK:Minimum Edit DistanceNLP_KASHK:Minimum Edit Distance
NLP_KASHK:Minimum Edit Distance
 

Destaque

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
 

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

Semelhante a Ch4b

LR-Parsing.ppt
LR-Parsing.pptLR-Parsing.ppt
LR-Parsing.pptBapanKar2
 
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.docxvenkatapranaykumarGa
 
BOTTOM UP PARSING GROUP 3.pptx
BOTTOM UP PARSING GROUP 3.pptxBOTTOM UP PARSING GROUP 3.pptx
BOTTOM UP PARSING GROUP 3.pptxSnehaTiwari84
 
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.pptxvenkatapranaykumarGa
 
ch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPT
ch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPTch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPT
ch5-bottomupparser_jfdrhgfrfyyssf-gfrrt.PPTFutureTechnologies3
 
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 CLRRiazul Islam
 
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.pptxsrilakshmis17
 
sameermlr0parser-200701133032.pptx
sameermlr0parser-200701133032.pptxsameermlr0parser-200701133032.pptx
sameermlr0parser-200701133032.pptxBapanKar2
 
Playing with State Monad
Playing with State MonadPlaying with State Monad
Playing with State MonadDavid Galichet
 
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 Spoojasharmabu
 

Semelhante 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
 
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
 
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
 

Mais 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

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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
 
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
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 

Último (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
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...
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 

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.