]> git.saurik.com Git - bison.git/blobdiff - tests/torture.at
tests: be sure that backups are safe.
[bison.git] / tests / torture.at
index 3fff08e6c66a3939dba58c8ea7a624fcc37c62fe..338c1648e9453e5549a89f1917ba8532e3667dc6 100644 (file)
@@ -42,7 +42,8 @@ esac])
 # Create FILE-NAME, containing a self checking parser for a huge
 # triangular grammar.
 m4_define([AT_DATA_TRIANGULAR_GRAMMAR],
-[AT_DATA([[gengram.pl]],
+[AT_BISON_OPTION_PUSHDEFS
+AT_DATA([[gengram.pl]],
 [[#! /usr/bin/perl -w
 
 use strict;
@@ -55,7 +56,8 @@ print <<EOF;
 %{
 #include <stdio.h>
 #include <stdlib.h>
-
+#include <assert.h>
+#define MAX $max
 ]AT_YYLEX_DECLARE[
 ]AT_YYERROR_DECLARE[
 %}
@@ -76,8 +78,8 @@ for my $size (1 .. $max)
 print <<EOF;
 %%
 input:
-  exp        { if (\@S|@1 != 0) abort (); \$\$ = \@S|@1; }
-| input exp  { if (\@S|@2 != \@S|@1 + 1) abort (); \$\$ = \@S|@2; }
+  exp        { assert (\@S|@1 == 0); \$\$ = \@S|@1; }
+| input exp  { assert (\@S|@2 == \@S|@1 + 1); \$\$ = \@S|@2; }
 ;
 
 exp:
@@ -95,14 +97,15 @@ for my $size (1 .. $max)
   };
 print ";\n";
 
-print <<EOF;
+print <<\EOF;
 %%
+]AT_YYERROR_DEFINE[
 static int
 yylex (void)
 {
   static int inner = 1;
   static int outer = 0;
-  if (outer > $max)
+  if (outer > MAX)
     return 0;
   else if (inner > outer)
     {
@@ -112,13 +115,6 @@ yylex (void)
     }
   return inner++;
 }
-
-static void
-yyerror (const char *msg)
-{
-  fprintf (stderr, "%s\\n", msg);
-}
-
 int
 main (void)
 {
@@ -127,6 +123,7 @@ main (void)
 }
 EOF
 ]])
+AT_BISON_OPTION_POPDEFS
 
 AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
 mv stdout $1
@@ -157,7 +154,8 @@ AT_CLEANUP
 # Create FILE-NAME, containing a self checking parser for a huge
 # horizontal grammar.
 m4_define([AT_DATA_HORIZONTAL_GRAMMAR],
-[AT_DATA([[gengram.pl]],
+[AT_BISON_OPTION_PUSHDEFS
+AT_DATA([[gengram.pl]],
 [[#! /usr/bin/perl -w
 
 use strict;
@@ -170,7 +168,7 @@ print <<EOF;
 %{
 #include <stdio.h>
 #include <stdlib.h>
-
+#define MAX $max
 ]AT_YYLEX_DECLARE[
 ]AT_YYERROR_DECLARE[
 %}
@@ -193,25 +191,20 @@ print
        (map { "\"$_\"" } (1 .. $max)), ";"),
   "\n";
 
-print <<EOF;
+print <<\EOF;
 %%
+#include <assert.h>
+]AT_YYERROR_DEFINE[
 static int
 yylex (void)
 {
   static int counter = 1;
-  if (counter <= $max)
+  if (counter <= MAX)
     return counter++;
-  if (counter++ != $max + 1)
-    abort ();
+  assert (counter++ == MAX + 1);
   return 0;
 }
 
-static void
-yyerror (const char *msg)
-{
-  fprintf (stderr, "%s\\n", msg);
-}
-
 int
 main (void)
 {
@@ -223,6 +216,7 @@ EOF
 
 AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
 mv stdout $1
+AT_BISON_OPTION_POPDEFS
 ])
 
 
@@ -263,7 +257,8 @@ AT_CLEANUP
 # Create FILE-NAME, containing a self checking parser for a grammar
 # requiring SIZE lookahead tokens.
 m4_define([AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR],
-[AT_DATA([[gengram.pl]],
+[AT_BISON_OPTION_PUSHDEFS
+AT_DATA([[gengram.pl]],
 [[#! /usr/bin/perl -w
 
 use strict;
@@ -277,7 +272,7 @@ print <<EOF;
 # include <stdio.h>
 # include <stdlib.h>
 # include <assert.h>
-
+# define MAX $max
 ]AT_YYLEX_DECLARE[
 ]AT_YYERROR_DECLARE[
 %}
@@ -324,17 +319,17 @@ for my $count (1 .. $max)
     print "n$count: token { \$\$ = $count; };\n";
   };
 
-print <<EOF;
+print <<\EOF;
 %%
+]AT_YYERROR_DEFINE[
 static int
 yylex (void)
 {
   static int return_token = 1;
   static int counter = 1;
-  if (counter > $max)
+  if (counter > MAX)
     {
-      if (counter++ != $max + 1)
-       abort ();
+      assert (counter++ == MAX + 1);
       return 0;
     }
   if (return_token)
@@ -346,12 +341,6 @@ yylex (void)
   return counter++;
 }
 
-static void
-yyerror (const char *msg)
-{
-  fprintf (stderr, "%s\\n", msg);
-}
-
 int
 main (void)
 {
@@ -363,6 +352,7 @@ EOF
 
 AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
 mv stdout $1
+AT_BISON_OPTION_POPDEFS
 ])
 
 
@@ -411,11 +401,11 @@ AT_DATA([input.y],
 exp: WAIT_FOR_EOF exp | ;
 %%
 ]AT_YYERROR_DEFINE[
+#include <assert.h>
 static int
 yylex (void)
 {
-  if (yylval < 0)
-    abort ();
+  assert (0 <= yylval);
   if (yylval--)
     return WAIT_FOR_EOF;
   else
@@ -427,13 +417,12 @@ main (int argc, const char **argv)
 {
   char *endp;
   YYSTYPE yylval_init;
-  if (argc != 2)
-    abort ();
+  assert (argc == 2);
   yylval_init = strtol (argv[1], &endp, 10);
-  if (! (argv[1] != endp
-        && 0 <= yylval_init && yylval_init <= INT_MAX
-        && errno != ERANGE))
-    abort ();
+  assert (argv[1] != endp);
+  assert (0 <= yylval_init);
+  assert (yylval_init <= INT_MAX);
+  assert (errno != ERANGE);
   yydebug = 1;
   {
     int count;
@@ -448,8 +437,7 @@ main (int argc, const char **argv)
 [[        new_status = yypull_parse (ps);
 ]],
 [[        new_status = yyparse ();
-]])[        if (count > 0 && new_status != status)
-          abort ();
+]])[        assert (0 <= count || new_status == status);
         status = new_status;
       }
 ]m4_bmatch([$2], [%push-],