X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/72cd9a913f6d282c5e24990505c2c820bda2bf1b..c85541913b99f841de090aacf626bb8f52f7f727:/tests/conflicts.at?ds=inline diff --git a/tests/conflicts.at b/tests/conflicts.at index 599d708b..c4515e8c 100644 --- a/tests/conflicts.at +++ b/tests/conflicts.at @@ -37,7 +37,7 @@ e: 'e' | /* Nothing. */; ]]) AT_BISON_CHECK([-o input.c input.y], 0, [], -[[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */ +[[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */ [-Wother] ]]) AT_CLEANUP @@ -49,20 +49,17 @@ AT_CLEANUP AT_SETUP([%nonassoc and eof]) +AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([input.y], [[ %{ #include #include #include +#include #define YYERROR_VERBOSE 1 -static void -yyerror (const char *msg) -{ - fprintf (stderr, "%s\n", msg); -} - +]AT_YYERROR_DEFINE[ /* The current argument. */ static const char *input; @@ -70,8 +67,7 @@ static int yylex (void) { static size_t toknum; - if (! (toknum <= strlen (input))) - abort (); + assert (toknum <= strlen (input)); return input[toknum++]; } @@ -92,6 +88,7 @@ main (int argc, const char *argv[]) return yyparse (); } ]]) +AT_BISON_OPTION_POPDEFS m4_pushdef([AT_NONASSOC_AND_EOF_CHECK], [AT_BISON_CHECK([$1[ -o input.c input.y]]) @@ -169,7 +166,7 @@ AT_SKEL_JAVA_IF([AT_DATA], [AT_DATA_GRAMMAR])([input.y], #include ]], [[ #include #include - void yyerror (char const *msg);]])[ + ]AT_YYERROR_DECLARE])[ ]AT_YYLEX_PROTOTYPE[; #define USE(Var) } @@ -210,31 +207,11 @@ public Object getLVal () *lvalp = 1; return *input++; }]])[ - -/*----------. -| yyerror. | -`----------*/]AT_SKEL_JAVA_IF([[ - -public void yyerror (String msg) -{ - System.err.println (msg); -} - +]AT_YYERROR_DEFINE[ +]AT_SKEL_JAVA_IF([[ }; -%%]], [AT_SKEL_CC_IF([[ - -void -yy::parser::error (std::string const &msg) -{ - std::cerr << msg << std::endl; -}]], [[ - -void -yyerror (char const *msg) -{ - fprintf (stderr, "%s\n", msg); -}]])])[ +%%]])[ /*-------. | main. | @@ -465,12 +442,12 @@ AT_CLEANUP # with minimal LR parser tables. AT_SETUP([[LAC: %nonassoc requires splitting canonical LR states]]) - +AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([[input.y]], [[%code { #include - void yyerror (char const *); - int yylex (void); + ]AT_YYERROR_DECLARE[ + ]AT_YYLEX_DECLARE[ } %error-verbose @@ -507,19 +484,8 @@ look: reduce-nonassoc: %prec 'a'; %% - -void -yyerror (char const *msg) -{ - fprintf (stderr, "%s\n", msg); -} - -int -yylex (void) -{ - char const *input = "aaa"; - return *input++; -} +]AT_YYERROR_DEFINE[ +]AT_YYLEX_DEFINE(["aaa"])[ int main (void) @@ -527,6 +493,7 @@ main (void) return yyparse (); } ]]) +AT_BISON_OPTION_POPDEFS # Show canonical LR's failure. AT_BISON_CHECK([[-Dlr.type=canonical-lr -o input.c input.y]], @@ -818,7 +785,7 @@ cond: AT_BISON_CHECK([-o input.c input.y], 0, [], [[input.y: conflicts: 1 shift/reduce -input.y:12.3-18: warning: rule useless in parser due to conflicts: cond: cond "then" cond +input.y:12.3-18: warning: rule useless in parser due to conflicts: cond: cond "then" cond [-Wother] ]]) AT_CLEANUP @@ -862,7 +829,7 @@ id : '0'; AT_BISON_CHECK([-o input.c --report=all input.y], 0, [], [[input.y: conflicts: 1 reduce/reduce -input.y:4.6-8: warning: rule useless in parser due to conflicts: id: '0' +input.y:4.6-8: warning: rule useless in parser due to conflicts: id: '0' [-Wother] ]]) # Check the contents of the report. @@ -1182,13 +1149,13 @@ reported_conflicts: AT_BISON_CHECK([[--report=all input.y]], 0, [], [[input.y: conflicts: 1 shift/reduce, 1 reduce/reduce -input.y:12.5-20: warning: rule useless in parser due to conflicts: resolved_conflict: 'a' unreachable1 -input.y:20.5-20: warning: rule useless in parser due to conflicts: unreachable1: 'a' unreachable2 -input.y:21.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */ -input.y:25.13: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ -input.y:25.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ -input.y:31.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a' -input.y:32.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */ +input.y:12.5-20: warning: rule useless in parser due to conflicts: resolved_conflict: 'a' unreachable1 [-Wother] +input.y:20.5-20: warning: rule useless in parser due to conflicts: unreachable1: 'a' unreachable2 [-Wother] +input.y:21.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */ [-Wother] +input.y:25.13: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ [-Wother] +input.y:25.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ [-Wother] +input.y:31.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a' [-Wother] +input.y:32.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */ [-Wother] ]]) AT_CHECK([[cat input.output]], 0, @@ -1334,10 +1301,10 @@ AT_CHECK([[cat input.y >> input-keep.y]]) AT_BISON_CHECK([[input-keep.y]], 0, [], [[input-keep.y: conflicts: 2 shift/reduce, 2 reduce/reduce -input-keep.y:22.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */ -input-keep.y:26.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ -input-keep.y:32.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a' -input-keep.y:33.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */ +input-keep.y:22.4: warning: rule useless in parser due to conflicts: unreachable1: /* empty */ [-Wother] +input-keep.y:26.16: warning: rule useless in parser due to conflicts: unreachable2: /* empty */ [-Wother] +input-keep.y:32.5-7: warning: rule useless in parser due to conflicts: reported_conflicts: 'a' [-Wother] +input-keep.y:33.4: warning: rule useless in parser due to conflicts: reported_conflicts: /* empty */ [-Wother] ]]) AT_CLEANUP