token list entries: 61 control list entries: 61 action list entries: 61 1 | nonterm 3 | action 1 | EMPTY | 2 | EMPTY | EMPTY | EMPTY | 3 | # | EMPTY | EMPTY | 4 | nonterm 5 | action 2 | next state 3 | 5 | | action 3 | next state 7 | 6 | EMPTY | EMPTY | EMPTY | 7 | # | EMPTY | next state 9 | 8 | EXHAUSTED | EMPTY | EMPTY | 9 | # | EMPTY | next state 56 | 10 | nonterm 12 | action 4 | next state 9 | 11 | EXHAUSTED | EMPTY | EMPTY | 12 | ! | EMPTY | EMPTY | 13 | ? | EMPTY | EMPTY | 14 | & | EMPTY | EMPTY | 15 | : | EMPTY | EMPTY | 16 | ( | EMPTY | EMPTY | 17 | ) | EMPTY | EMPTY | 18 | * | EMPTY | EMPTY | 19 | + | EMPTY | EMPTY | 20 | , | EMPTY | EMPTY | 21 | - | EMPTY | EMPTY | 22 | / | EMPTY | EMPTY | 23 | ; | EMPTY | EMPTY | 24 | < | EMPTY | EMPTY | 25 | = | EMPTY | EMPTY | 26 | > | EMPTY | EMPTY | 27 | [ | EMPTY | EMPTY | 28 | ] | EMPTY | EMPTY | 29 | { | EMPTY | EMPTY | 30 | | | EMPTY | EMPTY | 31 | } | EMPTY | EMPTY | 32 | % | EMPTY | EMPTY | 33 | >> | EMPTY | EMPTY | 34 | << | EMPTY | EMPTY | 35 | >= | EMPTY | EMPTY | 36 | <= | EMPTY | EMPTY | 37 | != | EMPTY | EMPTY | 38 | == | EMPTY | EMPTY | 39 | | EMPTY | EMPTY | 40 | | EMPTY | EMPTY | 41 | | EMPTY | EMPTY | 42 | break | EMPTY | EMPTY | 43 | case | EMPTY | EMPTY | 44 | continue | EMPTY | EMPTY | 45 | default | EMPTY | EMPTY | 46 | do | EMPTY | EMPTY | 47 | else | EMPTY | EMPTY | 48 | for | EMPTY | EMPTY | 49 | goto | EMPTY | EMPTY | 50 | if | EMPTY | EMPTY | 51 | int | EMPTY | EMPTY | 52 | return | EMPTY | EMPTY | 53 | switch | EMPTY | EMPTY | 54 | while | EMPTY | EMPTY | 55 | EXHAUSTED | EMPTY | EMPTY | 56 | | action 5 | next state 58 | 57 | EXHAUSTED | EMPTY | EMPTY | 58 | # | EMPTY | next state 60 | 59 | EXHAUSTED | EMPTY | EMPTY | 60 | | action 6 | EMPTY | 61 | EXHAUSTED | EMPTY | EMPTY | curprodindx: 0, curprodhead: 0 start next production; check if alternate to prior production program curprodindx: 6, curprodhead: 1 add token to data table decl_list curprodindx: 7, curprodhead: 1 add action identifier to data table empty curprodindx: 7, curprodhead: 1 add sequence identifier to data table empty curprodindx: 7, curprodhead: 1 cleanup end of production curprodindx: 7, curprodhead: 1 start next production; check if alternate to prior production program curprodindx: 13, curprodhead: 8 add token to data table exhausted curprodindx: 14, curprodhead: 8 add action identifier to data table empty curprodindx: 14, curprodhead: 8 add sequence identifier to data table empty curprodindx: 14, curprodhead: 8 cleanup end of production curprodindx: 14, curprodhead: 8 start next production; check if alternate to prior production decl_list curprodindx: 20, curprodhead: 15 add token to data table decl curprodindx: 21, curprodhead: 15 add token to data table ; curprodindx: 22, curprodhead: 15 add token to data table 99 curprodindx: 23, curprodhead: 15 add token to data table ; curprodindx: 24, curprodhead: 15 add token to data table 89 curprodindx: 25, curprodhead: 15 add token to data table ; curprodindx: 26, curprodhead: 15 add token to data table decl_list curprodindx: 27, curprodhead: 15 add action identifier to data table empty curprodindx: 27, curprodhead: 15 add sequence identifier to data table finish curprodindx: 27, curprodhead: 15 cleanup end of production curprodindx: 27, curprodhead: 15 start next production; check if alternate to prior production decl_list curprodindx: 33, curprodhead: 28 add token to data table empty curprodindx: 34, curprodhead: 28 add action identifier to data table empty curprodindx: 34, curprodhead: 28 add sequence identifier to data table empty curprodindx: 34, curprodhead: 28 cleanup end of production curprodindx: 34, curprodhead: 28 start next production; check if alternate to prior production decl curprodindx: 40, curprodhead: 35 add token to data table empty curprodindx: 41, curprodhead: 35 add action identifier to data table empty curprodindx: 41, curprodhead: 35 add sequence identifier to data table empty curprodindx: 41, curprodhead: 35 cleanup end of production curprodindx: 41, curprodhead: 35 start next production; check if alternate to prior production empty curprodindx: 47, curprodhead: 42 add token to data table empty curprodindx: 48, curprodhead: 42 add action identifier to data table empty curprodindx: 48, curprodhead: 42 add sequence identifier to data table empty curprodindx: 48, curprodhead: 42 cleanup end of production curprodindx: 48, curprodhead: 42 start next production; check if alternate to prior production finish curprodindx: 54, curprodhead: 49 add token to data table empty curprodindx: 55, curprodhead: 49 add action identifier to data table empty curprodindx: 55, curprodhead: 49 add sequence identifier to data table empty curprodindx: 55, curprodhead: 49 cleanup end of production curprodindx: 55, curprodhead: 49 fixup fwd links in data table then generate three parse tables 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 0 0 6: 0 0 7: 47 15 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 0 0 14: 29 4 exhausted 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 0 0 20: 0 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 0 0 34: 47 42 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 0 0 40: 0 0 41: 47 42 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 0 0 47: 0 0 48: 29 0 empty 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 start over mainloop curprodhead: 1, prodlist[curprodhead]: 13 j: 1, k: 1 i: 1, j: 1, k: 1 j: 1, k: 8 i: 2, j: 1, k: 8 j: 1, k: 15 j: 1, k: 28 j: 1, k: 35 j: 1, k: 42 j: 1, k: 49 space reservation for alternates: prodlist[curprodhead + 4]:prodlist[ 5]: 1, new nextavailentry: 5 alternates: 2, for entry: 1 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 1 0 6: 6 0 7: 47 15 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 13 0 14: 29 4 exhausted 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 0 0 20: 0 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 0 0 34: 47 42 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 0 0 40: 0 0 41: 47 42 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 0 0 47: 0 0 48: 29 0 empty 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 first definition here finished fixup3 forward references here finished fixup4 forward references here prodlist prior to loop1 entry ---------curprodhead prod: program 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 1 0 6: 6 0 7: 47 15 prod: program 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 13 0 14: 29 4 exhausted prod: decl_list 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 0 0 20: 0 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 prod: decl_list 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 0 0 34: 47 42 prod: decl 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 0 0 40: 0 0 41: 47 42 prod: empty 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 0 0 47: 0 0 48: 29 0 empty prod: finish 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 loop1 j: 1 k: 1 alternate entry at: 1, alt production: 1 last token in sequence tokenlist: 0 actionlist: -3 sequencelist: 0 loop2 prodlist[k + 1]: 8 prodlist[k + 5]: 8 end of loop2-- j: 1 k: 1 loop1 j: 1 k: 8 alternate entry at: 2, alt production: 8 last token in sequence tokenlist: -4 actionlist: 0 sequencelist: -1 loop2 prodlist[k + 1]: 15 prodlist[k + 5]: 15 end of loop2-- j: 1 k: 8 loop1 j: 1 k: 15 loop1 j: 1 k: 28 loop1 j: 1 k: 35 loop1 j: 1 k: 42 loop1 j: 1 k: 49 end of loop1-- j: 1 k: 56 bottom of main loop-- curprodhead: 15, j: 1, k: 15 progress of output tables: 0 | 0 | 0 | 0 1 | 0 |empty | 0 2 |exhausted | 0 |EMPTY 3 | 0 | 0 | 0 4 | 0 | 0 | 0 mainloop curprodhead: 15, prodlist[curprodhead]: 14 j: 15, k: 15 i: 1, j: 15, k: 15 j: 15, k: 28 i: 2, j: 15, k: 28 j: 15, k: 35 j: 15, k: 42 j: 15, k: 49 space reservation for alternates: prodlist[curprodhead + 4]:prodlist[ 19]: 5, new nextavailentry: 9 alternates: 2, for entry: 15 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 5 0 20: 20 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 33 0 34: 47 42 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 0 0 40: 0 0 41: 47 42 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 0 0 47: 0 0 48: 29 0 empty 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 first definition here fixup3 forward references here tokenlist[ 1] fixup: 5 finished fixup3 forward references here finished fixup4 forward references here prodlist prior to loop1 entry prod: program 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 prod: program 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted ---------curprodhead prod: decl_list 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 5 0 20: 20 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 prod: decl_list 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 33 0 34: 47 42 prod: decl 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 0 0 40: 0 0 41: 47 42 prod: empty 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 0 0 47: 0 0 48: 29 0 empty prod: finish 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 loop1 j: 15 k: 15 alternate entry at: 5, alt production: 15 not last token in sequence tokenlist: 0 actionlist: -1 sequencelist: -1 loop2 prodlist[k + 1]: 28 prodlist[k + 5]: 22 not last token in sequence loop2 prodlist[k + 1]: 28 prodlist[k + 5]: 23 not last token in sequence loop2 prodlist[k + 1]: 28 prodlist[k + 5]: 24 not last token in sequence loop2 prodlist[k + 1]: 28 prodlist[k + 5]: 25 not last token in sequence loop2 prodlist[k + 1]: 28 prodlist[k + 5]: 26 not last token in sequence loop2 prodlist[k + 1]: 28 prodlist[k + 5]: 27 last token in sequence loop2 prodlist[k + 1]: 28 prodlist[k + 5]: 28 end of loop2-- j: 15 k: 15 loop1 j: 15 k: 28 alternate entry at: 6, alt production: 28 last token in sequence tokenlist: 0 actionlist: 0 sequencelist: -2 loop2 prodlist[k + 1]: 35 prodlist[k + 5]: 35 end of loop2-- j: 15 k: 28 loop1 j: 15 k: 35 loop1 j: 15 k: 42 loop1 j: 15 k: 49 end of loop1-- j: 15 k: 56 bottom of main loop-- curprodhead: 35, j: 15, k: 35 progress of output tables: 0 | 0 | 0 | 0 1 | 5+NONTERMINAL|empty | 0 2 |exhausted | 0 |EMPTY 3 | 0 | 0 | 0 4 | 0 | 0 | 0 5 | 0 | -1 | 9 6 | 0 | 0 | -2 7 | 0 | 0 | 0 8 | 0 | 0 | 0 9 | 12 | -1 | 11 10 |empty | -1 |EMPTY 11 | 28 | -1 | 13 12 |empty | -1 |EMPTY 13 | 12 | -1 | 15 14 |empty | -1 |EMPTY 15 |89 | -1 | 17 16 |empty | -1 |EMPTY 17 | 12 | -1 |EMPTY 18 |empty | -1 |EMPTY 19 | 5+NONTERMINAL| 0 | 0 mainloop curprodhead: 35, prodlist[curprodhead]: 16 j: 35, k: 35 i: 1, j: 35, k: 35 j: 35, k: 42 j: 35, k: 49 space reservation for alternates: prodlist[curprodhead + 4]:prodlist[ 39]: 20, new nextavailentry: 23 alternates: 1, for entry: 35 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 7 0 20: 28 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 35 0 34: 47 42 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 20 0 40: 40 0 41: 47 42 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 0 0 47: 0 0 48: 29 0 empty 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 first definition here fixup3 forward references here tokenlist[ 5] fixup: 20 finished fixup3 forward references here finished fixup4 forward references here prodlist prior to loop1 entry prod: program 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 prod: program 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted prod: decl_list 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 7 0 20: 28 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 prod: decl_list 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 35 0 34: 47 42 ---------curprodhead prod: decl 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 20 0 40: 40 0 41: 47 42 prod: empty 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 0 0 47: 0 0 48: 29 0 empty prod: finish 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 loop1 j: 35 k: 35 alternate entry at: 20, alt production: 35 last token in sequence tokenlist: -6 actionlist: 0 sequencelist: -6 loop2 prodlist[k + 1]: 42 prodlist[k + 5]: 42 end of loop2-- j: 35 k: 35 loop1 j: 35 k: 42 loop1 j: 35 k: 49 end of loop1-- j: 35 k: 56 bottom of main loop-- curprodhead: 42, j: 35, k: 42 progress of output tables: 0 | 0 | 0 | 0 1 | 5+NONTERMINAL|empty | 0 2 |exhausted | 0 |EMPTY 3 | 0 | 0 | 0 4 | 0 | 0 | 0 5 | 20+NONTERMINAL| -1 | 9 6 | 0 | 0 | -2 7 | 0 | 0 | 0 8 | 0 | 0 | 0 9 | 12 | -1 | 11 10 |empty | -1 |EMPTY 11 | 28 | -1 | 13 12 |empty | -1 |EMPTY 13 | 12 | -1 | 15 14 |empty | -1 |EMPTY 15 |89 | -1 | 17 16 |empty | -1 |EMPTY 17 | 12 | -1 |EMPTY 18 |empty | -1 |EMPTY 19 | 5+NONTERMINAL| 0 | 0 20 |empty | 0 | -6 21 | 0 | 0 | 0 22 | 0 | 0 | 0 mainloop curprodhead: 42, prodlist[curprodhead]: 15 j: 42, k: 42 i: 1, j: 42, k: 42 j: 42, k: 49 space reservation for alternates: prodlist[curprodhead + 4]:prodlist[ 46]: 23, new nextavailentry: 26 alternates: 1, for entry: 42 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 7 0 20: 28 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 35 0 34: 47 42 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 21 0 40: 42 0 41: 47 42 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 23 0 47: 47 0 48: 29 0 empty 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 first definition here fixup3 forward references here tokenlist[ 20] fixup: 23 tokenlist[ 6] fixup: 23 finished fixup3 forward references here fixup forward4 references here sequencelist[ 20] fixup: 23 sequencelist[ 6] fixup: 23 sequencelist[ 2] fixup: 23 sequencelist[ 1] fixup: 23 finished fixup4 forward references here prodlist prior to loop1 entry prod: program 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 prod: program 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted prod: decl_list 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 7 0 20: 28 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 prod: decl_list 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 35 0 34: 47 42 prod: decl 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 21 0 40: 42 0 41: 47 42 ---------curprodhead prod: empty 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 23 0 47: 47 0 48: 29 0 empty prod: finish 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 0 0 54: 0 0 55: 47 42 loop1 j: 42 k: 42 alternate entry at: 23, alt production: 42 last token in sequence tokenlist: 0 actionlist: 0 sequencelist: 23 loop2 prodlist[k + 1]: 49 prodlist[k + 5]: 49 end of loop2-- j: 42 k: 42 loop1 j: 42 k: 49 end of loop1-- j: 42 k: 56 bottom of main loop-- curprodhead: 49, j: 42, k: 49 progress of output tables: 0 | 0 | 0 | 0 1 | 5+NONTERMINAL|empty | 23 2 |exhausted | 0 | 23 3 | 0 | 0 | 0 4 | 0 | 0 | 0 5 | 20+NONTERMINAL| -1 | 9 6 | 23+NONTERMINAL| 0 | 23 7 | 0 | 0 | 0 8 | 0 | 0 | 0 9 | 12 | -1 | 11 10 |empty | -1 |EMPTY 11 | 28 | -1 | 13 12 |empty | -1 |EMPTY 13 | 12 | -1 | 15 14 |empty | -1 |EMPTY 15 |89 | -1 | 17 16 |empty | -1 |EMPTY 17 | 12 | -1 |EMPTY 18 |empty | -1 |EMPTY 19 | 5+NONTERMINAL| 0 | 0 20 | 23+NONTERMINAL| 0 | 23 21 | 0 | 0 | 0 22 | 0 | 0 | 0 23 | 0 | 0 | 23 24 | 0 | 0 | 0 25 | 0 | 0 | 0 mainloop curprodhead: 49, prodlist[curprodhead]: 17 j: 49, k: 49 i: 1, j: 49, k: 49 space reservation for alternates: prodlist[curprodhead + 4]:prodlist[ 53]: 26, new nextavailentry: 29 alternates: 1, for entry: 49 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 7 0 20: 28 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 35 0 34: 47 42 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 21 0 40: 42 0 41: 47 42 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 24 0 47: 49 0 48: 29 0 empty 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 26 0 54: 54 0 55: 47 42 first definition here finished fixup3 forward references here fixup forward4 references here sequencelist[ 19] fixup: 26 finished fixup4 forward references here prodlist prior to loop1 entry prod: program 1: 13 0 2: 8 0 3: 29 3 empty 4: 47 42 5: 3 0 6: 8 0 7: 47 15 prod: program 8: 13 0 9: 15 0 10: 29 0 empty 11: 47 42 12: 0 0 13: 15 0 14: 29 4 exhausted prod: decl_list 15: 14 0 16: 28 0 17: 29 0 empty 18: 47 49 19: 7 0 20: 28 0 21: 47 35 22: 12 0 23: 28 99 24: 12 0 25: 29 5 89 26: 12 0 27: 47 15 prod: decl_list 28: 14 0 29: 35 0 30: 29 0 empty 31: 47 42 32: 0 0 33: 35 0 34: 47 42 prod: decl 35: 16 0 36: 42 0 37: 29 0 empty 38: 47 42 39: 21 0 40: 42 0 41: 47 42 prod: empty 42: 15 0 43: 49 0 44: 29 0 empty 45: 47 42 46: 24 0 47: 49 0 48: 29 0 empty ---------curprodhead prod: finish 49: 17 0 50: 56 0 51: 29 0 empty 52: 47 42 53: 26 0 54: 54 0 55: 47 42 loop1 j: 49 k: 49 alternate entry at: 26, alt production: 49 last token in sequence tokenlist: 279 actionlist: 0 sequencelist: 23 loop2 prodlist[k + 1]: 56 prodlist[k + 5]: 56 end of loop2-- j: 49 k: 49 end of loop1-- j: 49 k: 56 bottom of main loop-- curprodhead: 56, j: 49, k: 56 progress of output tables: 0 | 0 | 0 | 0 1 | 5+NONTERMINAL|empty | 23 2 |exhausted | 0 | 23 3 | 0 | 0 | 0 4 | 0 | 0 | 0 5 | 20+NONTERMINAL| -1 | 9 6 | 23+NONTERMINAL| 0 | 23 7 | 0 | 0 | 0 8 | 0 | 0 | 0 9 | 12 | -1 | 11 10 |empty | -1 |EMPTY 11 | 28 | -1 | 13 12 |empty | -1 |EMPTY 13 | 12 | -1 | 15 14 |empty | -1 |EMPTY 15 |89 | -1 | 17 16 |empty | -1 |EMPTY 17 | 12 | -1 |EMPTY 18 |empty | -1 |EMPTY 19 | 5+NONTERMINAL| 0 | 26 20 | 23+NONTERMINAL| 0 | 23 21 | 0 | 0 | 0 22 | 0 | 0 | 0 23 | 0 | 0 | 23 24 | 0 | 0 | 0 25 | 0 | 0 | 0 26 | 23+NONTERMINAL| 0 | 23 27 | 0 | 0 | 0 28 | 0 | 0 | 0 output1 0 |null | 0 | 0 1 | 5+NONTERMINAL|empty | 23 2 |exhausted | 0 | 23 3 |null | 0 | 0 4 |null | 0 | 0 5 | 20+NONTERMINAL|EMPTY | 9 6 | 23+NONTERMINAL| 0 | 23 7 |null | 0 | 0 8 |null | 0 | 0 9 |; |EMPTY | 11 10 |EXHAUSTED |EMPTY |EMPTY 11 | 0|EMPTY | 13 12 |EXHAUSTED |EMPTY |EMPTY 13 |; |EMPTY | 15 14 |EXHAUSTED |EMPTY |EMPTY 15 |89 |EMPTY | 17 16 |EXHAUSTED |EMPTY |EMPTY 17 |; |EMPTY |EMPTY 18 |EXHAUSTED |EMPTY |EMPTY 19 | 5+NONTERMINAL| 0 | 26 20 | 23+NONTERMINAL| 0 | 23 21 |null | 0 | 0 22 |null | 0 | 0 23 |null | 0 | 23 24 |null | 0 | 0 25 |null | 0 | 0 26 | 23+NONTERMINAL| 0 | 23 27 |null | 0 | 0 28 |null | 0 | 0 symbol table at entry 9,int 40 0 0 0 symbol table at entry 13,program 30 1 1 1 symbol table at entry 10,return 41 0 0 0 symbol table at entry 11,switch 42 0 0 0 symbol table at entry 12,while 43 0 0 0 symbol table at entry 13,program 30 1 1 1 symbol table at entry 14,decl_list 30 15 5 5 symbol table at entry 15,empty 30 42 23 23 symbol table at entry 16,decl 30 35 20 20 symbol table at entry 17,finish 30 49 26 26 legal program # decl_list # empty # empty program#"exhausted"#empty#empty decl_list#decl;99;"89";decl_list#empty#finish decl_list#empty#empty#empty decl#empty#empty#empty empty#"empty"#empty#empty finish#empty#empty#empty #