place of pull parsing where available.
* Makefile.am (maintainer-push-check): New.
* data/bison.m4 (b4_use_push_for_pull_if): New.
* data/push.c: Redefine b4_push_if and b4_use_push_for_pull_if
appropriately based on their existing values.
(yypush_parse): Don't print push-parser-specific diagnostics if push
parsing is being used in place of pull parsing.
* data/yacc.c: If push parsing should replace pull parsing, redirect to
push.c.
* src/output.c (prepare): Check BISON_USE_PUSH_FOR_PULL environment
variable, and insert b4_use_push_for_pull_flag into muscles.
* tests/Makefile.am (maintainer-push-check): New.
+2007-01-01 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add maintainer-push-check to run maintainer-check using push parsing in
+ place of pull parsing where available.
+ * Makefile.am (maintainer-push-check): New.
+ * data/bison.m4 (b4_use_push_for_pull_if): New.
+ * data/push.c: Redefine b4_push_if and b4_use_push_for_pull_if
+ appropriately based on their existing values.
+ (yypush_parse): Don't print push-parser-specific diagnostics if push
+ parsing is being used in place of pull parsing.
+ * data/yacc.c: If push parsing should replace pull parsing, redirect to
+ push.c.
+ * src/output.c (prepare): Check BISON_USE_PUSH_FOR_PULL environment
+ variable, and insert b4_use_push_for_pull_flag into muscles.
+ * tests/Makefile.am (maintainer-push-check): New.
+
2006-12-31 Joel E. Denny <jdenny@ces.clemson.edu>
* data/push.c (yypush_parse): Set yynew = 1 at the end of a parse
## Process this file with automake to produce Makefile.in -*-Makefile-*-
-## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+## Copyright (C) 2001, 2002, 2003, 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
.PHONY: maintainer-check
maintainer-check:
cd tests && $(MAKE) $(AM_MAKEFLAGS) $@
+
+.PHONY: maintainer-push-check
+maintainer-push-check:
+ cd tests && $(MAKE) $(AM_MAKEFLAGS) $@
m4_divert(-1) -*- Autoconf -*-
# Language-independent M4 Macros for Bison.
-# Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 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
b4_define_flag_if([pull]) # Whether pull parsing is requested.
b4_define_flag_if([pure]) # Whether the interface is pure.
b4_define_flag_if([push]) # Whether push parsing is requested.
+b4_define_flag_if([use_push_for_pull]) # Whether push parsing should be used
+ # in place of pull parsing (where
+ # available) for the sake of the test
+ # suite.
b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
# Yacc compatible skeleton for Bison
-# Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 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
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
+# Handle BISON_USE_PUSH_FOR_PULL for the test suite. So that push parsing
+# tests function as written, don't let BISON_USE_PUSH_FOR_PULL modify Bison's
+# behavior at all when push parsing is already requested.
+b4_use_push_for_pull_if([
+ b4_push_if([
+ m4_define([b4_use_push_for_pull_flag], [[0]])
+ b4_define_flag_if([use_push_for_pull])
+ ], [
+ m4_define([b4_push_flag], [[1]])
+ b4_define_flag_if([push])
+ ])])
+
m4_include(b4_pkgdatadir/[c.m4])
## ---------------- ##
{
]b4_push_if([[ if (!yyps->yynew)
{
- YYDPRINTF ((stderr, "Return for a new token:\n"));
- yyresult = YYPUSH_MORE;
+]b4_use_push_for_pull_if([],
+[[ YYDPRINTF ((stderr, "Return for a new token:\n"));
+]])[ yyresult = YYPUSH_MORE;
goto yypushreturn;
}
yyps->yynew = 0;
# Yacc compatible skeleton for Bison
-# Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 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
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
+# Handle BISON_USE_PUSH_FOR_PULL for the test suite.
+b4_use_push_for_pull_if([m4_include(b4_pkgdatadir/[push.c])m4_exit])
+
m4_include(b4_pkgdatadir/[c.m4])
## ---------------- ##
/* Output the generated parsing program for Bison.
Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006 Free Software Foundation, Inc.
+ 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
static void
prepare (void)
{
+ /* BISON_USE_PUSH_FOR_PULL is for the test suite and should not be documented
+ for the user. */
+ char const *use_push_for_pull_env = getenv ("BISON_USE_PUSH_FOR_PULL");
+ bool use_push_for_pull_flag = false;
+ if (use_push_for_pull_env != NULL
+ && use_push_for_pull_env[0] != '\0'
+ && 0 != strcmp (use_push_for_pull_env, "0"))
+ use_push_for_pull_flag = true;
+
/* Flags. */
MUSCLE_INSERT_BOOL ("debug_flag", debug_flag);
MUSCLE_INSERT_BOOL ("defines_flag", defines_flag);
MUSCLE_INSERT_BOOL ("nondeterministic_flag", nondeterministic_parser);
MUSCLE_INSERT_BOOL ("pull_flag", pull_parser);
MUSCLE_INSERT_BOOL ("pure_flag", pure_parser);
+ MUSCLE_INSERT_BOOL ("use_push_for_pull_flag", use_push_for_pull_flag);
MUSCLE_INSERT_BOOL ("push_flag", push_parser);
MUSCLE_INSERT_BOOL ("synclines_flag", !no_lines_flag);
MUSCLE_INSERT_BOOL ("tag_seen_flag", tag_seen);
## Makefile for Bison testsuite.
-## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
## Foundation, Inc.
## This program is free software; you can redistribute it and/or modify
.PHONY: maintainer-check
maintainer-check: maintainer-check-posix maintainer-check-valgrind maintainer-check-g++
+
+.PHONY: maintainer-push-check
+maintainer-push-check:
+ BISON_USE_PUSH_FOR_PULL=1 $(MAKE) $(AM_MAKEFLAGS) maintainer-check