X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/42ee26bb96ea939c40c1c922ba404456e718b823..c50befe6152b25faa8d872d3ac97812e1ae85f43:/data/bison.m4?ds=inline

diff --git a/data/bison.m4 b/data/bison.m4
index 8c210e8d..868f98a1 100644
--- a/data/bison.m4
+++ b/data/bison.m4
@@ -1,8 +1,7 @@
                                                             -*- Autoconf -*-
 
 # Language-independent M4 Macros for Bison.
-# Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008 Free Software Foundation,
-# Inc.
+# Copyright (C) 2002, 2004-2010 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
@@ -312,13 +311,13 @@ b4_define_user_code([stype])
 
 
 # b4_check_user_names(WHAT, USER-LIST, BISON-NAMESPACE)
-# --------------------------------------------------------
-# Warn if any name of type WHAT is used by the user (as recorded in USER-LIST)
-# but is not used by Bison (as recorded by macros in the namespace
-# BISON-NAMESPACE).
+# -----------------------------------------------------
+# Complain if any name of type WHAT is used by the user (as recorded in
+# USER-LIST) but is not used by Bison (as recorded by macros in the
+# namespace BISON-NAMESPACE).
 #
-# USER-LIST must expand to a list specifying all grammar occurrences of all
-# names of type WHAT.   Each item in the list must be a triplet specifying one
+# USER-LIST must expand to a list specifying all user occurrences of all names
+# of type WHAT.   Each item in the list must be a triplet specifying one
 # occurrence: name, start boundary, and end boundary.  Empty string names are
 # fine.  An empty list is fine.
 #
@@ -353,9 +352,9 @@ m4_pushdef([b4_user_name], m4_car(b4_occurrence))dnl
 m4_pushdef([b4_start], m4_car(m4_shift(b4_occurrence)))dnl
 m4_pushdef([b4_end], m4_shift(m4_shift(b4_occurrence)))dnl
 m4_ifndef($3[(]m4_quote(b4_user_name)[)],
-          [b4_warn_at([b4_start], [b4_end],
-                      [[%s `%s' is not used]],
-                      [$1], [b4_user_name])])[]dnl
+          [b4_complain_at([b4_start], [b4_end],
+                          [[%s `%s' is not used]],
+                          [$1], [b4_user_name])])[]dnl
 m4_popdef([b4_occurrence])dnl
 m4_popdef([b4_user_name])dnl
 m4_popdef([b4_start])dnl
@@ -364,7 +363,7 @@ m4_popdef([b4_end])dnl
 
 # b4_percent_define_get(VARIABLE)
 # -------------------------------
-# Mimic muscle_percent_define_get in ../src/muscle_tab.h exactly.  That is, if
+# Mimic muscle_percent_define_get in ../src/muscle-tab.h exactly.  That is, if
 # the %define variable VARIABLE is defined, emit its value.  Also, record
 # Bison's usage of VARIABLE by defining
 # b4_percent_define_bison_variables(VARIABLE).
@@ -378,7 +377,7 @@ m4_ifdef([b4_percent_define(]$1[)], [m4_indir([b4_percent_define(]$1[)])])])
 
 # b4_percent_define_get_loc(VARIABLE)
 # -----------------------------------
-# Mimic muscle_percent_define_get_loc in ../src/muscle_tab.h exactly.  That is,
+# Mimic muscle_percent_define_get_loc in ../src/muscle-tab.h exactly.  That is,
 # if the %define variable VARIABLE is undefined, complain fatally since that's
 # a Bison or skeleton error.  Otherwise, return its definition location in a
 # form approriate for the first two arguments of b4_warn_at, b4_complain_at, or
@@ -397,7 +396,7 @@ m4_popdef([b4_loc])],
 
 # b4_percent_define_get_syncline(VARIABLE)
 # ----------------------------------------
-# Mimic muscle_percent_define_get_syncline in ../src/muscle_tab.h exactly.
+# Mimic muscle_percent_define_get_syncline in ../src/muscle-tab.h exactly.
 # That is, if the %define variable VARIABLE is undefined, complain fatally
 # since that's a Bison or skeleton error.  Otherwise, return its definition
 # location as a b4_syncline invocation.  Don't record this as a Bison usage of
@@ -414,7 +413,7 @@ m4_define([b4_percent_define_get_syncline],
 
 # b4_percent_define_ifdef(VARIABLE, IF-TRUE, [IF-FALSE])
 # ------------------------------------------------------
-# Mimic muscle_percent_define_ifdef in ../src/muscle_tab.h exactly.  That is,
+# Mimic muscle_percent_define_ifdef in ../src/muscle-tab.h exactly.  That is,
 # if the %define variable VARIABLE is defined, expand IF-TRUE, else expand
 # IF-FALSE.  Also, record Bison's usage of VARIABLE by defining
 # b4_percent_define_bison_variables(VARIABLE).
@@ -429,7 +428,7 @@ m4_define([b4_percent_define_ifdef],
 
 # b4_percent_define_flag_if(VARIABLE, IF-TRUE, [IF-FALSE])
 # --------------------------------------------------------
-# Mimic muscle_percent_define_flag_if in ../src/muscle_tab.h exactly.  That is,
+# Mimic muscle_percent_define_flag_if in ../src/muscle-tab.h exactly.  That is,
 # if the %define variable VARIABLE is defined to "" or "true", expand IF-TRUE.
 # If it is defined to "false", expand IF-FALSE.  Complain if it is undefined
 # (a Bison or skeleton error since the default value should have been set
@@ -452,7 +451,7 @@ m4_define([b4_percent_define_flag_if],
 
 # b4_percent_define_default(VARIABLE, DEFAULT)
 # --------------------------------------------
-# Mimic muscle_percent_define_default in ../src/muscle_tab.h exactly.  That is,
+# Mimic muscle_percent_define_default in ../src/muscle-tab.h exactly.  That is,
 # if the %define variable VARIABLE is undefined, set its value to DEFAULT.
 # Don't record this as a Bison usage of VARIABLE as there's no reason to
 # suspect that the value has yet influenced the output.
@@ -464,14 +463,13 @@ m4_define([b4_percent_define_default],
 [m4_ifndef([b4_percent_define(]$1[)],
            [m4_define([b4_percent_define(]$1[)], [$2])dnl
             m4_define([b4_percent_define_loc(]$1[)],
-                      [[[[[Bison:b4_percent_define_default]:1.0]], [[[Bison:b4_percent_define_default]:1.0]]]])dnl
-            m4_define([b4_percent_define_syncline(]$1[)],
-                      [[]b4_syncline(1, [["[Bison:b4_percent_define_default]"]])[
-]])])])
+                      [[[[<skeleton default value>:-1.-1]],
+                        [[<skeleton default value>:-1.-1]]]])dnl
+            m4_define([b4_percent_define_syncline(]$1[)], [[]])])])
 
 # b4_percent_define_check_values(VALUES)
 # --------------------------------------
-# Mimic muscle_percent_define_check_values in ../src/muscle_tab.h exactly
+# Mimic muscle_percent_define_check_values in ../src/muscle-tab.h exactly
 # except that the VALUES structure is more appropriate for M4.  That is, VALUES
 # is a list of sublists of strings.  For each sublist, the first string is the
 # name of a %define variable, and all remaining strings in that sublist are the
@@ -500,7 +498,11 @@ m4_define([_b4_percent_define_check_values],
          [b4_complain_at(b4_percent_define_get_loc([$1]),
                          [[invalid value for %%define variable `%s': `%s']],
                          [$1],
-                         m4_dquote(m4_indir([b4_percent_define(]$1[)])))])dnl
+                         m4_dquote(m4_indir([b4_percent_define(]$1[)])))
+          m4_foreach([b4_value], m4_dquote(m4_shift($@)),
+                     [b4_complain_at(b4_percent_define_get_loc([$1]),
+                                     [[accepted value: `%s']],
+                                     m4_dquote(b4_value))])])dnl
    m4_popdef([b4_good_value])],
   [b4_fatal([[undefined %%define variable `%s' passed to b4_percent_define_check_values]], [$1])])])
 
@@ -550,7 +552,7 @@ m4_define([b4_check_user_names_wrap],
                                [b4_percent_]$1[_user_]$2[s],
                                [[b4_percent_]$1[_bison_]$2[s]])])])
 
-m4_wrap([
+m4_wrap_lifo([
 b4_check_user_names_wrap([[define]], [[variable]])
 b4_check_user_names_wrap([[code]], [[qualifier]])
 ])