]> git.saurik.com Git - bison.git/commitdiff
Add maintainer-push-check to run maintainer-check using push parsing in
authorJoel E. Denny <jdenny@ces.clemson.edu>
Tue, 2 Jan 2007 02:10:42 +0000 (02:10 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Tue, 2 Jan 2007 02:10:42 +0000 (02:10 +0000)
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.

ChangeLog
Makefile.am
data/bison.m4
data/push.c
data/yacc.c
src/output.c
tests/Makefile.am

index b5e86bcea7e86f2a1af3447eb632ba3254d5618e..86f8a353f5d6b7185f5116730565704c6b5adf88 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+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
index b64b842339ff427e6de20ba8bb6e1f2f4b99a623..1c61fbbfde070082bd97eabf4b50d3cfd7f6b5d5 100644 (file)
@@ -1,5 +1,6 @@
 ## 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
@@ -35,3 +36,7 @@ EXTRA_DIST = GNUmakefile Makefile.cfg Makefile.maint \
 .PHONY: maintainer-check
 maintainer-check:
        cd tests && $(MAKE) $(AM_MAKEFLAGS) $@
+
+.PHONY: maintainer-push-check
+maintainer-push-check:
+       cd tests && $(MAKE) $(AM_MAKEFLAGS) $@
index 8d8b256e2019e440dc2d57282bc7192362dd7268..f80b87b7eec1d218301d6599e97a612923b90dbb 100644 (file)
@@ -1,7 +1,7 @@
 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
@@ -130,6 +130,10 @@ b4_define_flag_if([nondeterministic])      # Whether conflicts should be handled.
 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.
 
 
index 220c0616ce4fb05d04632746087f2b7558bc2498..bf64b23bb63943af0d541273e483c4feb17d123f 100644 (file)
@@ -2,8 +2,8 @@ m4_divert(-1)                                                -*- C -*-
 
 # 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
@@ -20,6 +20,18 @@ m4_divert(-1)                                                -*- C -*-
 # 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])
 
 ## ---------------- ##
@@ -1317,8 +1329,9 @@ yybackup:
     {
 ]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;
index a10772240303c307806805a9f1b89ef24fdaa5ec..e880a8a96d16aeeda3819ef514628765074e56b0 100644 (file)
@@ -2,8 +2,8 @@ m4_divert(-1)                                                -*- C -*-
 
 # 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
@@ -20,6 +20,9 @@ m4_divert(-1)                                                -*- C -*-
 # 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])
 
 ## ---------------- ##
index fb96602b159107f83c6fc57079de9e7706f76ca2..b30fe4b9d989784f4565c9d4bac6f590ec5257c0 100644 (file)
@@ -1,7 +1,7 @@
 /* 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.
 
@@ -586,6 +586,15 @@ output_skeleton (void)
 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);
@@ -595,6 +604,7 @@ prepare (void)
   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);
index b5f5260efbcfe8039c630358146a8c14ba126d31..8d76eebb37c5bb10e56d7d03dad36e21f3f149fc 100644 (file)
@@ -2,7 +2,7 @@
 
 ## 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
@@ -93,3 +93,7 @@ maintainer-check-valgrind: $(TESTSUITE)
 
 .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