X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/b9752825a023753145900b00a3f16394e183be60..ff44279401d71c061f2dc315a381ce2aeeb33a61:/tests/regression.at diff --git a/tests/regression.at b/tests/regression.at index bf863671..78e607b6 100644 --- a/tests/regression.at +++ b/tests/regression.at @@ -25,7 +25,7 @@ AT_BANNER([[Regression tests.]]) AT_SETUP([Duplicate string]) -AT_DATA([duplicate.y], +AT_DATA([input.y], [[/* `Bison -v' used to dump core when two tokens are defined with the same string, as LE and GE below. */ @@ -38,7 +38,7 @@ exp: '(' exp ')' | NUM ; %% ]]) -AT_CHECK([bison -v duplicate.y -o duplicate.c], 0, ignore, ignore) +AT_CHECK([bison -v input.y -o input.c], 0, ignore, ignore) AT_CLEANUP @@ -61,19 +61,20 @@ AT_CHECK([bison input.y -o input.c -v], 0, [], # Check the contents of the report. AT_CHECK([cat input.output], [], -[[State 4 contains 1 shift/reduce conflict. +[[State 5 contains 1 shift/reduce conflict. Grammar Number, Line, Rule + 0 3 $axiom -> exp $ 1 3 exp -> exp OP exp 2 3 exp -> NUM Terminals, with rules where they appear -$ (-1) +$ (0) 0 error (256) NUM (257) 2 OP (258) 1 @@ -81,8 +82,10 @@ OP (258) 1 Nonterminals, with rules where they appear -exp (5) - on left: 1 2, on right: 1 +$axiom (5) + on left: 0 +exp (6) + on left: 1 2, on right: 0 1 state 0 @@ -103,44 +106,41 @@ state 1 state 2 + $axiom -> exp . $ (rule 0) exp -> exp . OP exp (rule 1) - $ shift, and go to state 5 - OP shift, and go to state 3 + $ shift, and go to state 3 + OP shift, and go to state 4 state 3 - exp -> exp OP . exp (rule 1) - - NUM shift, and go to state 1 - - exp go to state 4 + $axiom -> exp $ . (rule 0) + $default accept state 4 - exp -> exp . OP exp (rule 1) - exp -> exp OP exp . (rule 1) + exp -> exp OP . exp (rule 1) - OP shift, and go to state 3 + NUM shift, and go to state 1 - OP [reduce using rule 1 (exp)] - $default reduce using rule 1 (exp) + exp go to state 5 state 5 - $ shift, and go to state 6 - + exp -> exp . OP exp (rule 1) + exp -> exp OP exp . (rule 1) + OP shift, and go to state 4 -state 6 + OP [reduce using rule 1 (exp)] + $default reduce using rule 1 (exp) - $default accept ]]) @@ -165,19 +165,20 @@ AT_CHECK([bison input.y -o input.c -v], 0, [], []) # Check the contents of the report. AT_CHECK([cat input.output], [], -[[Conflict in state 4 between rule 1 and token OP resolved as shift. +[[Conflict in state 5 between rule 2 and token OP resolved as shift. Grammar Number, Line, Rule + 0 4 $axiom -> exp $ 1 4 exp -> exp OP exp 2 4 exp -> NUM Terminals, with rules where they appear -$ (-1) +$ (0) 0 error (256) NUM (257) 2 OP (258) 1 @@ -185,8 +186,10 @@ OP (258) 1 Nonterminals, with rules where they appear -exp (5) - on left: 1 2, on right: 1 +$axiom (5) + on left: 0 +exp (6) + on left: 1 2, on right: 0 1 state 0 @@ -207,43 +210,40 @@ state 1 state 2 + $axiom -> exp . $ (rule 0) exp -> exp . OP exp (rule 1) - $ shift, and go to state 5 - OP shift, and go to state 3 + $ shift, and go to state 3 + OP shift, and go to state 4 state 3 - exp -> exp OP . exp (rule 1) - - NUM shift, and go to state 1 - - exp go to state 4 + $axiom -> exp $ . (rule 0) + $default accept state 4 - exp -> exp . OP exp (rule 1) - exp -> exp OP exp . (rule 1) + exp -> exp OP . exp (rule 1) - OP shift, and go to state 3 + NUM shift, and go to state 1 - $default reduce using rule 1 (exp) + exp go to state 5 state 5 - $ shift, and go to state 6 - + exp -> exp . OP exp (rule 1) + exp -> exp OP exp . (rule 1) + OP shift, and go to state 4 -state 6 + $default reduce using rule 1 (exp) - $default accept ]]) @@ -296,6 +296,7 @@ AT_CHECK([cat input.output], [], [[Grammar Number, Line, Rule + 0 2 $axiom -> expr $ 1 2 @1 -> /* empty */ 2 2 expr -> 'a' @1 'b' 3 15 @2 -> /* empty */ @@ -304,7 +305,7 @@ AT_CHECK([cat input.output], [], Terminals, with rules where they appear -$ (-1) +$ (0) 0 'a' (97) 2 'b' (98) 2 'c' (99) 4 @@ -313,11 +314,13 @@ error (256) Nonterminals, with rules where they appear -expr (6) - on left: 2 4 -@1 (7) +$axiom (6) + on left: 0 +expr (7) + on left: 2 4, on right: 0 +@1 (8) on left: 1, on right: 2 -@2 (8) +@2 (9) on left: 3, on right: 4 @@ -327,8 +330,8 @@ state 0 $default reduce using rule 3 (@2) - expr go to state 6 - @2 go to state 2 + expr go to state 2 + @2 go to state 3 @@ -338,51 +341,55 @@ state 1 $default reduce using rule 1 (@1) - @1 go to state 3 + @1 go to state 4 state 2 - expr -> @2 . 'c' (rule 4) + $axiom -> expr . $ (rule 0) - 'c' shift, and go to state 4 + $ shift, and go to state 5 state 3 - expr -> 'a' @1 . 'b' (rule 2) + expr -> @2 . 'c' (rule 4) - 'b' shift, and go to state 5 + 'c' shift, and go to state 6 state 4 - expr -> @2 'c' . (rule 4) + expr -> 'a' @1 . 'b' (rule 2) - $default reduce using rule 4 (expr) + 'b' shift, and go to state 7 state 5 - expr -> 'a' @1 'b' . (rule 2) - - $default reduce using rule 2 (expr) + $axiom -> expr $ . (rule 0) + $default accept state 6 - $ shift, and go to state 7 + expr -> @2 'c' . (rule 4) + + $default reduce using rule 4 (expr) state 7 - $default accept + expr -> 'a' @1 'b' . (rule 2) + + $default reduce using rule 2 (expr) + ]]) @@ -478,7 +485,7 @@ AT_CLEANUP AT_SETUP([%union and --defines]) -AT_DATA([union.y], +AT_DATA([input.y], [%union { int integer; @@ -488,7 +495,7 @@ AT_DATA([union.y], exp: {}; ]) -AT_CHECK([bison --defines union.y]) +AT_CHECK([bison --defines input.y]) AT_CLEANUP @@ -500,7 +507,7 @@ AT_CLEANUP AT_SETUP([%union and C comments]) -AT_DATA([union-comment.y], +AT_DATA([input.y], [%union { /* The int. */ int integer; @@ -510,8 +517,8 @@ AT_DATA([union-comment.y], exp: {}; ]) -AT_CHECK([bison union-comment.y]) -AT_CHECK([fgrep '//*' union-comment.tab.c], [1], []) +AT_CHECK([bison input.y -o input.c]) +AT_CHECK([fgrep '//*' input.c], [1], []) AT_CLEANUP @@ -652,7 +659,7 @@ AT_CHECK([sed -n 's/ *$//;/^$/!p' input.output], 0, 4 15 @1 -> /* empty */ 5 15 CONST_DEC -> @1 undef_id_tok '=' const_id_tok ';' Terminals, with rules where they appear -$ (-1) +$ (0) ';' (59) 5 '=' (61) 5 error (256)