From 945e396c8a4fcaa24f2445766a7098bf3c60f904 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Tue, 2 Jan 2007 02:10:42 +0000 Subject: [PATCH] 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. --- ChangeLog | 16 ++++++++++++++++ Makefile.am | 7 ++++++- data/bison.m4 | 6 +++++- data/push.c | 21 +++++++++++++++++---- data/yacc.c | 7 +++++-- src/output.c | 12 +++++++++++- tests/Makefile.am | 6 +++++- 7 files changed, 65 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index b5e86bce..86f8a353 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2007-01-01 Joel E. Denny + + 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 * data/push.c (yypush_parse): Set yynew = 1 at the end of a parse diff --git a/Makefile.am b/Makefile.am index b64b8423..1c61fbbf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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) $@ diff --git a/data/bison.m4 b/data/bison.m4 index 8d8b256e..f80b87b7 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -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. diff --git a/data/push.c b/data/push.c index 220c0616..bf64b23b 100644 --- a/data/push.c +++ b/data/push.c @@ -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; diff --git a/data/yacc.c b/data/yacc.c index a1077224..e880a8a9 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -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]) ## ---------------- ## diff --git a/src/output.c b/src/output.c index fb96602b..b30fe4b9 100644 --- a/src/output.c +++ b/src/output.c @@ -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); diff --git a/tests/Makefile.am b/tests/Makefile.am index b5f5260e..8d76eebb 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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 -- 2.47.2