/* y.output. Generated by HYACC. */ /* Input file: calc.y */ --Hash table-- HashTbl[0] (count=1): [type=-,seq=-1,val=0] HashTbl[40] (count=1): ( [type=T,seq=9,val=40,prec=0,assoc=none] HashTbl[41] (count=1): ) [type=T,seq=10,val=41,prec=0,assoc=none] HashTbl[42] (count=1): * [type=T,seq=6,val=42,prec=2,assoc=left] HashTbl[43] (count=1): + [type=T,seq=4,val=43,prec=1,assoc=left] HashTbl[45] (count=1): - [type=T,seq=5,val=45,prec=1,assoc=left] HashTbl[47] (count=1): / [type=T,seq=7,val=47,prec=2,assoc=left] HashTbl[94] (count=1): ^ [type=T,seq=8,val=94,prec=4,assoc=right] HashTbl[202] (count=1): \n [type=T,seq=1,val=10,prec=0,assoc=none] HashTbl[218] (count=1): NEG [type=T,seq=-1,val=258,prec=3,assoc=left] HashTbl[240] (count=1): NUM [type=T,seq=3,val=257,prec=0,assoc=none] HashTbl[333] (count=1): exp [type=NT,seq=14,val=-3] HashTbl[347] (count=1): $end [type=T,seq=0,val=0] HashTbl[424] (count=1): line [type=NT,seq=13,val=-2] HashTbl[554] (count=1): error [type=T,seq=2,val=256,prec=0,assoc=none] HashTbl[560] (count=1): input [type=NT,seq=12,val=-1] HashTbl[660] (count=1): $accept [type=NT,seq=11,val=0] --hash table size: 997-- --symbol count: 17, load factor lamda (17/997) = 0.017-- --list count: 17. Hash Table cell usage (17/997) = 0.017-- --symbols per list: 1.000-- --Grammar-- Terminals (10): \n, error, NUM, +, -, *, /, ^, (, ) Non-terminals (4): $accept, input, line, exp Vanish symbols (2): input, input, $accept Goal symbol: $accept Rules: (0) $accept -> input (unit production) (1) input -> (2) input -> input line (3) line -> \n (unit production) (Precedence Terminal: \n) (4) line -> exp \n (Precedence Terminal: \n) (5) line -> error \n (Precedence Terminal: \n) (6) exp -> NUM (unit production) (Precedence Terminal: NUM) (7) exp -> exp + exp (Precedence Terminal: +) (8) exp -> exp - exp (Precedence Terminal: -) (9) exp -> exp * exp (Precedence Terminal: *) (10) exp -> exp / exp (Precedence Terminal: /) (11) exp -> - exp (Precedence Terminal: NEG) (12) exp -> exp ^ exp (Precedence Terminal: ^) (13) exp -> ( exp ) (Precedence Terminal: )) Number of Rules: 14 --generate parsing machine-- 1 states, current state is 0 input -> . input line {$end} string 'line ' has theads: \n error NUM - ( input -> . input line {$end, (, -, NUM, \n, error} string 'line ' has theads: \n error NUM - ( 2 states, current state is 1 line -> . exp \n {$end, (, -, NUM, \n, error} string '\n ' has theads: \n exp -> . exp + exp {\n} string '+ exp ' has theads: + exp -> . exp - exp {+, \n} string '- exp ' has theads: - exp -> . exp * exp {+, -, \n} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, \n} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n} string '^ exp ' has theads: ^ exp -> . exp + exp {*, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {*, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {*, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n, ^} string '^ exp ' has theads: ^ 9 states, current state is 2 9 states, current state is 3 9 states, current state is 4 15 states, current state is 5 16 states, current state is 6 16 states, current state is 7 exp -> . exp + exp {*, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {*, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {*, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n, ^} string '^ exp ' has theads: ^ 17 states, current state is 8 exp -> ( . exp ) {*, +, -, /, \n, ^} (core) string ') ' has theads: ) exp -> . exp + exp {)} string '+ exp ' has theads: + exp -> . exp - exp {), +} string '- exp ' has theads: - exp -> . exp * exp {), +, -} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /} string '^ exp ' has theads: ^ exp -> . exp + exp {), *, +, -, /, ^} string '+ exp ' has theads: + exp -> . exp - exp {), *, +, -, /, ^} string '- exp ' has theads: - exp -> . exp * exp {), *, +, -, /, ^} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -, /, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /, ^} string '^ exp ' has theads: ^ exp -> . exp + exp {), *, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {), *, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {), *, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /, \n, ^} string '^ exp ' has theads: ^ exp -> ( . exp ) {), *, +, -, /, \n, ^} (core) string ') ' has theads: ) 18 states, current state is 9 exp -> . exp + exp {*, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {*, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {*, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n, ^} string '^ exp ' has theads: ^ 19 states, current state is 10 exp -> . exp + exp {*, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {*, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {*, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n, ^} string '^ exp ' has theads: ^ 20 states, current state is 11 exp -> . exp + exp {*, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {*, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {*, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n, ^} string '^ exp ' has theads: ^ 21 states, current state is 12 exp -> . exp + exp {*, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {*, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {*, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n, ^} string '^ exp ' has theads: ^ 22 states, current state is 13 exp -> . exp + exp {*, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {*, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {*, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {*, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {*, +, -, /, \n, ^} string '^ exp ' has theads: ^ 23 states, current state is 14 23 states, current state is 15 23 states, current state is 16 23 states, current state is 17 exp -> . exp + exp {), *, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {), *, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {), *, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /, \n, ^} string '^ exp ' has theads: ^ exp -> . exp + exp {), *, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {), *, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {), *, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /, \n, ^} string '^ exp ' has theads: ^ exp -> . exp + exp {), *, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {), *, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {), *, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /, \n, ^} string '^ exp ' has theads: ^ exp -> . exp + exp {), *, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {), *, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {), *, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /, \n, ^} string '^ exp ' has theads: ^ exp -> . exp + exp {), *, +, -, /, \n, ^} string '+ exp ' has theads: + exp -> . exp - exp {), *, +, -, /, \n, ^} string '- exp ' has theads: - exp -> . exp * exp {), *, +, -, /, \n, ^} string '* exp ' has theads: * exp -> . exp / exp {), *, +, -, /, \n, ^} string '/ exp ' has theads: / exp -> . exp ^ exp {), *, +, -, /, \n, ^} string '^ exp ' has theads: ^ 24 states, current state is 18 24 states, current state is 19 24 states, current state is 20 24 states, current state is 21 24 states, current state is 22 24 states, current state is 23 --Parsing Table-- State $end \n error NUM + - * / ^ ( ) input line exp 0 r1 r1 r1 r1 0 r1 0 0 0 r1 0 g1 0 0 1 a0 s3 s5 s6 0 s7 0 0 0 s8 0 0 g2 g4 2 r2 r2 r2 r2 0 r2 0 0 0 r2 0 0 0 0 3 r3 r3 r3 r3 0 r3 0 0 0 r3 0 0 0 0 4 0 s14 0 0 s10 s11 s9 s12 s13 0 0 0 0 0 5 0 s15 0 0 0 0 0 0 0 0 0 0 0 0 6 0 r6 0 0 r6 r6 r6 r6 r6 0 r6 0 0 0 7 0 0 0 s6 0 s7 0 0 0 s8 0 0 0 g16 8 0 0 0 s6 0 s7 0 0 0 s8 0 0 0 g17 9 0 0 0 s6 0 s7 0 0 0 s8 0 0 0 g18 10 0 0 0 s6 0 s7 0 0 0 s8 0 0 0 g19 11 0 0 0 s6 0 s7 0 0 0 s8 0 0 0 g20 12 0 0 0 s6 0 s7 0 0 0 s8 0 0 0 g21 13 0 0 0 s6 0 s7 0 0 0 s8 0 0 0 g22 14 r4 r4 r4 r4 0 r4 0 0 0 r4 0 0 0 0 15 r5 r5 r5 r5 0 r5 0 0 0 r5 0 0 0 0 16 0 r11 0 0 r11 r11 r11 r11 s13 0 r11 0 0 0 17 0 0 0 0 s10 s11 s9 s12 s13 0 s23 0 0 0 18 0 r9 0 0 r9 r9 r9 r9 s13 0 r9 0 0 0 19 0 r7 0 0 r7 r7 s9 s12 s13 0 r7 0 0 0 20 0 r8 0 0 r8 r8 s9 s12 s13 0 r8 0 0 0 21 0 r10 0 0 r10 r10 r10 r10 s13 0 r10 0 0 0 22 0 r12 0 0 r12 r12 r12 r12 s13 0 r12 0 0 0 23 0 r13 0 0 r13 r13 r13 r13 r13 0 r13 0 0 0 Note: 1. si means shift and stack state i 2. ri means reduce by production numbered i 3. a0 means accept 4. gi means go to state i 5. 0 means error state 0 [config: 3, core config: 1] (0) $accept -> . input {$end} (core) (1) input -> . {$end, (, -, NUM, \n, error} (2) input -> . input line {$end, (, -, NUM, \n, error} $end [0] reduce (1) \n [10] reduce (1) error [256] reduce (1) NUM [257] reduce (1) - [45] reduce (1) ( [40] reduce (1) input [-1] goto 1 state 1 [config: 13, core config: 2] (0) $accept -> input . {$end} (core) (2) input -> input . line {$end, (, -, NUM, \n, error} (core) (3) line -> . \n {$end, (, -, NUM, \n, error} (4) line -> . exp \n {$end, (, -, NUM, \n, error} (5) line -> . error \n {$end, (, -, NUM, \n, error} (6) exp -> . NUM {*, +, -, /, \n, ^} (7) exp -> . exp + exp {*, +, -, /, \n, ^} (8) exp -> . exp - exp {*, +, -, /, \n, ^} (9) exp -> . exp * exp {*, +, -, /, \n, ^} (10) exp -> . exp / exp {*, +, -, /, \n, ^} (11) exp -> . - exp {*, +, -, /, \n, ^} (12) exp -> . exp ^ exp {*, +, -, /, \n, ^} (13) exp -> . ( exp ) {*, +, -, /, \n, ^} $end [0] Accept \n [10] shift 3 error [256] shift 5 NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 line [-2] goto 2 exp [-3] goto 4 state 2 [config: 1, core config: 1] (2) input -> input line . {$end, (, -, NUM, \n, error} (core) . reduce (2) state 3 [config: 1, core config: 1] (3) line -> \n . {$end, (, -, NUM, \n, error} (core) . reduce (3) state 4 [config: 6, core config: 6] (9) exp -> exp . * exp {*, +, -, /, \n, ^} (core) (7) exp -> exp . + exp {*, +, -, /, \n, ^} (core) (8) exp -> exp . - exp {*, +, -, /, \n, ^} (core) (10) exp -> exp . / exp {*, +, -, /, \n, ^} (core) (12) exp -> exp . ^ exp {*, +, -, /, \n, ^} (core) (4) line -> exp . \n {$end, (, -, NUM, \n, error} (core) \n [10] shift 14 + [43] shift 10 - [45] shift 11 * [42] shift 9 / [47] shift 12 ^ [94] shift 13 state 5 [config: 1, core config: 1] (5) line -> error . \n {$end, (, -, NUM, \n, error} (core) \n [10] shift 15 state 6 [config: 1, core config: 1] (6) exp -> NUM . {), *, +, -, /, \n, ^} (core) . reduce (6) state 7 [config: 9, core config: 1] (11) exp -> - . exp {), *, +, -, /, \n, ^} (core) (6) exp -> . NUM {), *, +, -, /, \n, ^} (7) exp -> . exp + exp {), *, +, -, /, \n, ^} (8) exp -> . exp - exp {), *, +, -, /, \n, ^} (9) exp -> . exp * exp {), *, +, -, /, \n, ^} (10) exp -> . exp / exp {), *, +, -, /, \n, ^} (11) exp -> . - exp {), *, +, -, /, \n, ^} (12) exp -> . exp ^ exp {), *, +, -, /, \n, ^} (13) exp -> . ( exp ) {), *, +, -, /, \n, ^} NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 exp [-3] goto 16 state 8 [config: 9, core config: 1] (13) exp -> ( . exp ) {), *, +, -, /, \n, ^} (core) (6) exp -> . NUM {), *, +, -, /, ^} (7) exp -> . exp + exp {), *, +, -, /, ^} (8) exp -> . exp - exp {), *, +, -, /, ^} (9) exp -> . exp * exp {), *, +, -, /, ^} (10) exp -> . exp / exp {), *, +, -, /, ^} (11) exp -> . - exp {), *, +, -, /, ^} (12) exp -> . exp ^ exp {), *, +, -, /, ^} (13) exp -> . ( exp ) {), *, +, -, /, ^} NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 exp [-3] goto 17 state 9 [config: 9, core config: 1] (9) exp -> exp * . exp {), *, +, -, /, \n, ^} (core) (6) exp -> . NUM {), *, +, -, /, \n, ^} (7) exp -> . exp + exp {), *, +, -, /, \n, ^} (8) exp -> . exp - exp {), *, +, -, /, \n, ^} (9) exp -> . exp * exp {), *, +, -, /, \n, ^} (10) exp -> . exp / exp {), *, +, -, /, \n, ^} (11) exp -> . - exp {), *, +, -, /, \n, ^} (12) exp -> . exp ^ exp {), *, +, -, /, \n, ^} (13) exp -> . ( exp ) {), *, +, -, /, \n, ^} NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 exp [-3] goto 18 state 10 [config: 9, core config: 1] (7) exp -> exp + . exp {), *, +, -, /, \n, ^} (core) (6) exp -> . NUM {), *, +, -, /, \n, ^} (7) exp -> . exp + exp {), *, +, -, /, \n, ^} (8) exp -> . exp - exp {), *, +, -, /, \n, ^} (9) exp -> . exp * exp {), *, +, -, /, \n, ^} (10) exp -> . exp / exp {), *, +, -, /, \n, ^} (11) exp -> . - exp {), *, +, -, /, \n, ^} (12) exp -> . exp ^ exp {), *, +, -, /, \n, ^} (13) exp -> . ( exp ) {), *, +, -, /, \n, ^} NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 exp [-3] goto 19 state 11 [config: 9, core config: 1] (8) exp -> exp - . exp {), *, +, -, /, \n, ^} (core) (6) exp -> . NUM {), *, +, -, /, \n, ^} (7) exp -> . exp + exp {), *, +, -, /, \n, ^} (8) exp -> . exp - exp {), *, +, -, /, \n, ^} (9) exp -> . exp * exp {), *, +, -, /, \n, ^} (10) exp -> . exp / exp {), *, +, -, /, \n, ^} (11) exp -> . - exp {), *, +, -, /, \n, ^} (12) exp -> . exp ^ exp {), *, +, -, /, \n, ^} (13) exp -> . ( exp ) {), *, +, -, /, \n, ^} NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 exp [-3] goto 20 state 12 [config: 9, core config: 1] (10) exp -> exp / . exp {), *, +, -, /, \n, ^} (core) (6) exp -> . NUM {), *, +, -, /, \n, ^} (7) exp -> . exp + exp {), *, +, -, /, \n, ^} (8) exp -> . exp - exp {), *, +, -, /, \n, ^} (9) exp -> . exp * exp {), *, +, -, /, \n, ^} (10) exp -> . exp / exp {), *, +, -, /, \n, ^} (11) exp -> . - exp {), *, +, -, /, \n, ^} (12) exp -> . exp ^ exp {), *, +, -, /, \n, ^} (13) exp -> . ( exp ) {), *, +, -, /, \n, ^} NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 exp [-3] goto 21 state 13 [config: 9, core config: 1] (12) exp -> exp ^ . exp {), *, +, -, /, \n, ^} (core) (6) exp -> . NUM {), *, +, -, /, \n, ^} (7) exp -> . exp + exp {), *, +, -, /, \n, ^} (8) exp -> . exp - exp {), *, +, -, /, \n, ^} (9) exp -> . exp * exp {), *, +, -, /, \n, ^} (10) exp -> . exp / exp {), *, +, -, /, \n, ^} (11) exp -> . - exp {), *, +, -, /, \n, ^} (12) exp -> . exp ^ exp {), *, +, -, /, \n, ^} (13) exp -> . ( exp ) {), *, +, -, /, \n, ^} NUM [257] shift 6 - [45] shift 7 ( [40] shift 8 exp [-3] goto 22 state 14 [config: 1, core config: 1] (4) line -> exp \n . {$end, (, -, NUM, \n, error} (core) . reduce (4) state 15 [config: 1, core config: 1] (5) line -> error \n . {$end, (, -, NUM, \n, error} (core) . reduce (5) state 16 [config: 6, core config: 6] (11) exp -> - exp . {), *, +, -, /, \n, ^} (core) (9) exp -> exp . * exp {*, +, -, /, \n, ^} (core) (7) exp -> exp . + exp {*, +, -, /, \n, ^} (core) (8) exp -> exp . - exp {*, +, -, /, \n, ^} (core) (10) exp -> exp . / exp {*, +, -, /, \n, ^} (core) (12) exp -> exp . ^ exp {*, +, -, /, \n, ^} (core) \n [10] reduce (11) + [43] reduce (11) - [45] reduce (11) * [42] reduce (11) / [47] reduce (11) ^ [94] shift 13 ) [41] reduce (11) state 17 [config: 6, core config: 6] (13) exp -> ( exp . ) {), *, +, -, /, \n, ^} (core) (9) exp -> exp . * exp {), *, +, -, /, ^} (core) (7) exp -> exp . + exp {), *, +, -, /, ^} (core) (8) exp -> exp . - exp {), *, +, -, /, ^} (core) (10) exp -> exp . / exp {), *, +, -, /, ^} (core) (12) exp -> exp . ^ exp {), *, +, -, /, ^} (core) + [43] shift 10 - [45] shift 11 * [42] shift 9 / [47] shift 12 ^ [94] shift 13 ) [41] shift 23 state 18 [config: 6, core config: 6] (9) exp -> exp . * exp {*, +, -, /, \n, ^} (core) (9) exp -> exp * exp . {), *, +, -, /, \n, ^} (core) (7) exp -> exp . + exp {*, +, -, /, \n, ^} (core) (8) exp -> exp . - exp {*, +, -, /, \n, ^} (core) (10) exp -> exp . / exp {*, +, -, /, \n, ^} (core) (12) exp -> exp . ^ exp {*, +, -, /, \n, ^} (core) \n [10] reduce (9) + [43] reduce (9) - [45] reduce (9) * [42] reduce (9) / [47] reduce (9) ^ [94] shift 13 ) [41] reduce (9) state 19 [config: 6, core config: 6] (9) exp -> exp . * exp {*, +, -, /, \n, ^} (core) (7) exp -> exp . + exp {*, +, -, /, \n, ^} (core) (7) exp -> exp + exp . {), *, +, -, /, \n, ^} (core) (8) exp -> exp . - exp {*, +, -, /, \n, ^} (core) (10) exp -> exp . / exp {*, +, -, /, \n, ^} (core) (12) exp -> exp . ^ exp {*, +, -, /, \n, ^} (core) \n [10] reduce (7) + [43] reduce (7) - [45] reduce (7) * [42] shift 9 / [47] shift 12 ^ [94] shift 13 ) [41] reduce (7) state 20 [config: 6, core config: 6] (9) exp -> exp . * exp {*, +, -, /, \n, ^} (core) (7) exp -> exp . + exp {*, +, -, /, \n, ^} (core) (8) exp -> exp . - exp {*, +, -, /, \n, ^} (core) (8) exp -> exp - exp . {), *, +, -, /, \n, ^} (core) (10) exp -> exp . / exp {*, +, -, /, \n, ^} (core) (12) exp -> exp . ^ exp {*, +, -, /, \n, ^} (core) \n [10] reduce (8) + [43] reduce (8) - [45] reduce (8) * [42] shift 9 / [47] shift 12 ^ [94] shift 13 ) [41] reduce (8) state 21 [config: 6, core config: 6] (9) exp -> exp . * exp {*, +, -, /, \n, ^} (core) (7) exp -> exp . + exp {*, +, -, /, \n, ^} (core) (8) exp -> exp . - exp {*, +, -, /, \n, ^} (core) (10) exp -> exp . / exp {*, +, -, /, \n, ^} (core) (10) exp -> exp / exp . {), *, +, -, /, \n, ^} (core) (12) exp -> exp . ^ exp {*, +, -, /, \n, ^} (core) \n [10] reduce (10) + [43] reduce (10) - [45] reduce (10) * [42] reduce (10) / [47] reduce (10) ^ [94] shift 13 ) [41] reduce (10) state 22 [config: 6, core config: 6] (9) exp -> exp . * exp {*, +, -, /, \n, ^} (core) (7) exp -> exp . + exp {*, +, -, /, \n, ^} (core) (8) exp -> exp . - exp {*, +, -, /, \n, ^} (core) (10) exp -> exp . / exp {*, +, -, /, \n, ^} (core) (12) exp -> exp . ^ exp {*, +, -, /, \n, ^} (core) (12) exp -> exp ^ exp . {), *, +, -, /, \n, ^} (core) \n [10] reduce (12) + [43] reduce (12) - [45] reduce (12) * [42] reduce (12) / [47] reduce (12) ^ [94] shift 13 ) [41] reduce (12) state 23 [config: 1, core config: 1] (13) exp -> ( exp ) . {), *, +, -, /, \n, ^} (core) . reduce (13) --No. of configurations for each state-- 1: 3 13 1 1 6 1 1 9 9 9 9 9 9 9 1 1 6 6 6 6 21: 6 6 6 1 Average configurations per state: 5.58 (min: 1, max: 13) --state hash table-- ----------------------- cell | count | state ----------------------- [ 0] (count=1) : 0 [ 77] (count=1) : 7 [181] (count=1) : 13 [208] (count=1) : 2 [209] (count=1) : 1 [227] (count=1) : 19 [271] (count=1) : 8 [285] (count=1) : 23 [298] (count=1) : 3 [324] (count=1) : 20 [402] (count=1) : 14 [421] (count=1) : 18 [492] (count=1) : 5 [499] (count=1) : 15 [518] (count=1) : 21 [589] (count=1) : 6 [608] (count=1) : 16 [693] (count=1) : 10 [712] (count=1) : 22 [790] (count=1) : 11 [802] (count=1) : 17 [887] (count=1) : 9 [919] (count=1) : 4 [984] (count=1) : 12 24 states, 24 lists, in average 1.00 states/list. load factor: 0.02, hash table cell usage: 0.02 10 terminals, 4 nonterminals 14 grammar rules 24 states after combine compatible states 0 shift/reduce conflict, 0 reduce/reduce conflict