X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/5d31a2162dc41b71b9de73a3acb7fcba6fb8e7f3..6d55954743c7243ba46680f368c76ee70b1112f8:/tests/torture.at
diff --git a/tests/torture.at b/tests/torture.at
index 8874f101..a8837b22 100644
--- a/tests/torture.at
+++ b/tests/torture.at
@@ -1,21 +1,20 @@
# Torturing Bison. -*- Autotest -*-
-# Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation,
-# Inc.
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# Copyright (C) 2001-2002, 2004-2007, 2009-2012 Free Software
+# Foundation, Inc.
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-
+#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program. If not, see .
AT_BANNER([[Torture Tests.]])
@@ -43,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;
@@ -56,9 +56,9 @@ print <
#include
-
-static int yylex (void);
-static void yyerror (const char *msg);
+#define MAX $max
+]AT_YYLEX_DECLARE[
+]AT_YYERROR_DECLARE[
%}
%union
{
@@ -96,14 +96,15 @@ for my $size (1 .. $max)
};
print ";\n";
-print < $max)
+ if (outer > MAX)
return 0;
else if (inner > outer)
{
@@ -113,13 +114,6 @@ yylex (void)
}
return inner++;
}
-
-static void
-yyerror (const char *msg)
-{
- fprintf (stderr, "%s\\n", msg);
-}
-
int
main (void)
{
@@ -128,6 +122,7 @@ main (void)
}
EOF
]])
+AT_BISON_OPTION_POPDEFS
AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
mv stdout $1
@@ -145,7 +140,7 @@ AT_SETUP([Big triangle])
# With 500 and the new parser, which consume far too much memory,
# it gets killed too. Of course the parser is to be cleaned.
AT_DATA_TRIANGULAR_GRAMMAR([input.y], [200])
-AT_CHECK([bison -v -o input.c input.y])
+AT_BISON_CHECK_NO_XML([-v -o input.c input.y])
AT_COMPILE([input])
AT_PARSER_CHECK([./input])
@@ -158,7 +153,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;
@@ -171,9 +167,9 @@ print <
#include
-
-static int yylex (void);
-static void yyerror (const char *msg);
+#define MAX $max
+]AT_YYLEX_DECLARE[
+]AT_YYERROR_DECLARE[
%}
%token
@@ -194,25 +190,20 @@ print
(map { "\"$_\"" } (1 .. $max)), ";"),
"\n";
-print <
# include
# include
-
-static int yylex (void);
-static void yyerror (const char *msg);
+# define MAX $max
+]AT_YYLEX_DECLARE[
+]AT_YYERROR_DECLARE[
%}
%union
{
@@ -325,16 +318,17 @@ for my $count (1 .. $max)
print "n$count: token { \$\$ = $count; };\n";
};
-print < $max)
+ if (counter > MAX)
{
- if (counter++ != $max + 1)
+ if (counter++ != MAX + 1)
abort ();
return 0;
}
@@ -347,12 +341,6 @@ yylex (void)
return counter++;
}
-static void
-yyerror (const char *msg)
-{
- fprintf (stderr, "%s\\n", msg);
-}
-
int
main (void)
{
@@ -364,6 +352,7 @@ EOF
AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
mv stdout $1
+AT_BISON_OPTION_POPDEFS
])
@@ -379,7 +368,7 @@ AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR([input.y], [1000])
# Ask for 200 MiB, which should be plenty even on a 64-bit host.
AT_INCREASE_DATA_SIZE(204000)
-AT_CHECK([bison -v -o input.c input.y])
+AT_BISON_CHECK([-v -o input.c input.y])
AT_COMPILE([input])
AT_PARSER_CHECK([./input])
@@ -391,7 +380,8 @@ AT_CLEANUP
# ------------------------------------------------
# A parser specialized in torturing the stack size.
m4_define([AT_DATA_STACK_TORTURE],
-[# A grammar of parens growing the stack thanks to right recursion.
+[AT_BISON_OPTION_PUSHDEFS([$2])
+# A grammar of parens growing the stack thanks to right recursion.
# exp:
AT_DATA([input.y],
[[%{
@@ -400,8 +390,8 @@ AT_DATA([input.y],
#include
#include
]$1[
- static int yylex (void);
- static void yyerror (const char *msg);
+ ]AT_YYLEX_DECLARE[
+ ]AT_YYERROR_DECLARE[
%}
]$2[
%error-verbose
@@ -410,12 +400,7 @@ AT_DATA([input.y],
%%
exp: WAIT_FOR_EOF exp | ;
%%
-static void
-yyerror (const char *msg)
-{
- fprintf (stderr, "%s\n", msg);
-}
-
+]AT_YYERROR_DEFINE[
static int
yylex (void)
{
@@ -463,7 +448,8 @@ main (int argc, const char **argv)
}
}
]])
-AT_CHECK([bison -o input.c input.y])
+AT_BISON_OPTION_POPDEFS([$2])
+AT_BISON_CHECK([-o input.c input.y])
AT_COMPILE([input])
])
@@ -498,7 +484,7 @@ AT_PARSER_CHECK([./input 10000], 2, [], [ignore],
# just helps guarantee we don't let the YYSTACK_USE_ALLOCA feature affect
# push parsers.
AT_DATA_STACK_TORTURE([AT_USE_ALLOCA],
-[[%push-pull-parser
+[[%define api.push-pull both
]])
AT_PARSER_CHECK([./input 20], 0, [], [ignore],
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
@@ -536,7 +522,7 @@ AT_PARSER_CHECK([./input 10000], 2, [], [ignore],
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])
AT_DATA_STACK_TORTURE([AT_USE_ALLOCA],
-[[%push-pull-parser
+[[%define api.push-pull both
]])
AT_PARSER_CHECK([./input 20], 0, [], [ignore],
[[VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1"]])