python/oV211225

arithExpr --- begin test --------------------------------
grammar source, ('s=s+p', 's = p', "p = p '*' i", 'p = i', "i = '(' s  \t\t ')'", "i = '0'", "i = '1'", "i = '2'")
dbg: lahGen, 4, rounds
dbg: laXGen, 4, rounds
dbg: gen lrK, 1
test begin  arithExpr 0 input: 2 --------------------------------
parsed s@0 from 1 tokens, 7 steps,  17 states, Rules 11
2    s@0 s@2 p@3 p@5 i@6 i@10 ==2
test begin  arithExpr 1 input: 1 + 2 * 0 --------------------------------
parsed s@0 from 5 tokens, 21 steps,  17 states, Rules 11
1    s@0 s@1 s@0 s@2 p@3 p@5 i@6 i@9 ==1
+            ==+
2            p@3 p@4 p@3 p@5 i@6 i@10 ==2
*                    ==*
0                    i@6 i@8 ==0
test begin  arithExpr 2 input: 2 * ( 1 * 2 + 0 ) --------------------------------
parsed s@0 from 9 tokens, 35 steps,  17 states, Rules 11
2    s@0 s@2 p@3 p@4 p@3 p@5 i@6 i@10 ==2
*                    ==*
(                    i@6 i@7 ==(
1                            s@0 s@1 s@0 s@2 p@3 p@4 p@3 p@5 i@6 i@9 ==1
*                                                    ==*
2                                                    i@6 i@10 ==2
+                                    ==+
0                                    p@3 p@5 i@6 i@8 ==0
)                            ==)
test begin  arithExpr 3 input: 1 + 2 ( --------------------------------
dbg: syntax after 2 tokenNr 2 expected: ! ) * +, not lah: ( !
syntax test arithExpr 3 input 1 + 2 (: syntax after 2 tokenNr 2 expected: ! ) * +, not lah: ( !
test begin  arithExpr 4 input: 1 + 2 + --------------------------------
dbg: syntax after + tokenNr 3 expected: ( 0 1 2, not lah: !
syntax test arithExpr 4 input 1 + 2 +: syntax after + tokenNr 3 expected: ( 0 1 2, not lah: !
arithExprPM --- begin test --------------------------------
grammar source, ('s=s pm p', 's=p', 'p=p*i', 'p=p/i', 'p=i', 'i=(  s )', 'i = j', 'j=epm d', 'j=j d', 'epm = pm epm', 'epm =  ', 'pm=+', 'pm=-', 'd=0', 'd=1', 'd =  2  ')
dbg: lahGen, 4, rounds
dbg: laXGen, 4, rounds
dbg: gen lrK, 1
test begin  arithExprPM 0 input: 2 --------------------------------
parsed s@0 from 1 tokens, 13 steps,  31 states, Rules 23
     s@0 s@2 p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
2                                      d@19 d@22 ==2
test begin  arithExprPM 1 input: 1 + 2 * 0 --------------------------------
parsed s@0 from 5 tokens, 41 steps,  31 states, Rules 23
     s@0 s@1 s@0 s@2 p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
1                                              d@19 d@21 ==1
+            pm@16 pm@17 ==+
             p@3 p@4 p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
2                                              d@19 d@22 ==2
*                    ==*
                     i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
0                                      d@19 d@20 ==0
test begin  arithExprPM 2 input: 2 * ( 1 * 2 + 0 ) --------------------------------
parsed s@0 from 9 tokens, 61 steps,  31 states, Rules 23
     s@0 s@2 p@3 p@4 p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
2                                              d@19 d@22 ==2
*                    ==*
(                    i@7 i@8 ==(
                             s@0 s@1 s@0 s@2 p@3 p@4 p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
1                                                                              d@19 d@21 ==1
*                                                    ==*
                                                     i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
2                                                                      d@19 d@22 ==2
+                                    pm@16 pm@17 ==+
                                     p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
0                                                              d@19 d@20 ==0
)                            ==)
test begin  arithExprPM 3 input: 1 + 2 ( --------------------------------
dbg: syntax after 2 tokenNr 2 expected: ! ) * + - / 0 1 2, not lah: ( !
syntax test arithExprPM 3 input 1 + 2 (: syntax after 2 tokenNr 2 expected: ! ) * + - / 0 1 2, not lah: ( !
test begin  arithExprPM 4 input: 1 + 2 + --------------------------------
dbg: syntax after + tokenNr 3 expected: ( + - 0 1 2, not lah: !
syntax test arithExprPM 4 input 1 + 2 +: syntax after + tokenNr 3 expected: ( + - 0 1 2, not lah: !
test begin  arithExprPM 5 input: 1 0 / - - 1 1 + + - 1 2 / ( 1 - - 2 / + 0 ) --------------------------------
parsed s@0 from 22 tokens, 134 steps,  31 states, Rules 23
     s@0 s@1 s@0 s@2 p@3 p@5 p@3 p@6 i@7 i@9 j@10 j@12 j@10 j@11 epm@13 epm@15 ==emptyRule
1                                                                d@19 d@21 ==1
0                                                      d@19 d@20 ==0
/                            ==/
-                            i@7 i@9 j@10 j@12 j@10 j@11 epm@13 epm@14 pm@16 pm@18 ==-
-                                                                      epm@13 epm@14 pm@16 pm@18 ==-
                                                                                     epm@13 epm@15 ==emptyRule
1                                                        d@19 d@21 ==1
1                                              d@19 d@21 ==1
+            pm@16 pm@17 ==+
+            p@3 p@5 p@3 p@6 i@7 i@9 j@10 j@12 j@10 j@11 epm@13 epm@14 pm@16 pm@17 ==+
-                                                                      epm@13 epm@14 pm@16 pm@18 ==-
                                                                                     epm@13 epm@15 ==emptyRule
1                                                        d@19 d@21 ==1
2                                              d@19 d@22 ==2
/                    ==/
(                    i@7 i@8 ==(
                             s@0 s@1 s@0 s@2 p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@15 ==emptyRule
1                                                                      d@19 d@21 ==1
-                                    pm@16 pm@18 ==-
-                                    p@3 p@5 p@3 p@6 i@7 i@9 j@10 j@11 epm@13 epm@14 pm@16 pm@18 ==-
                                                                                     epm@13 epm@15 ==emptyRule
2                                                                      d@19 d@22 ==2
/                                            ==/
+                                            i@7 i@9 j@10 j@11 epm@13 epm@14 pm@16 pm@17 ==+
                                                                             epm@13 epm@15 ==emptyRule
0                                                              d@19 d@20 ==0
)                            ==)
arithExprPE --- begin test --------------------------------
grammar source, ('s=s pm p', 's=p', 'p=p*e', 'p=p/e', 'p=e', 'e=i', 'e=i**e', 'i=(  s )', ' i=j', 'j=epm d', 'j=j d', 'epm = pm epm', 'epm =  ', 'pm=+', 'pm=-', 'd=0', 'd=1', 'd =  2  ')
dbg: lahGen, 4, rounds
dbg: laXGen, 4, rounds
dbg: gen lrK, 1
dbg: goF3 confliX2, False, s8{pa={e@8#1, e@9#1}}, *, {e@8, s9}
dbg: goF2s1 conflict, s8{pa={e@8#1, e@9#1}}, *, e@8, old, s9
dbg: gen lrK, 2
dbg: lahGen, 4, rounds
dbg: laXGen, 4, rounds
test begin  arithExprPE 0 input: 2 --------------------------------
parsed s@0 from 1 tokens, 15 steps,  36 states, Rules 26
     s@0 s@2 p@3 p@6 e@7 e@8 i@10 i@12 j@13 j@14 epm@16 epm@18 ==emptyRule
2                                                d@22 d@25 ==2
test begin  arithExprPE 1 input: 1 + 2 * 0 --------------------------------
dbg: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: * 0 !
syntax test arithExprPE 1 input 1  +  2 * 0: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: * 0 !
test begin  arithExprPE 2 input: 2 * ( 1 * 2 + 0 ) --------------------------------
dbg: syntax after 2 tokenNr 0 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: 2 + 0 ) !
syntax test arithExprPE 2 input 2 * ( 1 * 2 + 0 ): syntax after 2 tokenNr 0 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: 2 + 0 ) !
test begin  arithExprPE 3 input: 1 + 2 ( --------------------------------
dbg: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: ( !
syntax test arithExprPE 3 input 1 + 2 (: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: ( !
test begin  arithExprPE 4 input: 1 + 2 + --------------------------------
dbg: syntax after + tokenNr 3 expected: (( (+ (- (0 (1 (2 ++ +- +0 +1 +2 -+ -- -0 -1 -2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: !
syntax test arithExprPE 4 input 1 + 2 +: syntax after + tokenNr 3 expected: (( (+ (- (0 (1 (2 ++ +- +0 +1 +2 -+ -- -0 -1 -2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: !
test begin  arithExprPE 5 input: 1 0 / - - 1 1 + + - 1 2 / ( 1 - - 2 / + 0 ) --------------------------------
parsed s@0 from 22 tokens, 148 steps,  36 states, Rules 26
     s@0 s@1 s@0 s@2 p@3 p@5 p@3 p@6 e@7 e@8 i@10 i@12 j@13 j@15 j@13 j@14 epm@16 epm@18 ==emptyRule
1                                                                          d@22 d@24 ==1
0                                                                d@22 d@23 ==0
/                            ==/
-                            e@7 e@8 i@10 i@12 j@13 j@15 j@13 j@14 epm@16 epm@17 pm@19 pm@21 ==-
-                                                                                epm@16 epm@17 pm@19 pm@21 ==-
                                                                                               epm@16 epm@18 ==emptyRule
1                                                                  d@22 d@24 ==1
1                                                        d@22 d@24 ==1
+            pm@19 pm@20 ==+
+            p@3 p@5 p@3 p@6 e@7 e@8 i@10 i@12 j@13 j@15 j@13 j@14 epm@16 epm@17 pm@19 pm@20 ==+
-                                                                                epm@16 epm@17 pm@19 pm@21 ==-
                                                                                               epm@16 epm@18 ==emptyRule
1                                                                  d@22 d@24 ==1
2                                                        d@22 d@25 ==2
/                    ==/
(                    e@7 e@8 i@10 i@11 ==(
                                       s@0 s@1 s@0 s@2 p@3 p@6 e@7 e@8 i@10 i@12 j@13 j@14 epm@16 epm@18 ==emptyRule
1                                                                                          d@22 d@24 ==1
-                                              pm@19 pm@21 ==-
-                                              p@3 p@5 p@3 p@6 e@7 e@8 i@10 i@12 j@13 j@14 epm@16 epm@17 pm@19 pm@21 ==-
                                                                                                         epm@16 epm@18 ==emptyRule
2                                                                                          d@22 d@25 ==2
/                                                      ==/
+                                                      e@7 e@8 i@10 i@12 j@13 j@14 epm@16 epm@17 pm@19 pm@20 ==+
                                                                                                 epm@16 epm@18 ==emptyRule
0                                                                                  d@22 d@23 ==0
)                                      ==)
arithExprPE2 --- begin test --------------------------------
grammar source, ('s=s pm p', 's=p', 'p=p*e', 'p=p/e', 'p=e', 'e=i', 'e=i**e', 'e=pm e', 'pm=+', 'pm=-', 'i=(  s )', 'i = dd', 'dd=d', 'dd=d dd', 'd=0', 'd=1', 'd =  2  ')
dbg: lahGen, 4, rounds
dbg: laXGen, 4, rounds
dbg: gen lrK, 1
dbg: goF3 confliX2, False, s8{pa={e@8#1, e@9#1}}, *, {e@8, s9}
dbg: goF2s1 conflict, s8{pa={e@8#1, e@9#1}}, *, e@8, old, s9
dbg: gen lrK, 2
dbg: lahGen, 4, rounds
dbg: laXGen, 4, rounds
test begin  arithExprPE2 0 input: 2 --------------------------------
parsed s@0 from 1 tokens, 13 steps,  34 states, Rules 24
2    s@0 s@2 p@3 p@6 e@7 e@8 i@14 i@16 dd@17 dd@18 d@20 d@23 ==2
test begin  arithExprPE2 1 input: 1 + 2 * 0 --------------------------------
dbg: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: * 0 !
syntax test arithExprPE2 1 input 1  +  2 * 0: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: * 0 !
test begin  arithExprPE2 2 input: 2 * ( 1 * 2 + 0 ) --------------------------------
dbg: syntax after 2 tokenNr 0 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: 2 + 0 ) !
syntax test arithExprPE2 2 input 2 * ( 1 * 2 + 0 ): syntax after 2 tokenNr 0 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: 2 + 0 ) !
test begin  arithExprPE2 3 input: 1 + 2 ( --------------------------------
dbg: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: ( !
syntax test arithExprPE2 3 input 1 + 2 (: syntax after 2 tokenNr 2 expected: ! )! )) )* )+ )- )/ *( ** *+ *- *0 *1 *2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 /( /+ /- /0 /1 /2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: ( !
test begin  arithExprPE2 4 input: 1 + 2 + --------------------------------
dbg: syntax after + tokenNr 3 expected: (( (+ (- (0 (1 (2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: !
syntax test arithExprPE2 4 input 1 + 2 +: syntax after + tokenNr 3 expected: (( (+ (- (0 (1 (2 +( ++ +- +0 +1 +2 -( -+ -- -0 -1 -2 0! 0) 0* 0+ 0- 0/ 00 01 02 1! 1) 1* 1+ 1- 1/ 10 11 12 2! 2) 2* 2+ 2- 2/ 20 21 22, not lah: !
test begin  arithExprPE2 5 input: 1 0 / - - 1 1 + + - 1 2 / ( 1 - - 2 / + 0 ) --------------------------------
parsed s@0 from 22 tokens, 136 steps,  34 states, Rules 24
1    s@0 s@1 s@0 s@2 p@3 p@5 p@3 p@6 e@7 e@8 i@14 i@16 dd@17 dd@19 d@20 d@22 ==1
0                                                                  dd@17 dd@18 d@20 d@21 ==0
/                            ==/
-                            e@7 e@10 pm@11 pm@13 ==-
-                                     e@7 e@10 pm@11 pm@13 ==-
1                                              e@7 e@8 i@14 i@16 dd@17 dd@19 d@20 d@22 ==1
1                                                                            dd@17 dd@18 d@20 d@22 ==1
+            pm@11 pm@12 ==+
+            p@3 p@5 p@3 p@6 e@7 e@10 pm@11 pm@12 ==+
-                                     e@7 e@10 pm@11 pm@13 ==-
1                                              e@7 e@8 i@14 i@16 dd@17 dd@19 d@20 d@22 ==1
2                                                                            dd@17 dd@18 d@20 d@23 ==2
/                    ==/
(                    e@7 e@8 i@14 i@15 ==(
1                                      s@0 s@1 s@0 s@2 p@3 p@6 e@7 e@8 i@14 i@16 dd@17 dd@18 d@20 d@22 ==1
-                                              pm@11 pm@13 ==-
-                                              p@3 p@5 p@3 p@6 e@7 e@10 pm@11 pm@13 ==-
2                                                                       e@7 e@8 i@14 i@16 dd@17 dd@18 d@20 d@23 ==2
/                                                      ==/
+                                                      e@7 e@10 pm@11 pm@12 ==+
0                                                               e@7 e@8 i@14 i@16 dd@17 dd@18 d@20 d@21 ==0
)                                      ==)
LR(2)? --- begin test --------------------------------
grammar source, ("S = AA 'a' 'a'", "S = AB 'a' 'b'", 'AA =', 'AB =')
dbg: lahGen, 2, rounds
dbg: laXGen, 2, rounds
dbg: makeAll added endState, s8{pa={}, go={}}, to, s0{pa={S@0#0}, go={S@1: s1, AA@3: s2, '': {AA@3, AB@4}, S@2: s1, AB@4: s5, S@0: s8}}
dbg: gen lrK, 1
dbg: goF3 confliX2, False, s0{pa={S@0#0}}, a, {AA@3, AB@4}
dbg: goF2s1 conflict, s0{pa={S@0#0}}, a, AA@3, old, AB@4
dbg: gen lrK, 2
dbg: lahGen, 2, rounds
dbg: laXGen, 2, rounds
test begin  LR(2)? 0 input: a a --------------------------------
parsed S@0 from 2 tokens, 5 steps,  8 states, Rules 5
     S@0 S@1 AA@3 ==emptyRule
a            ==a
a            ==a
test begin  LR(2)? 1 input: a b --------------------------------
parsed S@0 from 2 tokens, 5 steps,  8 states, Rules 5
     S@0 S@2 AB@4 ==emptyRule
a            ==a
b            ==b
test begin  LR(2)? 2 input: a c --------------------------------
dbg: syntax after c tokenNr -1 expected: aa ab, not lah: a c !
syntax test LR(2)? 2 input a c: syntax after c tokenNr -1 expected: aa ab, not lah: a c !
test begin  LR(2)? 3 input: b a --------------------------------
dbg: syntax after a tokenNr -1 expected: aa ab, not lah: b a !
syntax test LR(2)? 3 input b a: syntax after a tokenNr -1 expected: aa ab, not lah: b a !
knuth(1) --- begin test --------------------------------
grammar source, ('S = A D', "A = 'a' C", "B = 'b' 'c' 'd'", 'C = B E', 'D =', "E = 'e'")
dbg: lahGen, 3, rounds
dbg: laXGen, 3, rounds
dbg: makeAll added endState, s11{pa={}, go={}}, to, s0{pa={S@0#0}, go={A@1: s1, a: s3, S@0: s11}}
dbg: gen lrK, 1
test begin  knuth(1) 0 input: a b c d e --------------------------------
parsed S@0 from 5 tokens, 11 steps,  11 states, Rules 6
a    S@0 A@1 ==a
b            C@3 B@2 ==b
c                    ==c
d                    ==d
e                E@5 ==e
         D@4 ==emptyRule
test begin  knuth(1) 1 input: a b x d e --------------------------------
dbg: syntax after b tokenNr 1 expected: c, not lah: x d e !
syntax test knuth(1) 1 input a b x d e: syntax after b tokenNr 1 expected: c, not lah: x d e !
test begin  knuth(1) 2 input: a b --------------------------------
dbg: syntax after b tokenNr 1 expected: c, not lah: !
syntax test knuth(1) 2 input a b: syntax after b tokenNr 1 expected: c, not lah: !
test begin  knuth(1) 3 input: a b c d e f --------------------------------
dbg: syntax after e tokenNr 4 expected: !, not lah: f !
syntax test knuth(1) 3 input a b c d e f: syntax after e tokenNr 4 expected: !, not lah: f !
knuth(6) --- begin test --------------------------------
grammar source, ("S = 'a' A 'c'", "A = 'b' A 'b'", "A = 'b'")
dbg: lahGen, 3, rounds
dbg: laXGen, 3, rounds
dbg: makeAll added endState, s8{pa={}, go={}}, to, s0{pa={S@0#0}, go={a: s1, S@0: s8}}
dbg: gen lrK, 1
dbg: goF3 confliX2, False, s5{pa={A@2#1, A@3#1}}, b, {A@3, s5}
dbg: goF2s1 conflict, s5{pa={A@2#1, A@3#1}}, b, A@3, old, s5
dbg: gen lrK, 2
dbg: lahGen, 2, rounds
dbg: laXGen, 2, rounds
dbg: goF3 confliX2, False, s5{pa={A@2#1, A@3#1}}, bb, {A@3, s5}
dbg: goF2s1 conflict, s5{pa={A@2#1, A@3#1}}, bb, A@3, old, s5
dbg: gen lrK, 3
dbg: lahGen, 3, rounds
dbg: laXGen, 3, rounds
dbg: goF3 confliX2, False, s5{pa={A@2#1, A@3#1}}, bbb, {A@3, s5}
dbg: goF3 confliX2, False, s5{pa={A@2#1, A@3#1}}, bbc, {A@3, s5}
dbg: goF2s1 conflict, s5{pa={A@2#1, A@3#1}}, bbb, A@3, old, s5
dbg: goF2s1 conflict, s5{pa={A@2#1, A@3#1}}, bbc, A@3, old, s5
dbg: gen lrK, 4
dbg: lahGen, 2, rounds
dbg: laXGen, 2, rounds
dbg: goF3 confliX2, False, s5{pa={A@2#1, A@3#1}}, bbbb, {A@3, s5}
dbg: goF3 confliX2, False, s5{pa={A@2#1, A@3#1}}, bbc!, {A@3, s5}
dbg: goF3 confliX2, False, s5{pa={A@2#1, A@3#1}}, bbbc, {A@3, s5}
dbg: goF2s1 conflict, s5{pa={A@2#1, A@3#1}}, bbc!, A@3, old, s5
dbg: goF2s1 conflict, s5{pa={A@2#1, A@3#1}}, bbbc, A@3, old, s5
dbg: goF2s1 conflict, s5{pa={A@2#1, A@3#1}}, bbbb, A@3, old, s5
error generating grammar knuth(6) makeAll: still conflicts at lrK 4
knuth(7) lr(0) --- begin test --------------------------------
grammar source, ("S = 'a' A 'c'", "A =  A 'b' 'b'", "A = 'b'")
dbg: lahGen, 3, rounds
dbg: laXGen, 3, rounds
dbg: makeAll added endState, s8{pa={}, go={}}, to, s0{pa={S@0#0}, go={a: s1, S@0: s8}}
dbg: gen lrK, 1
test begin  knuth(7) lr(0) 0 input: a b b b c --------------------------------
parsed S@0 from 5 tokens, 10 steps,  8 states, Rules 4
a    S@0 ==a
b        A@1 A@2 A@1 A@3 ==b
b                ==b
b                ==b
c        ==c
test begin  knuth(7) lr(0) 1 input: a b c --------------------------------
parsed S@0 from 3 tokens, 6 steps,  8 states, Rules 4
a    S@0 ==a
b        A@1 A@3 ==b
c        ==c
test begin  knuth(7) lr(0) 2 input: a b b c --------------------------------
dbg: syntax after b tokenNr 2 expected: b, not lah: c !
syntax test knuth(7) lr(0) 2 input a b b c: syntax after b tokenNr 2 expected: b, not lah: c !
test begin  knuth(7) lr(0) 3 input: a b b b b b b b c e --------------------------------
dbg: syntax after c tokenNr 8 expected: !, not lah: e !
syntax test knuth(7) lr(0) 3 input a b b b b b b b c e: syntax after c tokenNr 8 expected: !, not lah: e !
knuth(16x) lr(3) --- begin test --------------------------------
grammar source, ('S=B C', 'B=C e', 'B = ', 'C=D', 'C=D c', 'D=', 'D=d')
dbg: lahGen, 2, rounds
dbg: laXGen, 2, rounds
dbg: makeAll added endState, s11{pa={}, go={}}, to, s0{pa={S@0#0}, go={B@1: s1, B@2: s8, C@4: s9, C@5: s3, D@7: s4, D@8: s6, '': {B@3, D@8}, D@9: s6, d: s7, C@6: s3, B@3: s8, S@0: s11}}
dbg: gen lrK, 1
dbg: goF3 confliX2, False, s0{pa={S@0#0}}, d, {B@3, s7}
dbg: goF3 confliX2, False, s0{pa={S@0#0}}, c, {B@3, D@8}
dbg: goF2s1 conflict, s0{pa={S@0#0}}, d, B@3, old, s7
dbg: goF2s1 conflict, s0{pa={S@0#0}}, c, D@8, old, B@3
dbg: gen lrK, 2
dbg: lahGen, 2, rounds
dbg: laXGen, 2, rounds
dbg: goF3 confliX2, False, s0{pa={S@0#0}}, dc, {B@3, s7}
dbg: goF2s1 conflict, s0{pa={S@0#0}}, dc, B@3, old, s7
dbg: gen lrK, 3
dbg: lahGen, 2, rounds
dbg: laXGen, 2, rounds
test begin  knuth(16x) lr(3) 0 input:  --------------------------------
parsed S@0 from 0 tokens, 7 steps,  11 states, Rules 10
     S@0 B@1 B@3 ==emptyRule
         C@4 C@5 D@7 D@8 ==emptyRule
test begin  knuth(16x) lr(3) 1 input: c --------------------------------
dbg: syntax after c tokenNr -1 expected: ! c! ce! cec ced d! dc! dce de! dec ded e! ec! ed! edc, not lah: c !
syntax test knuth(16x) lr(3) 1 input c: syntax after c tokenNr -1 expected: ! c! ce! cec ced d! dc! dce de! dec ded e! ec! ed! edc, not lah: c !
test begin  knuth(16x) lr(3) 2 input: c e --------------------------------
parsed S@0 from 2 tokens, 13 steps,  11 states, Rules 10
     S@0 B@1 B@2 C@4 C@6 D@7 D@8 ==emptyRule
c                        ==c
e                ==e
         C@4 C@5 D@7 D@8 ==emptyRule
test begin  knuth(16x) lr(3) 3 input: c e d --------------------------------
parsed S@0 from 3 tokens, 14 steps,  11 states, Rules 10
     S@0 B@1 B@2 C@4 C@6 D@7 D@8 ==emptyRule
c                        ==c
e                ==e
d        C@4 C@5 D@7 D@9 ==d
knuth(24) --- begin test --------------------------------
grammar source, ('S =', "S = 'a' A 'b' S", "S =  'b' B 'a' S", 'A =', "A = 'a' A 'b' A", 'B =', "B = 'b' B 'a' B")
dbg: lahGen, 3, rounds
dbg: laXGen, 3, rounds
dbg: makeAll added endState, s20{pa={}, go={}}, to, s0{pa={S@0#0}, go={S@1: s1, '': {S@1}, S@2: s1, a: s2, S@3: s1, b: s6, S@0: s20}}
dbg: gen lrK, 1
test begin  knuth(24) 0 input:  --------------------------------
parsed S@0 from 0 tokens, 2 steps,  20 states, Rules 10
     S@0 S@1 ==emptyRule
test begin  knuth(24) 1 input: a b --------------------------------
parsed S@0 from 2 tokens, 8 steps,  20 states, Rules 10
a    S@0 S@2 ==a
             A@4 A@5 ==emptyRule
b            ==b
             S@0 S@1 ==emptyRule
test begin  knuth(24) 2 input: b a --------------------------------
parsed S@0 from 2 tokens, 8 steps,  20 states, Rules 10
b    S@0 S@3 ==b
             B@7 B@8 ==emptyRule
a            ==a
             S@0 S@1 ==emptyRule
test begin  knuth(24) 3 input: a b b --------------------------------
dbg: syntax after b tokenNr 2 expected: a b, not lah: !
syntax test knuth(24) 3 input a b b: syntax after b tokenNr 2 expected: a b, not lah: !
test begin  knuth(24) 4 input: a a b b --------------------------------
parsed S@0 from 4 tokens, 14 steps,  20 states, Rules 10
a    S@0 S@2 ==a
a            A@4 A@6 ==a
                     A@4 A@5 ==emptyRule
b                    ==b
                     A@4 A@5 ==emptyRule
b            ==b
             S@0 S@1 ==emptyRule
test begin  knuth(24) 5 input: a b a b --------------------------------
parsed S@0 from 4 tokens, 14 steps,  20 states, Rules 10
a    S@0 S@2 ==a
             A@4 A@5 ==emptyRule
b            ==b
a            S@0 S@2 ==a
                     A@4 A@5 ==emptyRule
b                    ==b
                     S@0 S@1 ==emptyRule
test begin  knuth(24) 6 input: b a a b --------------------------------
parsed S@0 from 4 tokens, 14 steps,  20 states, Rules 10
b    S@0 S@3 ==b
             B@7 B@8 ==emptyRule
a            ==a
a            S@0 S@2 ==a
                     A@4 A@5 ==emptyRule
b                    ==b
                     S@0 S@1 ==emptyRule
end ./parser.py