]> git.saurik.com Git - bison.git/commitdiff
Rename "default rule" to "default reduction".
authorJoel E. Denny <jdenny@ces.clemson.edu>
Thu, 23 Apr 2009 07:18:03 +0000 (03:18 -0400)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Thu, 23 Apr 2009 08:29:25 +0000 (04:29 -0400)
This includes changing variable names in code, changing
comments, and renaming %define lr.default_rules to %define
lr.default_reductions.
* NEWS (2.5): Update IELR documentation.
* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c:
Adjust YYDEFACT and yydefact_ documentation.
* doc/bison.texinfo (Decl Summary): Adjust lr.default_reductions
and lr.type documentation.  Make some other wording
improvements.
(Glossary): Adjust cross-references and Default Reduction
definition.
* src/lalr.c (state_lookahead_tokens_count): Adjust code.
Remove a confusing comment pointed out by Akim Demaille.
(initialize_LA): Adjust code.
* src/print-xml.c (print_reductions): Adjust code.
* src/print.c (print_reductions): Adjust code.
* src/reader.c (reader): Adjust code.
* src/tables.c (action_row): Adjust code.
(token_actions): Adjust code.
* src/tables.h: Adjust YYDEFACT documentation.
* tests/input.at (%define lr.default_rules invalid values):
Rename test group to...
(%define lr.default_reductions invalid values): ... this, and
update grammar file and expected output.
* tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): Rename to...
(AT_TEST_LR_DEFAULT_REDUCTIONS): ... this, and update.

17 files changed:
ChangeLog
NEWS
data/glr.c
data/lalr1.cc
data/lalr1.java
data/yacc.c
doc/bison.texinfo
src/lalr.c
src/parse-gram.c
src/parse-gram.h
src/print-xml.c
src/print.c
src/reader.c
src/tables.c
src/tables.h
tests/input.at
tests/reduce.at

index 013cba07fb65fe11ce35db4c64df09edb4ef10d0..741691305bd45a552c723fbe7e687f25bfbd8210 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2009-04-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Rename "default rule" to "default reduction".
+       This includes changing variable names in code, changing
+       comments, and renaming %define lr.default_rules to %define
+       lr.default_reductions.
+       * NEWS (2.5): Update IELR documentation.
+       * data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c:
+       Adjust YYDEFACT and yydefact_ documentation.
+       * doc/bison.texinfo (Decl Summary): Adjust lr.default_reductions
+       and lr.type documentation.  Make some other wording
+       improvements.
+       (Glossary): Adjust cross-references and Default Reduction
+       definition.
+       * src/lalr.c (state_lookahead_tokens_count): Adjust code.
+       Remove a confusing comment pointed out by Akim Demaille.
+       (initialize_LA): Adjust code.
+       * src/print-xml.c (print_reductions): Adjust code.
+       * src/print.c (print_reductions): Adjust code.
+       * src/reader.c (reader): Adjust code.
+       * src/tables.c (action_row): Adjust code.
+       (token_actions): Adjust code.
+       * src/tables.h: Adjust YYDEFACT documentation.
+       * tests/input.at (%define lr.default_rules invalid values):
+       Rename test group to...
+       (%define lr.default_reductions invalid values): ... this, and
+       update grammar file and expected output.
+       * tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): Rename to...
+       (AT_TEST_LR_DEFAULT_REDUCTIONS): ... this, and update.
+
 2009-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Document %define lr.type and lr.default_rules.
diff --git a/NEWS b/NEWS
index 91bde870c15e9469aa880a8cd5ddc03397cf6e17..92a935fb98e5f77293330791cb9307061188769f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -24,10 +24,11 @@ Bison News
     %define lr.type "IELR"
     %define lr.type "canonical LR"
 
-  The default rules optimization in the parser tables can also be
-  adjusted using `%define lr.default_rules'.  See the documentation for
-  `%define lr.type' and `%define lr.default_rules' in the section `Bison
-  Declaration Summary' in the Bison manual for the details.
+  The default reduction optimization in the parser tables can also be
+  adjusted using `%define lr.default_reductions'.  See the documentation
+  for `%define lr.type' and `%define lr.default_reductions' in the
+  section `Bison Declaration Summary' in the Bison manual for the
+  details.
 
   These features are experimental.  More user feedback will help to
   stabilize them.
index 0b4ad52ce90538fae8898400bbea0a0f9187ffe5..661db956bf79f889866ea9480e8b4af2271eb2f4 100644 (file)
@@ -1,8 +1,8 @@
                                                                     -*- C -*-
 
 # GLR skeleton for Bison
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
-# Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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
@@ -150,7 +150,7 @@ m4_changecom()
 m4_divert_push(0)dnl
 @output(b4_parser_file_name@)@
 b4_copyright([Skeleton implementation for Bison GLR parsers in C],
-             [2002, 2003, 2004, 2005, 2006, 2007, 2008])
+             [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009])
 [
 /* C GLR parser skeleton written by Paul Hilfinger.  */
 
@@ -412,9 +412,9 @@ static const ]b4_int_type_for([b4_merger])[ yymerger[] =
   ]b4_merger[
 };
 
-/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
-   doesn't specify something else to do.  Zero means the default is an
-   error.  */
+/* YYDEFACT[S] -- default reduction number in state S.  Performed when
+   YYTABLE doesn't specify something else to do.  Zero means the default
+   is an error.  */
 static const ]b4_int_type_for([b4_defact])[ yydefact[] =
 {
   ]b4_defact[
@@ -2639,7 +2639,7 @@ m4_if(b4_skeleton, ["glr.c"],
 [b4_defines_if(
 [@output(b4_spec_defines_file@)@
 b4_copyright([Skeleton interface for Bison GLR parsers in C],
-             [2002, 2003, 2004, 2005, 2006, 2007, 2008])
+             [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009])
 
 b4_shared_declarations
 
index 603786e574060aa1b95508efe773efefa3bed339..342d87cfd65d900d77fbd4ad4c625da438be3f9f 100644 (file)
@@ -1,6 +1,6 @@
 # C++ skeleton for Bison
 
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
 # Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -35,7 +35,7 @@ m4_divert_push(0)dnl
 b4_defines_if(
 [@output(b4_spec_defines_file@)@
 b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++],
-             [2002, 2003, 2004, 2005, 2006, 2007, 2008])
+             [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009])
 dnl FIXME: This is wrong, we want computed header guards.
 [
 /* C++ LALR(1) parser skeleton written by Akim Demaille.  */
@@ -197,7 +197,7 @@ b4_error_verbose_if([, int tok])[);
     static const ]b4_int_type_for([b4_pact])[ yypact_[];
     static const ]b4_int_type(b4_pact_ninf, b4_pact_ninf)[ yypact_ninf_;
 
-    /// For a state, default rule to reduce.
+    /// For a state, default reduction number.
     /// Unless\a  yytable_ specifies something else to do.
     /// Zero means the default is an error.
     static const ]b4_int_type_for([b4_defact])[ yydefact_[];
@@ -300,7 +300,7 @@ b4_percent_code_get([[provides]])[]dnl
 ])dnl
 @output(b4_parser_file_name@)@
 b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++],
-             [2002, 2003, 2004, 2005, 2006, 2007, 2008])
+             [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009])
 b4_percent_code_get([[top]])[]dnl
 m4_if(b4_prefix, [yy], [],
 [
@@ -889,9 +889,9 @@ b4_error_verbose_if([, int tok])[)
     ]b4_pact[
   };
 
-  /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
-     doesn't specify something else to do.  Zero means the default is an
-     error.  */
+  /* YYDEFACT[S] -- default reduction number in state S.  Performed when
+     YYTABLE doesn't specify something else to do.  Zero means the
+     default is an error.  */
   const ]b4_int_type_for([b4_defact])[
   ]b4_parser_class_name[::yydefact_[] =
   {
@@ -1057,7 +1057,7 @@ b4_error_verbose_if([, int tok])[)
 dnl
 @output(b4_dir_prefix[]stack.hh@)@
 b4_copyright([Stack handling for Bison parsers in C++],
-             [2002, 2003, 2004, 2005, 2006, 2007, 2008])[
+             [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009])[
 
 #ifndef BISON_STACK_HH
 # define BISON_STACK_HH
index c855a75fc9833596eb8971234dca18d6f4bc4f0e..5fbce2b57c1030eb77cfca053ab42ef7d838d926 100644 (file)
@@ -1,6 +1,6 @@
 # Java skeleton for Bison -*- autoconf -*-
 
-# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2008, 2009 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
@@ -25,7 +25,7 @@ m4_ifval(m4_defn([b4_symbol_destructors]),
 m4_divert_push(0)dnl
 @output(b4_parser_file_name@)@
 b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java],
-  [2007, 2008])
+  [2007, 2008, 2009])
 
 b4_percent_define_ifdef([package], [package b4_percent_define_get([package]);
 ])[/* First part of user declarations.  */
@@ -732,9 +732,9 @@ m4_popdef([b4_at_dollar])])dnl
     ]b4_pact[
   };
 
-  /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
-     doesn't specify something else to do.  Zero means the default is an
-     error.  */
+  /* YYDEFACT[S] -- default reduction number in state S.  Performed when
+     YYTABLE doesn't specify something else to do.  Zero means the
+     default is an error.  */
   private static final ]b4_int_type_for([b4_defact])[ yydefact_[] =
   {
     ]b4_defact[
index 940b4a7a6f4e22db38cd1c55c944fc275341b0f4..3c7c602fec666498950eecde9e797c47297ec3f1 100644 (file)
@@ -3,7 +3,7 @@
 # Yacc compatible skeleton for Bison
 
 # Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-# 2007, 2008 Free Software Foundation, Inc.
+# 2007, 2008, 2009 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
@@ -155,7 +155,8 @@ m4_changecom()
 m4_divert_push(0)dnl
 @output(b4_parser_file_name@)@
 b4_copyright([Skeleton implementation for Bison's Yacc-like parsers in C],dnl '
-  [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])[
+  [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+   2009])[
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
@@ -547,8 +548,8 @@ static const ]b4_int_type_for([b4_r2])[ yyr2[] =
   ]b4_r2[
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
 static const ]b4_int_type_for([b4_defact])[ yydefact[] =
 {
@@ -1676,7 +1677,8 @@ yypushreturn:
 b4_defines_if(
 [@output(b4_spec_defines_file@)@
 b4_copyright([Skeleton interface for Bison's Yacc-like parsers in C],dnl '
-  [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])
+  [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+   2009])
 
 b4_percent_code_get([[requires]])[]dnl
 
index ed092e2d1fa631b8a1d8bfbd7eadaa91d3d39d9b..8e3ca224c29067deec47b7b25ae5c8cd29c08cab 100644 (file)
@@ -4899,9 +4899,9 @@ More user feedback will help to stabilize it.)
 @item Default Value: @code{"pull"}
 @end itemize
 
-@item lr.default_rules
-@cindex default rules
-@findex %define lr.default_rules
+@item lr.default_reductions
+@cindex default reductions
+@findex %define lr.default_reductions
 @cindex delayed syntax errors
 @cindex syntax errors delayed
 
@@ -4909,15 +4909,14 @@ More user feedback will help to stabilize it.)
 @item Language(s): all
 
 @item Purpose: Specifies the kind of states that are permitted to
-contain default rules.
-That is, in such a state, Bison declares the rule with the largest
-lookahead set to be the default rule by which to reduce and then removes
-that lookahead set.
-The advantages of default rules are discussed below.
+contain default reductions.
+That is, in such a state, Bison declares the reduction with the largest
+lookahead set to be the default reduction and then removes that
+lookahead set.
+The advantages of default reductions are discussed below.
 The disadvantage is that, when the generated parser encounters a
 syntactically unacceptable token, the parser might then perform
-unnecessary reductions by default rules before it can detect the syntax
-error.
+unnecessary default reductions before it can detect the syntax error.
 
 (This feature is experimental.
 More user feedback will help to stabilize it.)
@@ -4927,14 +4926,14 @@ More user feedback will help to stabilize it.)
 @item @code{"all"}.
 For @acronym{LALR} and @acronym{IELR} parsers (@pxref{Decl
 Summary,,lr.type}) by default, all states are permitted to contain
-default rules.
+default reductions.
 The advantage is that parser table sizes can be significantly reduced.
 The reason Bison does not by default attempt to address the disadvantage
 of delayed syntax error detection is that this disadvantage is already
 inherent in @acronym{LALR} and @acronym{IELR} parser tables.
-That is, unlike a canonical @acronym{LR} state, an @acronym{LALR} or
-@acronym{IELR} state can contain syntactically incorrect tokens in the
-lookahead sets of its rules.
+That is, unlike in a canonical @acronym{LR} state, the lookahead sets of
+reductions in an @acronym{LALR} or @acronym{IELR} state can contain
+tokens that are syntactically incorrect for some left contexts.
 
 @item @code{"consistent"}.
 @cindex consistent states
@@ -4942,16 +4941,17 @@ A consistent state is a state that has only one possible action.
 If that action is a reduction, then the parser does not need to request
 a lookahead token from the scanner before performing that action.
 However, the parser only recognizes the ability to ignore the lookahead
-token when such a reduction is encoded as a default rule.
-Thus, if default rules are permitted in and only in consistent states,
-then a canonical @acronym{LR} parser reports a syntax error as soon as
-it @emph{needs} the syntactically unacceptable token from the scanner.
+token when such a reduction is encoded as a default reduction.
+Thus, if default reductions are permitted in and only in consistent
+states, then a canonical @acronym{LR} parser reports a syntax error as
+soon as it @emph{needs} the syntactically unacceptable token from the
+scanner.
 
 @item @code{"accepting"}.
 @cindex accepting state
-By default, the only default rule permitted in a canonical @acronym{LR}
-parser is the accept rule in the accepting state, which the parser
-reaches only after reading all tokens from the input.
+By default, the only default reduction permitted in a canonical
+@acronym{LR} parser is the accept action in the accepting state, which
+the parser reaches only after reading all tokens from the input.
 Thus, the default canonical @acronym{LR} parser reports a syntax error
 as soon as it @emph{reaches} the syntactically unacceptable token
 without performing any extra reductions.
@@ -5028,8 +5028,8 @@ While Bison generates @acronym{LALR} parser tables by default for
 historical reasons, @acronym{IELR} or canonical @acronym{LR} is almost
 always preferable for deterministic parsers.
 The trouble is that @acronym{LALR} parser tables can suffer from
-mysterious conflicts and may not accept the full set of sentences that
-@acronym{IELR} and canonical @acronym{LR} accept.
+mysterious conflicts and thus may not accept the full set of sentences
+that @acronym{IELR} and canonical @acronym{LR} accept.
 @xref{Mystery Conflicts}, for details.
 However, there are at least two scenarios where @acronym{LALR} may be
 worthwhile:
@@ -5039,8 +5039,8 @@ worthwhile:
 do not resolve any conflicts statically (for example, with @code{%left}
 or @code{%prec}), then the parser explores all potential parses of any
 given input.
-Thus, the use of @acronym{LALR} parser tables is guaranteed not to alter
-the language accepted by the parser.
+In this case, the use of @acronym{LALR} parser tables is guaranteed not
+to alter the language accepted by the parser.
 @acronym{LALR} parser tables are the smallest parser tables Bison can
 currently generate, so they may be preferable.
 
@@ -5069,13 +5069,14 @@ This can significantly reduce the complexity of developing of a grammar.
 @item @code{"canonical LR"}.
 @cindex delayed syntax errors
 @cindex syntax errors delayed
-The only advantage of canonical @acronym{LR} over @acronym{IELR} is that
-every canonical @acronym{LR} state encodes that state's exact set of
-syntactically acceptable tokens.
-The only difference in parsing behavior is then that the canonical
+The only advantage of canonical @acronym{LR} over @acronym{IELR} is
+that, for every left context of every canonical @acronym{LR} state, the
+set of tokens accepted by that state is the exact set of tokens that is
+syntactically acceptable in that left context.
+Thus, the only difference in parsing behavior is that the canonical
 @acronym{LR} parser can report a syntax error as soon as possible
 without performing any unnecessary reductions.
-@xref{Decl Summary,,lr.default_rules}, for further details.
+@xref{Decl Summary,,lr.default_reductions}, for further details.
 Even when canonical @acronym{LR} behavior is ultimately desired,
 @acronym{IELR}'s elimination of duplicate conflicts should still
 facilitate the development of a grammar.
@@ -10341,7 +10342,7 @@ committee document contributing to what became the Algol 60 report.
 
 @item Consistent State
 A state containing only one possible action.
-@xref{Decl Summary,,lr.default_rules}.
+@xref{Decl Summary,,lr.default_reductions}.
 
 @item Context-free grammars
 Grammars specified as rules that can be applied regardless of context.
@@ -10350,12 +10351,13 @@ expression, integers are allowed @emph{anywhere} an expression is
 permitted.  @xref{Language and Grammar, ,Languages and Context-Free
 Grammars}.
 
-@item Default Rule
-The rule by which a parser should reduce if the current parser state
+@item Default Reduction
+The reduction that a parser should perform if the current parser state
 contains no other action for the lookahead token.
-In permitted parser states, Bison declares the rule with the largest
-lookahead set to be the default rule and removes that lookahead set.
-@xref{Decl Summary,,lr.default_rules}.
+In permitted parser states, Bison declares the reduction with the
+largest lookahead set to be the default reduction and removes that
+lookahead set.
+@xref{Decl Summary,,lr.default_reductions}.
 
 @item Dynamic allocation
 Allocation of memory that occurs during execution, rather than at
index 0101149833cad5f3380bd3044f24a609a6c52115..a3a31b23ebd1bebc0cb9537811717f2012ee0794 100644 (file)
@@ -328,7 +328,7 @@ compute_lookahead_tokens (void)
 `----------------------------------------------------*/
 
 static int
-state_lookahead_tokens_count (state *s, bool default_rule_only_for_accept)
+state_lookahead_tokens_count (state *s, bool default_reduction_only_for_accept)
 {
   int n_lookahead_tokens = 0;
   reductions *rp = s->reductions;
@@ -344,14 +344,14 @@ state_lookahead_tokens_count (state *s, bool default_rule_only_for_accept)
   /* We need a lookahead either to distinguish different reductions
      (i.e., there are two or more), or to distinguish a reduction from a
      shift.  Otherwise, it is straightforward, and the state is
-     `consistent'.  However, for states that have any rules, treat only
-     the accepting state as consistent (since there is never a lookahead
-     token that makes sense there, and so no lookahead token should be
-     read) if the user has otherwise disabled default rules.  */
+     `consistent'.  However, treat only the accepting state as
+     consistent (because there is never a lookahead token that makes
+     sense there, and so no lookahead token should be read) if the user
+     has otherwise disabled default reductions.  */
   if (rp->num > 1
       || (rp->num == 1 && sp->num && TRANSITION_IS_SHIFT (sp, 0))
       || (rp->num == 1 && rp->rules[0]->number != 0
-          && default_rule_only_for_accept))
+          && default_reduction_only_for_accept))
     n_lookahead_tokens += rp->num;
   else
     s->consistent = 1;
@@ -369,18 +369,21 @@ initialize_LA (void)
 {
   state_number i;
   bitsetv pLA;
-  bool default_rule_only_for_accept;
+  bool default_reduction_only_for_accept;
   {
-    char *default_rules = muscle_percent_define_get ("lr.default_rules");
-    default_rule_only_for_accept = 0 == strcmp (default_rules, "accepting");
-    free (default_rules);
+    char *default_reductions =
+      muscle_percent_define_get ("lr.default_reductions");
+    default_reduction_only_for_accept =
+      0 == strcmp (default_reductions, "accepting");
+    free (default_reductions);
   }
 
   /* Compute the total number of reductions requiring a lookahead.  */
   nLA = 0;
   for (i = 0; i < nstates; i++)
     nLA +=
-      state_lookahead_tokens_count (states[i], default_rule_only_for_accept);
+      state_lookahead_tokens_count (states[i],
+                                    default_reduction_only_for_accept);
   /* Avoid having to special case 0.  */
   if (!nLA)
     nLA = 1;
@@ -392,7 +395,8 @@ initialize_LA (void)
   for (i = 0; i < nstates; i++)
     {
       int count =
-        state_lookahead_tokens_count (states[i], default_rule_only_for_accept);
+        state_lookahead_tokens_count (states[i],
+                                      default_reduction_only_for_accept);
       if (count)
        {
          states[i]->reductions->lookahead_tokens = pLA;
index 516e4f4baba666f2bdd687f8d547c4cf839e7a71..acae131bf295e850e24b17742c8477f14f31fe2e 100644 (file)
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.4-738cd.  */
+/* A Bison parser, made by GNU Bison 2.4.1.49-783b.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
    
-      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, 2008, 2009 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
@@ -46,7 +45,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.4-738cd"
+#define YYBISON_VERSION "2.4.1.49-783b"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -75,7 +74,7 @@
 
 /* Copy the first part of user declarations.  */
 
-/* Line 189 of yacc.c  */
+/* Line 190 of yacc.c  */
 #line 1 "parse-gram.y"
 /* Bison Grammar Parser                             -*- C -*-
 
@@ -150,8 +149,8 @@ static int current_prec = 0;
 #define YYTYPE_UINT8 uint_fast8_t
 
 
-/* Line 189 of yacc.c  */
-#line 155 "parse-gram.c"
+/* Line 190 of yacc.c  */
+#line 154 "parse-gram.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -299,7 +298,7 @@ static int current_prec = 0;
 typedef union YYSTYPE
 {
 
-/* Line 222 of yacc.c  */
+/* Line 223 of yacc.c  */
 #line 92 "parse-gram.y"
 
   symbol *symbol;
@@ -313,8 +312,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 222 of yacc.c  */
-#line 318 "parse-gram.c"
+/* Line 223 of yacc.c  */
+#line 317 "parse-gram.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -338,8 +337,8 @@ typedef struct YYLTYPE
 /* Copy the second part of user declarations.  */
 
 
-/* Line 264 of yacc.c  */
-#line 343 "parse-gram.c"
+/* Line 265 of yacc.c  */
+#line 342 "parse-gram.c"
 
 #ifdef short
 # undef short
@@ -754,8 +753,8 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     0,     2
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
@@ -1029,147 +1028,147 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
     {
       case 3: /* "\"string\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 180 "parse-gram.y"
        { fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
 
-/* Line 715 of yacc.c  */
-#line 1038 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1037 "parse-gram.c"
        break;
       case 4: /* "\"integer\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 191 "parse-gram.y"
        { fprintf (stderr, "%d", (yyvaluep->integer)); };
 
-/* Line 715 of yacc.c  */
-#line 1047 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1046 "parse-gram.c"
        break;
       case 43: /* "\"{...}\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 182 "parse-gram.y"
        { fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
 
-/* Line 715 of yacc.c  */
-#line 1056 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1055 "parse-gram.c"
        break;
       case 44: /* "\"char\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 174 "parse-gram.y"
        { fputs (char_name ((yyvaluep->character)), stderr); };
 
-/* Line 715 of yacc.c  */
-#line 1065 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1064 "parse-gram.c"
        break;
       case 45: /* "\"epilogue\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 182 "parse-gram.y"
        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
 
-/* Line 715 of yacc.c  */
-#line 1074 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1073 "parse-gram.c"
        break;
       case 47: /* "\"identifier\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 187 "parse-gram.y"
        { fputs ((yyvaluep->uniqstr), stderr); };
 
-/* Line 715 of yacc.c  */
-#line 1083 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1082 "parse-gram.c"
        break;
       case 48: /* "\"identifier:\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 188 "parse-gram.y"
        { fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
 
-/* Line 715 of yacc.c  */
-#line 1092 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1091 "parse-gram.c"
        break;
       case 51: /* "\"%{...%}\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 182 "parse-gram.y"
        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
 
-/* Line 715 of yacc.c  */
-#line 1101 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1100 "parse-gram.c"
        break;
       case 53: /* "\"type\"" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 186 "parse-gram.y"
        { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
 
-/* Line 715 of yacc.c  */
-#line 1110 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1109 "parse-gram.c"
        break;
       case 82: /* "variable" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 187 "parse-gram.y"
        { fputs ((yyvaluep->uniqstr), stderr); };
 
-/* Line 715 of yacc.c  */
-#line 1119 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1118 "parse-gram.c"
        break;
       case 83: /* "content.opt" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 182 "parse-gram.y"
        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
 
-/* Line 715 of yacc.c  */
-#line 1128 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1127 "parse-gram.c"
        break;
       case 84: /* "braceless" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 182 "parse-gram.y"
        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
 
-/* Line 715 of yacc.c  */
-#line 1137 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1136 "parse-gram.c"
        break;
       case 85: /* "id" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 194 "parse-gram.y"
        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
 
-/* Line 715 of yacc.c  */
-#line 1146 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1145 "parse-gram.c"
        break;
       case 86: /* "id_colon" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 195 "parse-gram.y"
        { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
 
-/* Line 715 of yacc.c  */
-#line 1155 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1154 "parse-gram.c"
        break;
       case 87: /* "symbol" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 194 "parse-gram.y"
        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
 
-/* Line 715 of yacc.c  */
-#line 1164 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1163 "parse-gram.c"
        break;
       case 88: /* "string_as_id" */
 
-/* Line 715 of yacc.c  */
+/* Line 716 of yacc.c  */
 #line 194 "parse-gram.y"
        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
 
-/* Line 715 of yacc.c  */
-#line 1173 "parse-gram.c"
+/* Line 716 of yacc.c  */
+#line 1172 "parse-gram.c"
        break;
       default:
        break;
@@ -1688,7 +1687,7 @@ YYLTYPE yylloc;
 
 /* User initialization code.  */
 
-/* Line 1248 of yacc.c  */
+/* Line 1249 of yacc.c  */
 #line 84 "parse-gram.y"
 {
   /* Bison's grammar can initial empty locations, hence a default
@@ -1697,8 +1696,8 @@ YYLTYPE yylloc;
   boundary_set (&yylloc.end, current_file, 1, 1);
 }
 
-/* Line 1248 of yacc.c  */
-#line 1702 "parse-gram.c"
+/* Line 1249 of yacc.c  */
+#line 1701 "parse-gram.c"
   yylsp[0] = yylloc;
 
   goto yysetstate;
@@ -1885,7 +1884,7 @@ yyreduce:
     {
         case 6:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 218 "parse-gram.y"
     {
       code_props plain_code;
@@ -1900,14 +1899,14 @@ yyreduce:
 
   case 7:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 227 "parse-gram.y"
     { debug_flag = true; }
     break;
 
   case 8:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 229 "parse-gram.y"
     {
       muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars));
@@ -1916,14 +1915,14 @@ yyreduce:
 
   case 9:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 232 "parse-gram.y"
     { defines_flag = true; }
     break;
 
   case 10:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 234 "parse-gram.y"
     {
       defines_flag = true;
@@ -1933,42 +1932,42 @@ yyreduce:
 
   case 11:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 238 "parse-gram.y"
     { error_verbose = true; }
     break;
 
   case 12:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 239 "parse-gram.y"
     { expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 13:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 240 "parse-gram.y"
     { expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 14:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 241 "parse-gram.y"
     { spec_file_prefix = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 15:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 242 "parse-gram.y"
     { spec_file_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 16:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 244 "parse-gram.y"
     {
       nondeterministic_parser = true;
@@ -1978,7 +1977,7 @@ yyreduce:
 
   case 17:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 249 "parse-gram.y"
     {
       code_props action;
@@ -1992,80 +1991,77 @@ yyreduce:
 
   case 18:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 257 "parse-gram.y"
     { language_argmatch ((yyvsp[(2) - (2)].chars), grammar_prio, (yylsp[(1) - (2)])); }
-
-/* Line 1457 of yacc.c  */
-#line 2036 "../../../src/parse-gram.c"
     break;
 
   case 19:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 258 "parse-gram.y"
     { add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
     break;
 
   case 20:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 259 "parse-gram.y"
     { locations_flag = true; }
     break;
 
   case 21:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 260 "parse-gram.y"
     { spec_name_prefix = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 22:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 261 "parse-gram.y"
     { spec_name_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 23:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 262 "parse-gram.y"
     { no_lines_flag = true; }
     break;
 
   case 24:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 263 "parse-gram.y"
     { nondeterministic_parser = true; }
     break;
 
   case 25:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 264 "parse-gram.y"
     { spec_outfile = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 26:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 265 "parse-gram.y"
     { spec_outfile = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 27:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 266 "parse-gram.y"
     { add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
     break;
 
   case 28:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 268 "parse-gram.y"
     {
       /* %pure-parser is deprecated in favor of `%define api.pure', so use
@@ -2083,14 +2079,14 @@ yyreduce:
 
   case 29:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 280 "parse-gram.y"
     { version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
     break;
 
   case 30:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 282 "parse-gram.y"
     {
       char const *skeleton_user = (yyvsp[(2) - (2)].chars);
@@ -2119,28 +2115,28 @@ yyreduce:
 
   case 31:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 305 "parse-gram.y"
     { token_table_flag = true; }
     break;
 
   case 32:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 306 "parse-gram.y"
     { report_flag |= report_states; }
     break;
 
   case 33:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 307 "parse-gram.y"
     { yacc_flag = true; }
     break;
 
   case 37:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 315 "parse-gram.y"
     {
       grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
@@ -2149,7 +2145,7 @@ yyreduce:
 
   case 38:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 319 "parse-gram.y"
     {
       symbol_list *list;
@@ -2161,7 +2157,7 @@ yyreduce:
 
   case 39:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 326 "parse-gram.y"
     {
       symbol_list *list;
@@ -2173,7 +2169,7 @@ yyreduce:
 
   case 40:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 333 "parse-gram.y"
     {
       default_prec = true;
@@ -2182,7 +2178,7 @@ yyreduce:
 
   case 41:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 337 "parse-gram.y"
     {
       default_prec = false;
@@ -2191,7 +2187,7 @@ yyreduce:
 
   case 42:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 341 "parse-gram.y"
     {
       /* Do not invoke muscle_percent_code_grow here since it invokes
@@ -2203,7 +2199,7 @@ yyreduce:
 
   case 43:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 348 "parse-gram.y"
     {
       muscle_percent_code_grow ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
@@ -2213,21 +2209,21 @@ yyreduce:
 
   case 44:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 362 "parse-gram.y"
     {}
     break;
 
   case 45:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 363 "parse-gram.y"
     { muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 46:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 368 "parse-gram.y"
     {
       union_seen = true;
@@ -2238,14 +2234,14 @@ yyreduce:
 
   case 47:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 379 "parse-gram.y"
     { current_class = nterm_sym; }
     break;
 
   case 48:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 380 "parse-gram.y"
     {
       current_class = unknown_sym;
@@ -2255,14 +2251,14 @@ yyreduce:
 
   case 49:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 384 "parse-gram.y"
     { current_class = token_sym; }
     break;
 
   case 50:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 385 "parse-gram.y"
     {
       current_class = unknown_sym;
@@ -2272,7 +2268,7 @@ yyreduce:
 
   case 51:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 390 "parse-gram.y"
     {
       symbol_list *list;
@@ -2285,7 +2281,7 @@ yyreduce:
 
   case 52:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 401 "parse-gram.y"
     {
       symbol_list *list;
@@ -2302,126 +2298,126 @@ yyreduce:
 
   case 53:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 415 "parse-gram.y"
     { (yyval.assoc) = left_assoc; }
     break;
 
   case 54:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 416 "parse-gram.y"
     { (yyval.assoc) = right_assoc; }
     break;
 
   case 55:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 417 "parse-gram.y"
     { (yyval.assoc) = non_assoc; }
     break;
 
   case 56:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 421 "parse-gram.y"
     { current_type = NULL; }
     break;
 
   case 57:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 422 "parse-gram.y"
     { current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
     break;
 
   case 58:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 428 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 59:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 430 "parse-gram.y"
     { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
     break;
 
   case 60:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 434 "parse-gram.y"
     { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
     break;
 
   case 61:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 435 "parse-gram.y"
     { (yyval.symbol) = (yyvsp[(1) - (2)].symbol); symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)])); }
     break;
 
   case 62:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 441 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 63:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 443 "parse-gram.y"
     { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
     break;
 
   case 64:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 447 "parse-gram.y"
     { (yyval.list) = (yyvsp[(1) - (1)].list); }
     break;
 
   case 65:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 448 "parse-gram.y"
     { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
     break;
 
   case 66:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 452 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 67:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 453 "parse-gram.y"
     { (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 68:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 454 "parse-gram.y"
     { (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
     break;
 
   case 69:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 455 "parse-gram.y"
     { (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
     break;
 
   case 70:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 461 "parse-gram.y"
     {
        current_type = (yyvsp[(1) - (1)].uniqstr);
@@ -2431,7 +2427,7 @@ yyreduce:
 
   case 71:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 466 "parse-gram.y"
     {
        symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
@@ -2441,7 +2437,7 @@ yyreduce:
 
   case 72:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 471 "parse-gram.y"
     {
       symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
@@ -2452,7 +2448,7 @@ yyreduce:
 
   case 73:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 477 "parse-gram.y"
     {
       symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
@@ -2463,7 +2459,7 @@ yyreduce:
 
   case 74:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 483 "parse-gram.y"
     {
       symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
@@ -2475,7 +2471,7 @@ yyreduce:
 
   case 81:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 513 "parse-gram.y"
     {
       yyerrok;
@@ -2484,77 +2480,77 @@ yyreduce:
 
   case 82:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 519 "parse-gram.y"
     { current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
     break;
 
   case 84:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 523 "parse-gram.y"
     { grammar_current_rule_end ((yylsp[(1) - (1)])); }
     break;
 
   case 85:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 524 "parse-gram.y"
     { grammar_current_rule_end ((yylsp[(3) - (3)])); }
     break;
 
   case 87:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 530 "parse-gram.y"
     { grammar_current_rule_begin (current_lhs, current_lhs_location); }
     break;
 
   case 88:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 532 "parse-gram.y"
     { grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
     break;
 
   case 89:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 534 "parse-gram.y"
     { grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
     break;
 
   case 90:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 536 "parse-gram.y"
     { grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
     break;
 
   case 91:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 538 "parse-gram.y"
     { grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
     break;
 
   case 92:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 540 "parse-gram.y"
     { grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
     break;
 
   case 94:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 550 "parse-gram.y"
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
     break;
 
   case 95:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 556 "parse-gram.y"
     {
       (yyval.chars) = "";
@@ -2563,7 +2559,7 @@ yyreduce:
 
   case 97:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 569 "parse-gram.y"
     {
       code_props plain_code;
@@ -2577,14 +2573,14 @@ yyreduce:
 
   case 98:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 589 "parse-gram.y"
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 99:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 591 "parse-gram.y"
     {
       (yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
@@ -2595,14 +2591,14 @@ yyreduce:
 
   case 100:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 599 "parse-gram.y"
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 103:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 611 "parse-gram.y"
     {
       (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
@@ -2612,7 +2608,7 @@ yyreduce:
 
   case 105:
 
-/* Line 1455 of yacc.c  */
+/* Line 1456 of yacc.c  */
 #line 620 "parse-gram.y"
     {
       code_props plain_code;
@@ -2626,8 +2622,8 @@ yyreduce:
 
 
 
-/* Line 1455 of yacc.c  */
-#line 2628 "parse-gram.c"
+/* Line 1456 of yacc.c  */
+#line 2627 "parse-gram.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2845,7 +2841,7 @@ yyreturn:
 
 
 
-/* Line 1675 of yacc.c  */
+/* Line 1676 of yacc.c  */
 #line 630 "parse-gram.y"
 
 
index 938b2017f6e1d6a6dbdc8bbfde36f5f30959e6b7..ae82cd453c253f5df00bb578fb21e37bb58a662b 100644 (file)
@@ -1,10 +1,9 @@
-
-/* A Bison parser, made by GNU Bison 2.4.4-738cd.  */
+/* A Bison parser, made by GNU Bison 2.4.1.49-783b.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
    
-      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, 2008, 2009 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
 typedef union YYSTYPE
 {
 
-/* Line 1740 of yacc.c  */
+/* Line 1742 of yacc.c  */
 #line 92 "parse-gram.y"
 
   symbol *symbol;
@@ -174,8 +173,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 1740 of yacc.c  */
-#line 179 "parse-gram.h"
+/* Line 1742 of yacc.c  */
+#line 178 "parse-gram.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index cb6707dab1ac6fb6613ee27141be18e38a53dc48..72e61a848b7c7b5a2d1163e65cf516017a8774c1 100644 (file)
@@ -1,6 +1,6 @@
 /* Print an xml on generated parser, for Bison,
 
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -244,7 +244,7 @@ print_reductions (FILE *out, int level, state *s)
 {
   transitions *trans = s->transitions;
   reductions *reds = s->reductions;
-  rule *default_rule = NULL;
+  rule *default_reduction = NULL;
   int report = false;
   int i, j;
 
@@ -254,7 +254,7 @@ print_reductions (FILE *out, int level, state *s)
   }
 
   if (yydefact[s->number] != 0)
-    default_rule = &rules[yydefact[s->number] - 1];
+    default_reduction = &rules[yydefact[s->number] - 1];
 
   bitset_zero (no_reduce_set);
   FOR_EACH_SHIFT (trans, i)
@@ -263,7 +263,7 @@ print_reductions (FILE *out, int level, state *s)
     if (s->errs->symbols[i])
       bitset_set (no_reduce_set, s->errs->symbols[i]->number);
 
-  if (default_rule)
+  if (default_reduction)
     report = true;
 
   if (reds->lookahead_tokens)
@@ -276,7 +276,7 @@ print_reductions (FILE *out, int level, state *s)
            {
              if (! count)
                {
-                 if (reds->rules[j] != default_rule)
+                 if (reds->rules[j] != default_reduction)
                    report = true;
                  count = true;
                }
@@ -307,7 +307,7 @@ print_reductions (FILE *out, int level, state *s)
            {
              if (! count)
                {
-                 if (reds->rules[j] != default_rule)
+                 if (reds->rules[j] != default_reduction)
                    print_reduction (out, level + 1, symbols[i]->tag,
                                     reds->rules[j], true);
                  else
@@ -318,7 +318,7 @@ print_reductions (FILE *out, int level, state *s)
                {
                  if (defaulted)
                    print_reduction (out, level + 1, symbols[i]->tag,
-                                    default_rule, true);
+                                    default_reduction, true);
                  defaulted = false;
                  print_reduction (out, level + 1, symbols[i]->tag,
                                   reds->rules[j], false);
@@ -326,9 +326,9 @@ print_reductions (FILE *out, int level, state *s)
            }
       }
 
-  if (default_rule)
+  if (default_reduction)
     print_reduction (out, level + 1,
-                    "$default", default_rule, true);
+                    "$default", default_reduction, true);
 
   xml_puts (out, level, "</reductions>");
 }
index 413896c29d57d0d63ec56207e636a3d67110d068..7fc577c4e88841e1f7f33ed2ba59ab547b16326a 100644 (file)
@@ -242,7 +242,7 @@ print_reductions (FILE *out, state *s)
 {
   transitions *trans = s->transitions;
   reductions *reds = s->reductions;
-  rule *default_rule = NULL;
+  rule *default_reduction = NULL;
   size_t width = 0;
   int i, j;
   bool non_default_action = false;
@@ -251,7 +251,7 @@ print_reductions (FILE *out, state *s)
     return;
 
   if (yydefact[s->number] != 0)
-    default_rule = &rules[yydefact[s->number] - 1];
+    default_reduction = &rules[yydefact[s->number] - 1];
 
   bitset_zero (no_reduce_set);
   FOR_EACH_SHIFT (trans, i)
@@ -261,7 +261,7 @@ print_reductions (FILE *out, state *s)
       bitset_set (no_reduce_set, s->errs->symbols[i]->number);
 
   /* Compute the width of the lookahead token column.  */
-  if (default_rule)
+  if (default_reduction)
     width = strlen (_("$default"));
 
   if (reds->lookahead_tokens)
@@ -274,7 +274,7 @@ print_reductions (FILE *out, state *s)
            {
              if (! count)
                {
-                 if (reds->rules[j] != default_rule)
+                 if (reds->rules[j] != default_reduction)
                    max_length (&width, symbols[i]->tag);
                  count = true;
                }
@@ -306,7 +306,7 @@ print_reductions (FILE *out, state *s)
            {
              if (! count)
                {
-                 if (reds->rules[j] != default_rule)
+                 if (reds->rules[j] != default_reduction)
                     {
                       non_default_action = true;
                       print_reduction (out, width,
@@ -323,7 +323,7 @@ print_reductions (FILE *out, state *s)
                  if (defaulted)
                    print_reduction (out, width,
                                     symbols[i]->tag,
-                                    default_rule, true);
+                                    default_reduction, true);
                  defaulted = false;
                  print_reduction (out, width,
                                   symbols[i]->tag,
@@ -332,15 +332,16 @@ print_reductions (FILE *out, state *s)
            }
       }
 
-  if (default_rule)
+  if (default_reduction)
     {
-      char *default_rules = muscle_percent_define_get ("lr.default_rules");
-      print_reduction (out, width, _("$default"), default_rule, true);
-      aver (0 == strcmp (default_rules, "all")
-            || (0 == strcmp (default_rules, "consistent")
+      char *default_reductions =
+        muscle_percent_define_get ("lr.default_reductions");
+      print_reduction (out, width, _("$default"), default_reduction, true);
+      aver (0 == strcmp (default_reductions, "all")
+            || (0 == strcmp (default_reductions, "consistent")
                 && !non_default_action)
             || (reds->num == 1 && reds->rules[0]->number == 0));
-      free (default_rules);
+      free (default_reductions);
     }
 }
 
index b2fdc3b6105c4a3f8caa8e24d01ff572f87be73c..17ff0f78de358533f063494d80f4a1f4bc637bce 100644 (file)
@@ -561,9 +561,9 @@ reader (void)
     muscle_percent_define_default ("lr.type", "LALR");
     lr_type = muscle_percent_define_get ("lr.type");
     if (0 != strcmp (lr_type, "canonical LR"))
-      muscle_percent_define_default ("lr.default_rules", "all");
+      muscle_percent_define_default ("lr.default_reductions", "all");
     else
-      muscle_percent_define_default ("lr.default_rules", "accepting");
+      muscle_percent_define_default ("lr.default_reductions", "accepting");
     free (lr_type);
   }
 
@@ -571,7 +571,7 @@ reader (void)
   {
     static char const * const values[] = {
       "lr.type", "LALR", "IELR", "canonical LR", NULL,
-      "lr.default_rules", "all", "consistent", "accepting", NULL,
+      "lr.default_reductions", "all", "consistent", "accepting", NULL,
       NULL
     };
     muscle_percent_define_check_values (values);
index 958e77b1d04e6a8b8c4fd2b83bdc0b8f37823c1f..186c1fec86b57af38a682d11bb5a81b458fe16fd 100644 (file)
@@ -240,7 +240,7 @@ static rule *
 action_row (state *s)
 {
   int i;
-  rule *default_rule = NULL;
+  rule *default_reduction = NULL;
   reductions *reds = s->reductions;
   transitions *trans = s->transitions;
   errs *errp = s->errs;
@@ -304,14 +304,15 @@ action_row (state *s)
       actrow[sym->number] = ACTION_NUMBER_MINIMUM;
     }
 
-  /* Turn off default rules where requested by the user.  See
+  /* Turn off default reductions where requested by the user.  See
      state_lookahead_tokens_count in lalr.c to understand when states are
      labeled as consistent.  */
   {
-    char *default_rules = muscle_percent_define_get ("lr.default_rules");
-    if (0 != strcmp (default_rules, "all") && !s->consistent)
+    char *default_reductions =
+      muscle_percent_define_get ("lr.default_reductions");
+    if (0 != strcmp (default_reductions, "all") && !s->consistent)
       nodefault = true;
-    free (default_rules);
+    free (default_reductions);
   }
 
   /* Now find the most common reduction and make it the default action
@@ -320,7 +321,7 @@ action_row (state *s)
   if (reds->num >= 1 && !nodefault)
     {
       if (s->consistent)
-       default_rule = reds->rules[0];
+       default_reduction = reds->rules[0];
       else
        {
          int max = 0;
@@ -337,7 +338,7 @@ action_row (state *s)
              if (count > max)
                {
                  max = count;
-                 default_rule = r;
+                 default_reduction = r;
                }
            }
 
@@ -351,17 +352,18 @@ action_row (state *s)
            {
              int j;
              for (j = 0; j < ntokens; j++)
-               if (actrow[j] == rule_number_as_item_number (default_rule->number)
+               if (actrow[j]
+                    == rule_number_as_item_number (default_reduction->number)
                    && ! (nondeterministic_parser && conflrow[j]))
                  actrow[j] = 0;
            }
        }
     }
 
-  /* If have no default rule, the default is an error.
+  /* If have no default reduction, the default is an error.
      So replace any action which says "error" with "use default".  */
 
-  if (!default_rule)
+  if (!default_reduction)
     for (i = 0; i < ntokens; i++)
       if (actrow[i] == ACTION_NUMBER_MINIMUM)
        actrow[i] = 0;
@@ -369,7 +371,7 @@ action_row (state *s)
   if (conflicted)
     conflict_row (s);
 
-  return default_rule;
+  return default_reduction;
 }
 
 
@@ -450,8 +452,8 @@ token_actions (void)
 
   for (i = 0; i < nstates; ++i)
     {
-      rule *default_rule = action_row (states[i]);
-      yydefact[i] = default_rule ? default_rule->number + 1 : 0;
+      rule *default_reduction = action_row (states[i]);
+      yydefact[i] = default_reduction ? default_reduction->number + 1 : 0;
       save_row (i);
 
       /* Now that the parser was computed, we can find which rules are
index b0fbe9ac4d79a08e639a4a829b1206b9709ba00a..a44cdb863a1ba4c826f75538007cff62af6cc7a8 100644 (file)
@@ -1,5 +1,5 @@
 /* Prepare the LALR and GLR parser tables.
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -45,9 +45,9 @@
 
    YYSTOS[S] = the symbol number of the symbol that leads to state S.
 
-   YYDEFACT[S] = default rule to reduce with in state s, when YYTABLE
-   doesn't specify something else to do.  Zero means the default is an
-   error.
+   YYDEFACT[S] = default reduction number in state s.  Performed when
+   YYTABLE doesn't specify something else to do.  Zero means the default
+   is an error.
 
    YYDEFGOTO[I] = default state to go to after a reduction of a rule
    that generates variable NTOKENS + I, except when YYTABLE specifies
index 9edf61326486b7520b4df460b7aa9b29b5985730..9fa8af7233907a10e2b3486681f2bab0b68a44ea 100644 (file)
@@ -867,20 +867,20 @@ AT_BISON_CHECK([[Input.y]], [1], [],
 
 AT_CLEANUP
 
-## ----------------------------------------- ##
-## %define lr.default_rules invalid values.  ##
-## ----------------------------------------- ##
+## ---------------------------------------------- ##
+## %define lr.default_reductions invalid values.  ##
+## ---------------------------------------------- ##
 
-AT_SETUP([[%define lr.default_rules invalid values]])
+AT_SETUP([[%define lr.default_reductions invalid values]])
 
 AT_DATA([[input.y]],
-[[%define lr.default_rules "bogus"
+[[%define lr.default_reductions "bogus"
 %%
 start: ;
 ]])
 
 AT_BISON_CHECK([[input.y]], [[1]], [[]],
-[[input.y:1.9-24: invalid value for %define variable `lr.default_rules': `bogus'
+[[input.y:1.9-29: invalid value for %define variable `lr.default_reductions': `bogus'
 ]])
 
 AT_CLEANUP
index 6642f6540751e87c0e8e5cfd74752f9317267c93..a3d1e27cabb3e36f85634b33784077d0e6407db3 100644 (file)
@@ -1442,33 +1442,33 @@ dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
 
 
 
-## -------------------------- ##
-## %define lr.default_rules.  ##
-## -------------------------- ##
+## ------------------------------- ##
+## %define lr.default_reductions.  ##
+## ------------------------------- ##
 
-# AT_TEST_LR_DEFAULT_RULES(GRAMMAR, INPUT, TABLES)
-# ------------------------------------------------
-m4_define([AT_TEST_LR_DEFAULT_RULES],
+# AT_TEST_LR_DEFAULT_REDUCTIONS(GRAMMAR, INPUT, TABLES)
+# -----------------------------------------------------
+m4_define([AT_TEST_LR_DEFAULT_REDUCTIONS],
 [
-AT_TEST_TABLES_AND_PARSE([[no %define lr.default_rules]],
+AT_TEST_TABLES_AND_PARSE([[no %define lr.default_reductions]],
                          [[all]], [[]],
                          [[]],
                          [$1], [$2], [[]], [$3])
-AT_TEST_TABLES_AND_PARSE([[%define lr.default_rules "all"]],
+AT_TEST_TABLES_AND_PARSE([[%define lr.default_reductions "all"]],
                          [[all]], [[]],
-                         [[%define lr.default_rules "all"]],
+                         [[%define lr.default_reductions "all"]],
                          [$1], [$2], [[]], [$3])
-AT_TEST_TABLES_AND_PARSE([[%define lr.default_rules "consistent"]],
+AT_TEST_TABLES_AND_PARSE([[%define lr.default_reductions "consistent"]],
                          [[consistent]], [[]],
-                         [[%define lr.default_rules "consistent"]],
+                         [[%define lr.default_reductions "consistent"]],
                          [$1], [$2], [[]], [$3])
-AT_TEST_TABLES_AND_PARSE([[%define lr.default_rules "accepting"]],
+AT_TEST_TABLES_AND_PARSE([[%define lr.default_reductions "accepting"]],
                          [[accepting]], [[]],
-                         [[%define lr.default_rules "accepting"]],
+                         [[%define lr.default_reductions "accepting"]],
                          [$1], [$2], [[]], [$3])
 ])
 
-AT_TEST_LR_DEFAULT_RULES([[
+AT_TEST_LR_DEFAULT_REDUCTIONS([[
 /* The start state is consistent and has a shift on 'a' and no reductions.
    After pushing the b below, enter an inconsistent state that has a shift and
    one reduction with one lookahead.  */
@@ -1484,7 +1484,7 @@ a: 'a' ;
 
 /* After the previous reduction, enter an inconsistent state that has no shift
    and multiple reductions.  The first reduction has more lookaheads than the
-   second, so the first should always be preferred as the default rule if
+   second, so the first should always be preferred as the default reduction if
    enabled.  The second reduction has one lookahead.  */
 b: ;
 c: ;