From 7c31742a07c7fa311b0c78c598066944db1ca900 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Fri, 29 Aug 2008 13:02:33 +0000
Subject: [PATCH] Remove all traces that suggest that a non-Bison yacc might be
 supported, and change build system to use only Bison.  Simplify build rules,
 make file names uniform.  Don't build the token table header file where it is
 not needed.

---
 config/programs.m4                   | 36 +++++++++----------
 configure                            | 54 +++++++++++++---------------
 configure.in                         |  4 +--
 contrib/cube/.cvsignore              |  1 -
 contrib/cube/Makefile                | 18 ++++------
 contrib/seg/.cvsignore               |  1 -
 contrib/seg/Makefile                 | 18 ++++------
 doc/src/sgml/installation.sgml       | 38 ++++++++++++--------
 src/Makefile.global.in               |  6 ++--
 src/backend/Makefile                 | 19 +++++-----
 src/backend/bootstrap/.cvsignore     |  1 -
 src/backend/bootstrap/Makefile       | 24 ++++---------
 src/backend/bootstrap/bootscanner.l  |  4 +--
 src/backend/parser/.cvsignore        |  2 +-
 src/backend/parser/Makefile          | 19 ++++------
 src/backend/parser/keywords.c        |  6 ++--
 src/backend/parser/parser.c          |  6 ++--
 src/backend/parser/scan.l            |  4 +--
 src/include/Makefile                 |  4 +--
 src/interfaces/ecpg/preproc/Makefile | 16 ++++-----
 src/pl/plpgsql/src/.cvsignore        |  2 +-
 src/pl/plpgsql/src/Makefile          | 22 +++++-------
 src/pl/plpgsql/src/pl_comp.c         |  4 +--
 src/pl/plpgsql/src/pl_exec.c         |  3 +-
 src/pl/plpgsql/src/pl_funcs.c        |  3 +-
 src/pl/plpgsql/src/pl_handler.c      |  3 +-
 src/tools/msvc/clean.bat             |  5 ++-
 src/tools/msvc/pgbison.bat           |  6 ++--
 28 files changed, 144 insertions(+), 185 deletions(-)

diff --git a/config/programs.m4 b/config/programs.m4
index cf659555c0..589be5e310 100644
--- a/config/programs.m4
+++ b/config/programs.m4
@@ -1,43 +1,41 @@
-# $PostgreSQL: pgsql/config/programs.m4,v 1.23 2008/05/27 22:18:04 tgl Exp $
+# $PostgreSQL: pgsql/config/programs.m4,v 1.24 2008/08/29 13:02:32 petere Exp $
 
 
-# PGAC_PATH_YACC
-# --------------
-# Look for Bison, set the output variable YACC to its path if found.
+# PGAC_PATH_BISON
+# ---------------
+# Look for Bison, set the output variable BISON to its path if found.
 # Reject versions before 1.875 (they have bugs or capacity limits).
 # Note we do not accept other implementations of yacc.
 
-AC_DEFUN([PGAC_PATH_YACC],
+AC_DEFUN([PGAC_PATH_BISON],
 [# Let the user override the search
-if test -z "$YACC"; then
-  AC_CHECK_PROGS(YACC, ['bison -y'])
+if test -z "$BISON"; then
+  AC_CHECK_PROGS(BISON, bison)
 fi
 
-if test "$YACC"; then
-  pgac_yacc_version=`$YACC --version 2>/dev/null | sed q`
-  AC_MSG_NOTICE([using $pgac_yacc_version])
-  if echo "$pgac_yacc_version" | $AWK '{ if ([$]4 < 1.875) exit 0; else exit 1;}'
+if test "$BISON"; then
+  pgac_bison_version=`$BISON --version 2>/dev/null | sed q`
+  AC_MSG_NOTICE([using $pgac_bison_version])
+  if echo "$pgac_bison_version" | $AWK '{ if ([$]4 < 1.875) exit 0; else exit 1;}'
   then
     AC_MSG_WARN([
 *** The installed version of Bison is too old to use with PostgreSQL.
 *** Bison version 1.875 or later is required.])
-    YACC=""
+    BISON=""
   fi
 fi
 
-if test -z "$YACC"; then
+if test -z "$BISON"; then
   AC_MSG_WARN([
 *** Without Bison you will not be able to build PostgreSQL from CVS nor
 *** change any of the parser definition files.  You can obtain Bison from
 *** a GNU mirror site.  (If you are using the official distribution of
 *** PostgreSQL then you do not need to worry about this, because the Bison
-*** output is pre-generated.)  To use a different yacc program (possible,
-*** but not recommended), set the environment variable YACC before running
-*** 'configure'.])
+*** output is pre-generated.)])
 fi
-# We don't need AC_SUBST(YACC) because AC_PATH_PROG did it
-AC_SUBST(YFLAGS)
-])# PGAC_PATH_YACC
+# We don't need AC_SUBST(BISON) because AC_PATH_PROG did it
+AC_SUBST(BISONFLAGS)
+])# PGAC_PATH_BISON
 
 
 
diff --git a/configure b/configure
index 042ea1598a..b8a7287efa 100755
--- a/configure
+++ b/configure
@@ -718,8 +718,8 @@ STRIP_SHARED_LIB
 TAR
 LN_S
 AWK
-YACC
-YFLAGS
+BISON
+BISONFLAGS
 FLEX
 FLEXFLAGS
 PERL
@@ -5952,18 +5952,18 @@ done
 
 
 # Let the user override the search
-if test -z "$YACC"; then
-  for ac_prog in 'bison -y'
+if test -z "$BISON"; then
+  for ac_prog in bison
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 { echo "$as_me:$LINENO: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_YACC+set}" = set; then
+if test "${ac_cv_prog_BISON+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
+  if test -n "$BISON"; then
+  ac_cv_prog_BISON="$BISON" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5972,7 +5972,7 @@ do
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_YACC="$ac_prog"
+    ac_cv_prog_BISON="$ac_prog"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5982,26 +5982,26 @@ IFS=$as_save_IFS
 
 fi
 fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { echo "$as_me:$LINENO: result: $YACC" >&5
-echo "${ECHO_T}$YACC" >&6; }
+BISON=$ac_cv_prog_BISON
+if test -n "$BISON"; then
+  { echo "$as_me:$LINENO: result: $BISON" >&5
+echo "${ECHO_T}$BISON" >&6; }
 else
   { echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6; }
 fi
 
 
-  test -n "$YACC" && break
+  test -n "$BISON" && break
 done
 
 fi
 
-if test "$YACC"; then
-  pgac_yacc_version=`$YACC --version 2>/dev/null | sed q`
-  { echo "$as_me:$LINENO: using $pgac_yacc_version" >&5
-echo "$as_me: using $pgac_yacc_version" >&6;}
-  if echo "$pgac_yacc_version" | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}'
+if test "$BISON"; then
+  pgac_bison_version=`$BISON --version 2>/dev/null | sed q`
+  { echo "$as_me:$LINENO: using $pgac_bison_version" >&5
+echo "$as_me: using $pgac_bison_version" >&6;}
+  if echo "$pgac_bison_version" | $AWK '{ if ($4 < 1.875) exit 0; else exit 1;}'
   then
     { echo "$as_me:$LINENO: WARNING:
 *** The installed version of Bison is too old to use with PostgreSQL.
@@ -6009,29 +6009,25 @@ echo "$as_me: using $pgac_yacc_version" >&6;}
 echo "$as_me: WARNING:
 *** The installed version of Bison is too old to use with PostgreSQL.
 *** Bison version 1.875 or later is required." >&2;}
-    YACC=""
+    BISON=""
   fi
 fi
 
-if test -z "$YACC"; then
+if test -z "$BISON"; then
   { echo "$as_me:$LINENO: WARNING:
 *** Without Bison you will not be able to build PostgreSQL from CVS nor
 *** change any of the parser definition files.  You can obtain Bison from
 *** a GNU mirror site.  (If you are using the official distribution of
 *** PostgreSQL then you do not need to worry about this, because the Bison
-*** output is pre-generated.)  To use a different yacc program (possible,
-*** but not recommended), set the environment variable YACC before running
-*** 'configure'." >&5
+*** output is pre-generated.)" >&5
 echo "$as_me: WARNING:
 *** Without Bison you will not be able to build PostgreSQL from CVS nor
 *** change any of the parser definition files.  You can obtain Bison from
 *** a GNU mirror site.  (If you are using the official distribution of
 *** PostgreSQL then you do not need to worry about this, because the Bison
-*** output is pre-generated.)  To use a different yacc program (possible,
-*** but not recommended), set the environment variable YACC before running
-*** 'configure'." >&2;}
+*** output is pre-generated.)" >&2;}
 fi
-# We don't need AC_SUBST(YACC) because AC_PATH_PROG did it
+# We don't need AC_SUBST(BISON) because AC_PATH_PROG did it
 
 
 { echo "$as_me:$LINENO: checking for flex" >&5
@@ -26600,8 +26596,8 @@ for ac_last_try in false false false false false :; do
 TAR!$TAR$ac_delim
 LN_S!$LN_S$ac_delim
 AWK!$AWK$ac_delim
-YACC!$YACC$ac_delim
-YFLAGS!$YFLAGS$ac_delim
+BISON!$BISON$ac_delim
+BISONFLAGS!$BISONFLAGS$ac_delim
 FLEX!$FLEX$ac_delim
 FLEXFLAGS!$FLEXFLAGS$ac_delim
 PERL!$PERL$ac_delim
diff --git a/configure.in b/configure.in
index 6cde15e30c..e351bd1c85 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-dnl $PostgreSQL: pgsql/configure.in,v 1.564 2008/08/19 19:17:40 tgl Exp $
+dnl $PostgreSQL: pgsql/configure.in,v 1.565 2008/08/29 13:02:32 petere Exp $
 dnl
 dnl Developers, please strive to achieve this order:
 dnl
@@ -783,7 +783,7 @@ AC_PATH_PROG(TAR, tar)
 AC_PROG_LN_S
 AC_PROG_AWK
 
-PGAC_PATH_YACC
+PGAC_PATH_BISON
 PGAC_PATH_FLEX
 
 PGAC_PATH_PERL
diff --git a/contrib/cube/.cvsignore b/contrib/cube/.cvsignore
index fe92b5e14f..19ecc85b58 100644
--- a/contrib/cube/.cvsignore
+++ b/contrib/cube/.cvsignore
@@ -1,3 +1,2 @@
 cubeparse.c
-cubeparse.h
 cubescan.c
diff --git a/contrib/cube/Makefile b/contrib/cube/Makefile
index a1610fe91a..7f91b14c64 100644
--- a/contrib/cube/Makefile
+++ b/contrib/cube/Makefile
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/contrib/cube/Makefile,v 1.21 2007/11/10 23:59:50 momjian Exp $
+# $PostgreSQL: pgsql/contrib/cube/Makefile,v 1.22 2008/08/29 13:02:32 petere Exp $
 
 MODULE_big = cube
 OBJS= cube.o cubeparse.o
@@ -26,15 +26,9 @@ endif
 # cubescan is compiled as part of cubeparse
 cubeparse.o: $(srcdir)/cubescan.c
 
-# See notes in src/backend/parser/Makefile about the following two rules
-
-$(srcdir)/cubeparse.c: $(srcdir)/cubeparse.h ;
-
-$(srcdir)/cubeparse.h: cubeparse.y
-ifdef YACC
-	$(YACC) -d $(YFLAGS) $<
-	mv -f y.tab.c $(srcdir)/cubeparse.c
-	mv -f y.tab.h $(srcdir)/cubeparse.h
+$(srcdir)/cubeparse.c: cubeparse.y
+ifdef BISON
+	$(BISON) $(BISONFLAGS) -o $@ $<
 else
 	@$(missing) bison $< $@
 endif
@@ -46,7 +40,7 @@ else
 	@$(missing) flex $< $@
 endif
 
-distprep: $(srcdir)/cubeparse.c $(srcdir)/cubeparse.h $(srcdir)/cubescan.c
+distprep: $(srcdir)/cubeparse.c $(srcdir)/cubescan.c
 
 maintainer-clean:
-	rm -f $(srcdir)/cubeparse.c $(srcdir)/cubeparse.h $(srcdir)/cubescan.c
+	rm -f $(srcdir)/cubeparse.c $(srcdir)/cubescan.c
diff --git a/contrib/seg/.cvsignore b/contrib/seg/.cvsignore
index e69a249aec..aa740d3474 100644
--- a/contrib/seg/.cvsignore
+++ b/contrib/seg/.cvsignore
@@ -1,3 +1,2 @@
 segparse.c
-segparse.h
 segscan.c
diff --git a/contrib/seg/Makefile b/contrib/seg/Makefile
index 25c5593241..31012da344 100644
--- a/contrib/seg/Makefile
+++ b/contrib/seg/Makefile
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/contrib/seg/Makefile,v 1.20 2007/11/10 23:59:51 momjian Exp $
+# $PostgreSQL: pgsql/contrib/seg/Makefile,v 1.21 2008/08/29 13:02:32 petere Exp $
 
 MODULE_big = seg
 OBJS = seg.o segparse.o
@@ -23,15 +23,9 @@ endif
 # segscan is compiled as part of segparse
 segparse.o: $(srcdir)/segscan.c
 
-# See notes in src/backend/parser/Makefile about the following two rules
-
-$(srcdir)/segparse.c: $(srcdir)/segparse.h ;
-
-$(srcdir)/segparse.h: segparse.y
-ifdef YACC
-	$(YACC) -d $(YFLAGS) $<
-	mv -f y.tab.c $(srcdir)/segparse.c
-	mv -f y.tab.h $(srcdir)/segparse.h
+$(srcdir)/segparse.c: segparse.y
+ifdef BISON
+	$(BISON) $(BISONFLAGS) -o $@ $<
 else
 	@$(missing) bison $< $@
 endif
@@ -43,7 +37,7 @@ else
 	@$(missing) flex $< $@
 endif
 
-distprep: $(srcdir)/segparse.c $(srcdir)/segparse.h $(srcdir)/segscan.c
+distprep: $(srcdir)/segparse.c $(srcdir)/segscan.c
 
 maintainer-clean:
-	rm -f $(srcdir)/segparse.c $(srcdir)/segparse.h $(srcdir)/segscan.c
+	rm -f $(srcdir)/segparse.c $(srcdir)/segscan.c
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index c787a31388..a5dfa8d081 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.311 2008/07/23 17:07:50 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.312 2008/08/29 13:02:32 petere Exp $ -->
 
 <chapter id="installation">
  <title><![%standalone-include[<productname>PostgreSQL</>]]>
@@ -276,6 +276,9 @@ su - postgres
       <indexterm>
        <primary>flex</primary>
       </indexterm>
+      <indexterm>
+       <primary>lex</primary>
+      </indexterm>
       <indexterm>
        <primary>bison</primary>
       </indexterm>
@@ -287,10 +290,8 @@ su - postgres
       are needed to build a CVS checkout or if you changed the actual
       scanner and parser definition files. If you need them, be sure
       to get <application>Flex</> 2.5.4 or later and
-      <application>Bison</> 1.875 or later. Other <application>yacc</>
-      programs can sometimes be used, but doing so requires extra
-      effort and is not recommended. Other <application>lex</>
-      programs will definitely not work.
+      <application>Bison</> 1.875 or later. Other <application>lex</>
+      and <application>yacc</> programs cannot be used.
      </para>
     </listitem>
    </itemizedlist>
@@ -1341,6 +1342,15 @@ su - postgres
      this manner:
  
      <variablelist>
+      <varlistentry>
+       <term><envar>BISON</envar></term>
+       <listitem>
+        <para>
+         Bison program
+        </para>
+       </listitem>
+      </varlistentry>
+
       <varlistentry>
        <term><envar>CC</envar></term>
        <listitem>
@@ -1395,6 +1405,15 @@ su - postgres
        </listitem>
       </varlistentry>
 
+      <varlistentry>
+       <term><envar>FLEX</envar></term>
+       <listitem>
+        <para>
+         Flex program
+        </para>
+       </listitem>
+      </varlistentry>
+
       <varlistentry>
        <term><envar>LDFLAGS</envar></term>
        <listitem>
@@ -1462,15 +1481,6 @@ su - postgres
         </para>
        </listitem>
       </varlistentry>
-
-      <varlistentry>
-       <term><envar>YACC</envar></term>
-       <listitem>
-        <para>
-         Yacc program (<literal>bison -y</literal> if using Bison)
-        </para>
-       </listitem>
-      </varlistentry>
      </variablelist>
     </para>
    </step>
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 7af95f98f9..6212a1467f 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
 # -*-makefile-*-
-# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.241 2008/02/17 16:36:43 petere Exp $
+# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.242 2008/08/29 13:02:32 petere Exp $
 
 #------------------------------------------------------------------------------
 # All PostgreSQL makefiles include this file and use the variables it sets,
@@ -216,8 +216,8 @@ CFLAGS = @CFLAGS@
 
 # Kind-of compilers
 
-YACC = @YACC@
-YFLAGS = @YFLAGS@
+BISON = @BISON@
+BISONFLAGS = @BISONFLAGS@ $(YFLAGS)
 FLEX = @FLEX@
 FLEXFLAGS = @FLEXFLAGS@ $(LFLAGS)
 DTRACE = @DTRACE@
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 0025a0c2a1..7fd613f6c9 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -5,7 +5,7 @@
 # Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/backend/Makefile,v 1.129 2008/08/01 13:16:08 alvherre Exp $
+# $PostgreSQL: pgsql/src/backend/Makefile,v 1.130 2008/08/29 13:02:32 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -105,7 +105,7 @@ endif
 endif # aix
 
 # Update the commonly used headers before building the subdirectories
-$(SUBDIRS:%=%-recursive): $(top_builddir)/src/include/parser/parse.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/probes.h
+$(SUBDIRS:%=%-recursive): $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/probes.h
 
 
 # The postgres.o target is needed by the rule in Makefile.global that
@@ -118,8 +118,8 @@ postgres.o: $(OBJS)
 # the make files in our subdirectories. Note that it's important we
 # match the dependencies shown in the subdirectory makefiles!
 
-$(srcdir)/parser/parse.h: parser/gram.y
-	$(MAKE) -C parser parse.h
+$(srcdir)/parser/gram.h: parser/gram.y
+	$(MAKE) -C parser gram.h
 
 utils/fmgroids.h: utils/Gen_fmgrtab.sh $(top_srcdir)/src/include/catalog/pg_proc.h
 	$(MAKE) -C utils fmgroids.h
@@ -131,7 +131,7 @@ utils/probes.h: utils/probes.d
 # we can cut down on the -I options. Also, a symlink is automatically
 # up to date when we update the base file.
 
-$(top_builddir)/src/include/parser/parse.h: $(srcdir)/parser/parse.h
+$(top_builddir)/src/include/parser/gram.h: $(srcdir)/parser/gram.h
 	prereqdir=`cd $(dir $<) >/dev/null && pwd` && \
 	  cd $(dir $@) && rm -f $(notdir $@) && \
 	  $(LN_S) "$$prereqdir/$(notdir $<)" .
@@ -154,8 +154,8 @@ endif
 ##########################################################################
 
 distprep:
-	$(MAKE) -C parser	gram.c parse.h scan.c
-	$(MAKE) -C bootstrap	bootparse.c bootstrap_tokens.h bootscanner.c
+	$(MAKE) -C parser	gram.c gram.h scan.c
+	$(MAKE) -C bootstrap	bootparse.c bootscanner.c
 	$(MAKE) -C utils/misc	guc-file.c
 
 
@@ -239,7 +239,7 @@ endif
 
 clean:
 	rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \
-		$(top_srcdir)/src/include/parser/parse.h \
+		$(top_srcdir)/src/include/parser/gram.h \
 		$(top_builddir)/src/include/utils/fmgroids.h
 ifeq ($(PORTNAME), cygwin)
 	rm -f postgres.dll postgres.def libpostgres.a
@@ -254,10 +254,9 @@ distclean: clean
 maintainer-clean: distclean
 	rm -f $(srcdir)/bootstrap/bootparse.c \
 	      $(srcdir)/bootstrap/bootscanner.c \
-	      $(srcdir)/bootstrap/bootstrap_tokens.h \
 	      $(srcdir)/parser/gram.c \
 	      $(srcdir)/parser/scan.c \
-	      $(srcdir)/parser/parse.h \
+	      $(srcdir)/parser/gram.h \
 	      $(srcdir)/utils/misc/guc-file.c
 
 
diff --git a/src/backend/bootstrap/.cvsignore b/src/backend/bootstrap/.cvsignore
index 511777ca30..5201be9886 100644
--- a/src/backend/bootstrap/.cvsignore
+++ b/src/backend/bootstrap/.cvsignore
@@ -1,3 +1,2 @@
 bootparse.c
-bootstrap_tokens.h
 bootscanner.c
diff --git a/src/backend/bootstrap/Makefile b/src/backend/bootstrap/Makefile
index ac83245395..3a68367aae 100644
--- a/src/backend/bootstrap/Makefile
+++ b/src/backend/bootstrap/Makefile
@@ -2,7 +2,7 @@
 #
 # Makefile for the bootstrap module
 #
-# $PostgreSQL: pgsql/src/backend/bootstrap/Makefile,v 1.36 2008/02/19 10:30:07 petere Exp $
+# $PostgreSQL: pgsql/src/backend/bootstrap/Makefile,v 1.37 2008/08/29 13:02:32 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -20,15 +20,9 @@ include $(top_srcdir)/src/backend/common.mk
 # bootscanner is compiled as part of bootparse
 bootparse.o: $(srcdir)/bootscanner.c
 
-# See notes in src/backend/parser/Makefile about the following two rules
-
-$(srcdir)/bootparse.c: $(srcdir)/bootstrap_tokens.h ;
-
-$(srcdir)/bootstrap_tokens.h: bootparse.y
-ifdef YACC
-	$(YACC) -d $(YFLAGS) $<
-	mv -f y.tab.c $(srcdir)/bootparse.c
-	mv -f y.tab.h $(srcdir)/bootstrap_tokens.h
+$(srcdir)/bootparse.c: bootparse.y
+ifdef BISON
+	$(BISON) $(BISONFLAGS) -o $@ $<
 else
 	@$(missing) bison $< $@
 endif
@@ -40,12 +34,6 @@ else
 	@$(missing) flex $< $@
 endif
 
-# Force these dependencies to be known even without dependency info built:
-bootstrap.o bootparse.o: $(srcdir)/bootstrap_tokens.h
-
 
-# bootparse.c, bootstrap_tokens.h, and bootscanner.c are in the distribution
-# tarball, so they are not cleaned here.
-clean:
-# And the garbage that might have been left behind by partial build:
-	@rm -f y.tab.h y.tab.c y.output lex.yy.c
+# bootparse.c and bootscanner.c are in the distribution tarball, so
+# they are not cleaned here.
diff --git a/src/backend/bootstrap/bootscanner.l b/src/backend/bootstrap/bootscanner.l
index ebcd9e99d5..49bef98420 100644
--- a/src/backend/bootstrap/bootscanner.l
+++ b/src/backend/bootstrap/bootscanner.l
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/bootstrap/bootscanner.l,v 1.46 2008/05/09 15:36:31 petere Exp $
+ *	  $PostgreSQL: pgsql/src/backend/bootstrap/bootscanner.l,v 1.47 2008/08/29 13:02:32 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -37,7 +37,7 @@
 #include "utils/rel.h"
 
 /* Not needed now that this file is compiled as part of bootparse. */
-/* #include "bootstrap_tokens.h" */
+/* #include "bootparse.h" */
 
 
 /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */
diff --git a/src/backend/parser/.cvsignore b/src/backend/parser/.cvsignore
index 84c828f3bf..6545728c5c 100644
--- a/src/backend/parser/.cvsignore
+++ b/src/backend/parser/.cvsignore
@@ -1,3 +1,3 @@
-parse.h
+gram.h
 gram.c
 scan.c
diff --git a/src/backend/parser/Makefile b/src/backend/parser/Makefile
index 9a2d58419d..04b9ed61f4 100644
--- a/src/backend/parser/Makefile
+++ b/src/backend/parser/Makefile
@@ -2,7 +2,7 @@
 #
 # Makefile for parser
 #
-# $PostgreSQL: pgsql/src/backend/parser/Makefile,v 1.46 2008/02/19 10:30:07 petere Exp $
+# $PostgreSQL: pgsql/src/backend/parser/Makefile,v 1.47 2008/08/29 13:02:32 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -32,13 +32,11 @@ gram.o: $(srcdir)/scan.c
 # important, otherwise make will choose the built-in rule for
 # gram.y=>gram.c.
 
-$(srcdir)/gram.c: $(srcdir)/parse.h ;
+$(srcdir)/gram.h: $(srcdir)/gram.c ;
 
-$(srcdir)/parse.h: gram.y
-ifdef YACC
-	$(YACC) -d $(YFLAGS) $<
-	mv -f y.tab.c $(srcdir)/gram.c
-	mv -f y.tab.h $(srcdir)/parse.h
+$(srcdir)/gram.c: gram.y
+ifdef BISON
+	$(BISON) -d $(BISONFLAGS) -o $@ $<
 else
 	@$(missing) bison $< $@
 endif
@@ -53,11 +51,8 @@ endif
 
 
 # Force these dependencies to be known even without dependency info built:
-gram.o keywords.o parser.o: $(srcdir)/parse.h
+gram.o keywords.o parser.o: $(srcdir)/gram.h
 
 
-# gram.c, parse.h, and scan.c are in the distribution tarball, so they
+# gram.c, gram.h, and scan.c are in the distribution tarball, so they
 # are not cleaned here.
-clean: 
-# And the garbage that might have been left behind by partial build:
-	@rm -f y.tab.h y.tab.c y.output lex.yy.c
diff --git a/src/backend/parser/keywords.c b/src/backend/parser/keywords.c
index 97fba9c956..2b7a56bccd 100644
--- a/src/backend/parser/keywords.c
+++ b/src/backend/parser/keywords.c
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.199 2008/07/16 01:30:22 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/parser/keywords.c,v 1.200 2008/08/29 13:02:32 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,7 +22,7 @@
 #include <ctype.h>
 
 /*
- * This macro definition overrides the YYSTYPE union definition in parse.h.
+ * This macro definition overrides the YYSTYPE union definition in gram.h.
  * We don't need that struct in this file, and including the real definition
  * would require sucking in some backend-only include files.
  */
@@ -30,7 +30,7 @@
 
 #include "parser/keywords.h"
 #ifndef ECPG_COMPILE
-#include "parser/parse.h"
+#include "parser/gram.h"
 #else
 #include "preproc.h"
 #endif
diff --git a/src/backend/parser/parser.c b/src/backend/parser/parser.c
index 000f19f4a3..1535318735 100644
--- a/src/backend/parser/parser.c
+++ b/src/backend/parser/parser.c
@@ -14,15 +14,15 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/parser/parser.c,v 1.73 2008/01/01 19:45:51 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/parser/parser.c,v 1.74 2008/08/29 13:02:32 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 #include "postgres.h"
 
-#include "parser/gramparse.h"	/* required before parser/parse.h! */
-#include "parser/parse.h"
+#include "parser/gramparse.h"	/* required before parser/gram.h! */
+#include "parser/gram.h"
 #include "parser/parser.h"
 
 
diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l
index 1608abb4d9..804bfe7127 100644
--- a/src/backend/parser/scan.l
+++ b/src/backend/parser/scan.l
@@ -24,7 +24,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.144 2008/05/09 15:36:31 petere Exp $
+ *	  $PostgreSQL: pgsql/src/backend/parser/scan.l,v 1.145 2008/08/29 13:02:32 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -36,7 +36,7 @@
 #include "parser/gramparse.h"
 #include "parser/keywords.h"
 /* Not needed now that this file is compiled as part of gram.y */
-/* #include "parser/parse.h" */
+/* #include "parser/gram.h" */
 #include "parser/scansup.h"
 #include "mb/pg_wchar.h"
 
diff --git a/src/include/Makefile b/src/include/Makefile
index a37414b699..ad244be32b 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -4,7 +4,7 @@
 #
 # 'make install' installs whole contents of src/include.
 #
-# $PostgreSQL: pgsql/src/include/Makefile,v 1.25 2008/05/14 19:10:29 tgl Exp $
+# $PostgreSQL: pgsql/src/include/Makefile,v 1.26 2008/08/29 13:02:32 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -61,7 +61,7 @@ uninstall:
 
 
 clean:
-	rm -f utils/fmgroids.h parser/parse.h utils/probes.h
+	rm -f utils/fmgroids.h parser/gram.h utils/probes.h
 
 distclean maintainer-clean: clean
 	rm -f pg_config.h dynloader.h pg_config_os.h stamp-h
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 6fb55dc8d8..8deaace574 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1998-2008, PostgreSQL Global Development Group
 #
-# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.135 2008/05/21 19:51:01 meskes Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.136 2008/08/29 13:02:32 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -36,13 +36,11 @@ ecpg: $(OBJS)
 # pgc is compiled as part of preproc
 preproc.o: $(srcdir)/pgc.c
 
-$(srcdir)/preproc.c: $(srcdir)/preproc.h ;
+$(srcdir)/preproc.h: $(srcdir)/preproc.c ;
 
-$(srcdir)/preproc.h: preproc.y
-ifdef YACC
-	$(YACC) -d $(YFLAGS) $<
-	mv -f y.tab.c $(srcdir)/preproc.c
-	mv -f y.tab.h $(srcdir)/preproc.h
+$(srcdir)/preproc.c: preproc.y
+ifdef BISON
+	$(BISON) -d $(BISONFLAGS) -o $@ $<
 else
 	@$(missing) bison $< $@
 endif
@@ -74,10 +72,8 @@ uninstall:
 
 clean distclean:
 	rm -f keywords.c *.o ecpg$(X)
-# garbage from partial builds
-	@rm -f y.tab.c y.tab.h
 # garbage from development
-	@rm -f core a.out *.output *.tab.c
+	@rm -f core a.out
 
 # `make clean' does not remove preproc.c, preproc.h, or pgc.c since we
 # want to ship those files in the distribution for people with
diff --git a/src/pl/plpgsql/src/.cvsignore b/src/pl/plpgsql/src/.cvsignore
index 8625a9b634..e3b861c6fe 100644
--- a/src/pl/plpgsql/src/.cvsignore
+++ b/src/pl/plpgsql/src/.cvsignore
@@ -1,3 +1,3 @@
 pl_gram.c
-pl.tab.h
+pl_gram.h
 pl_scan.c
diff --git a/src/pl/plpgsql/src/Makefile b/src/pl/plpgsql/src/Makefile
index e3c4f7b813..cc2a9fca2d 100644
--- a/src/pl/plpgsql/src/Makefile
+++ b/src/pl/plpgsql/src/Makefile
@@ -2,7 +2,7 @@
 #
 # Makefile for the plpgsql shared object
 #
-# $PostgreSQL: pgsql/src/pl/plpgsql/src/Makefile,v 1.32 2008/04/07 14:15:58 petere Exp $
+# $PostgreSQL: pgsql/src/pl/plpgsql/src/Makefile,v 1.33 2008/08/29 13:02:33 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -33,20 +33,18 @@ uninstall: uninstall-lib
 
 
 # Force these dependencies to be known even without dependency info built:
-pl_gram.o pl_handler.o pl_comp.o pl_exec.o pl_funcs.o: plpgsql.h $(srcdir)/pl.tab.h
+pl_gram.o pl_handler.o pl_comp.o pl_exec.o pl_funcs.o: plpgsql.h $(srcdir)/pl_gram.h
 
 # pl_scan is compiled as part of pl_gram
 pl_gram.o: $(srcdir)/pl_scan.c
 
 # See notes in src/backend/parser/Makefile about the following two rules
 
-$(srcdir)/pl_gram.c: $(srcdir)/pl.tab.h ;
+$(srcdir)/pl_gram.h: $(srcdir)/pl_gram.c ;
 
-$(srcdir)/pl.tab.h: gram.y
-ifdef YACC
-	$(YACC) -d $(YFLAGS) $<
-	mv -f y.tab.c $(srcdir)/pl_gram.c
-	mv -f y.tab.h $(srcdir)/pl.tab.h
+$(srcdir)/pl_gram.c: gram.y
+ifdef BISON
+	$(BISON) -d $(BISONFLAGS) -o $@ $<
 else
 	@$(missing) bison $< $@
 endif
@@ -62,14 +60,12 @@ else
 	@$(missing) flex $< $@
 endif
 
-distprep: $(srcdir)/pl_scan.c $(srcdir)/pl.tab.h $(srcdir)/pl_gram.c
+distprep: $(srcdir)/pl_scan.c $(srcdir)/pl_gram.h $(srcdir)/pl_gram.c
 
-# pl_gram.c, pl.tab.h, and pl_scan.c are in the distribution tarball,
+# pl_gram.c, pl_gram.h, and pl_scan.c are in the distribution tarball,
 # so they are not cleaned here.
 clean distclean: clean-lib
 	rm -f $(OBJS)
-# And the garbage that might have been left behind by partial build:
-	@rm -f y.tab.h y.tab.c y.output lex.yy.c
 
 maintainer-clean: clean
-	rm -f $(srcdir)/pl_gram.c $(srcdir)/pl.tab.h $(srcdir)/pl_scan.c
+	rm -f $(srcdir)/pl_gram.c $(srcdir)/pl_gram.h $(srcdir)/pl_scan.c
diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c
index b7b4eed970..43664459ab 100644
--- a/src/pl/plpgsql/src/pl_comp.c
+++ b/src/pl/plpgsql/src/pl_comp.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.128 2008/07/18 03:32:53 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.129 2008/08/29 13:02:33 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -17,7 +17,7 @@
 
 #include <ctype.h>
 
-#include "pl.tab.h"
+#include "pl_gram.h"
 
 #include "catalog/namespace.h"
 #include "catalog/pg_attrdef.h"
diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c
index 3cc3d1a3b0..4316f3467a 100644
--- a/src/pl/plpgsql/src/pl_exec.c
+++ b/src/pl/plpgsql/src/pl_exec.c
@@ -8,13 +8,12 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.217 2008/08/25 22:42:34 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.218 2008/08/29 13:02:33 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 #include "plpgsql.h"
-#include "pl.tab.h"
 
 #include <ctype.h>
 
diff --git a/src/pl/plpgsql/src/pl_funcs.c b/src/pl/plpgsql/src/pl_funcs.c
index aab349bdb2..de7a54e6f8 100644
--- a/src/pl/plpgsql/src/pl_funcs.c
+++ b/src/pl/plpgsql/src/pl_funcs.c
@@ -8,13 +8,12 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.72 2008/05/15 22:39:49 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.73 2008/08/29 13:02:33 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 #include "plpgsql.h"
-#include "pl.tab.h"
 
 #include <ctype.h>
 
diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c
index 0dfa486fe8..818690501b 100644
--- a/src/pl/plpgsql/src/pl_handler.c
+++ b/src/pl/plpgsql/src/pl_handler.c
@@ -8,13 +8,12 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.39 2008/05/12 00:00:54 alvherre Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.40 2008/08/29 13:02:33 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 #include "plpgsql.h"
-#include "pl.tab.h"
 
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat
index f91cdd2796..8007f116ef 100755
--- a/src/tools/msvc/clean.bat
+++ b/src/tools/msvc/clean.bat
@@ -1,5 +1,5 @@
 @echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/clean.bat,v 1.13 2008/08/18 13:42:49 mha Exp $
+REM $PostgreSQL: pgsql/src/tools/msvc/clean.bat,v 1.14 2008/08/29 13:02:33 petere Exp $
 
 set DIST=0
 if "%1"=="dist" set DIST=1
@@ -18,7 +18,7 @@ if exist src\backend\win32ver.rc del /q src\backend\win32ver.rc
 REM Delete files created with GenerateFiles() in Solution.pm
 if exist src\include\pg_config.h del /q src\include\pg_config.h
 if exist src\include\pg_config_os.h del /q src\include\pg_config_os.h
-if %DIST%==1 if exist src\backend\parser\parse.h del /q src\backend\parser\parse.h
+if %DIST%==1 if exist src\backend\parser\gram.h del /q src\backend\parser\gram.h
 if exist src\include\utils\fmgroids.h del /q src\include\utils\fmgroids.h
 if exist src\include\utils\probes.h del /q src\include\utils\probes.h
 
@@ -31,7 +31,6 @@ if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c
 if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c
 if %DIST%==1 if exist src\backend\bootstrap\bootscanner.c del /q src\backend\bootstrap\bootscanner.c
 if %DIST%==1 if exist src\backend\bootstrap\bootparse.c del /q src\backend\bootstrap\bootparse.c
-if %DIST%==1 if exist src\backend\bootstrap\bootstrap_tokens.h del /q src\backend\bootstrap\bootstrap_tokens.h
 if %DIST%==1 if exist src\backend\utils\misc\guc-file.c del /q src\backend\utils\misc\guc-file.c
 
 
diff --git a/src/tools/msvc/pgbison.bat b/src/tools/msvc/pgbison.bat
index 396bfb5b45..2e0f100f21 100755
--- a/src/tools/msvc/pgbison.bat
+++ b/src/tools/msvc/pgbison.bat
@@ -1,5 +1,5 @@
 @echo off
-REM $PostgreSQL: pgsql/src/tools/msvc/pgbison.bat,v 1.8 2007/12/19 12:29:36 mha Exp $
+REM $PostgreSQL: pgsql/src/tools/msvc/pgbison.bat,v 1.9 2008/08/29 13:02:33 petere Exp $
 
 IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
 perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
@@ -15,8 +15,8 @@ if %BV% GEQ 2.2 goto bisonok
 goto nobison
 :bisonok
 
-if "%1" == "src\backend\parser\gram.y" call :generate %1 src\backend\parser\gram.c src\backend\parser\parse.h
-if "%1" == "src\backend\bootstrap\bootparse.y" call :generate %1 src\backend\bootstrap\bootparse.c src\backend\bootstrap\bootstrap_tokens.h
+if "%1" == "src\backend\parser\gram.y" call :generate %1 src\backend\parser\gram.c src\backend\parser\gram.h
+if "%1" == "src\backend\bootstrap\bootparse.y" call :generate %1 src\backend\bootstrap\bootparse.c
 if "%1" == "src\pl\plpgsql\src\gram.y" call :generate %1 src\pl\plpgsql\src\pl_gram.c src\pl\plpgsql\src\pl.tab.h
 if "%1" == "src\interfaces\ecpg\preproc\preproc.y" call :generate %1 src\interfaces\ecpg\preproc\preproc.c src\interfaces\ecpg\preproc\preproc.h
 if "%1" == "contrib\cube\cubeparse.y" call :generate %1 contrib\cube\cubeparse.c contrib\cube\cubeparse.h
-- 
2.40.0