#! /usr/bin/perl -w
-# Copyright (C) 2006 Free Software Foundation, Inc.
-#
+# Copyright (C) 2006, 2008-2012 Free Software Foundation, Inc.
+#
# This file is part of Bison, the GNU Compiler Compiler.
-#
-# Bison is free software; you can redistribute it and/or modify
+#
+# 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.
-#
-# Bison is distributed in the hope that it will be useful,
+# 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 autoconf; see the file COPYING. 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 <http://www.gnu.org/licenses/>.
+
use IO::File;
use Benchmark qw (:all);
or die;
print $out <<EOF;
%{
+#include <assert.h>
#include <stdio.h>
-
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/* Skip white space. */
while ((c = get_char ()) == ' ' || c == '\t')
- {
-
- }
+ continue;
/* process numbers */
if (c == '.' || isdigit (c))
static int
power (int base, int exponent)
{
+ assert (0 <= exponent);
int res = 1;
- if (exponent < 0)
- exit (3);
for (/* Niente */; exponent; --exponent)
res *= base;
return res;
my ($gram) = @_;
my %test =
(
- "yacc.c-pull-impure" => '',
- "yacc.c-pull-pure" => '%pure-parser',
- "push.c-pull-impure" => '%skeleton "push.c"',
- "push.c-pull-pure" => '%skeleton "push.c" %pure-parser',
- "push.c-push-impure" => '%skeleton "push.c" %push-parser',
- "push.c-push-pure" => '%skeleton "push.c" %push-parser %pure-parser',
+ "pull-impure" => '',
+ "pull-pure" => '%define api.pure',
+ "push-impure" => '%define api.push-pull "both"',
+ "push-pure" => '%define api.push-pull "both" %define api.pure',
);
-
+
my %bench;
while (my ($name, $directives) = each %test)
{