]> git.saurik.com Git - bison.git/blobdiff - src/parse-gram.c
Regenerate.
[bison.git] / src / parse-gram.c
index 1ce884fd7c3d36c8f0eafcca0fc0b2547828cedb..bf9ae912dd09eca5db7dde1e61142f642f013118 100644 (file)
    Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
+/* As a special exception, when this parser skeleton is copied by
+   Bison into a Bison output file, you may use that output file
+   without restriction.  This special exception was added by the Free
+   Software Foundation for C LALR(1) parsers in version 1.24 of
+   Bison.  */
 
-/* Written by Richard Stallman by simplifying the original so called
-   ``semantic'' parser.  */
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+   simplifying the original so-called "semantic" parser.  */
 
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    02110-1301  USA
 */
 
+#include <config.h>
 #include "system.h"
 
 #include "complain.h"
@@ -228,9 +230,8 @@ static void add_param (char const *, char *, location);
 
 static symbol_class current_class = unknown_sym;
 static uniqstr current_type = 0;
-symbol *current_lhs;
-location current_lhs_location;
-assoc current_assoc;
+static symbol *current_lhs;
+static location current_lhs_location;
 static int current_prec = 0;
 
 
@@ -262,8 +263,8 @@ typedef union YYSTYPE {
   assoc assoc;
   uniqstr uniqstr;
 } YYSTYPE;
-/* Line 196 of yacc.c.  */
-#line 267 "parse-gram.c"
+/* Line 197 of yacc.c.  */
+#line 268 "parse-gram.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -286,8 +287,8 @@ typedef struct YYLTYPE
 /* Copy the second part of user declarations.  */
 
 
-/* Line 219 of yacc.c.  */
-#line 291 "parse-gram.c"
+/* Line 220 of yacc.c.  */
+#line 292 "parse-gram.c"
 
 /* Define YYMODERN_C if this compiler supports C89 or better.  If
    __STDC__ is defined, the compiler is modern.  IBM xlc 7.0 when run
@@ -330,7 +331,28 @@ typedef struct YYLTYPE
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
-#define YYUSE(e) do {;} while (/*CONSTCOND*/ 0 && (e))
+#ifndef lint
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+    int i;
+#endif
+{
+  return i;
+}
+#endif
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
@@ -361,7 +383,7 @@ typedef struct YYLTYPE
 
 # ifdef YYSTACK_ALLOC
    /* Pacify GCC's `empty if-body' warning. */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -433,7 +455,7 @@ union yyalloc
          for (yyi = 0; yyi < (Count); yyi++)   \
            (To)[yyi] = (From)[yyi];            \
        }                                       \
-      while (/*CONSTCOND*/ 0)
+      while (YYID (0))
 #  endif
 # endif
 
@@ -451,7 +473,7 @@ union yyalloc
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / sizeof (*yyptr);                          \
       }                                                                        \
-    while (/*CONSTCOND*/ 0)
+    while (YYID (0))
 
 #endif
 
@@ -793,7 +815,7 @@ do                                                          \
       yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;                                                 \
     }                                                          \
-while (/*CONSTCOND*/ 0)
+while (YYID (0))
 
 
 #define YYTERROR       1
@@ -822,7 +844,7 @@ while (/*CONSTCOND*/ 0)
          (Current).first_column = (Current).last_column =              \
            YYRHSLOC (Rhs, 0).last_column;                              \
        }                                                               \
-    while (/*CONSTCOND*/ 0)
+    while (YYID (0))
 #endif
 
 
@@ -862,18 +884,147 @@ while (/*CONSTCOND*/ 0)
 do {                                           \
   if (yydebug)                                 \
     YYFPRINTF Args;                            \
-} while (/*CONSTCOND*/ 0)
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                   \
+do {                                                                     \
+  if (yydebug)                                                           \
+    {                                                                    \
+      YYFPRINTF (stderr, "%s ", Title);                                          \
+      yysymprint (stderr,                                                \
+                  Type, Value, Location); \
+      YYFPRINTF (stderr, "\n");                                                  \
+    }                                                                    \
+} while (YYID (0))
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)         \
-do {                                                           \
-  if (yydebug)                                                 \
-    {                                                          \
-      YYFPRINTF (stderr, "%s ", Title);                                \
-      yysymprint (stderr,                                      \
-                  Type, Value, Location);      \
-      YYFPRINTF (stderr, "\n");                                        \
-    }                                                          \
-} while (/*CONSTCOND*/ 0)
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
+    FILE *yyoutput;
+    int yytype;
+    const YYSTYPE * const yyvaluep;
+    const YYLTYPE * const yylocationp;
+#endif
+{
+  YYUSE (yyvaluep);
+  YYUSE (yylocationp);
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  YY_LOCATION_PRINT (yyoutput, *yylocationp);
+  YYFPRINTF (yyoutput, ": ");
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      case 3: /* "\"string\"" */
+#line 169 "parse-gram.y"
+        { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
+#line 937 "parse-gram.c"
+        break;
+      case 4: /* "\"integer\"" */
+#line 182 "parse-gram.y"
+        { fprintf (stderr, "%d", (yyvaluep->integer)); };
+#line 942 "parse-gram.c"
+        break;
+      case 8: /* "\"%destructor {...}\"" */
+#line 171 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 947 "parse-gram.c"
+        break;
+      case 9: /* "\"%printer {...}\"" */
+#line 175 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 952 "parse-gram.c"
+        break;
+      case 10: /* "\"%union {...}\"" */
+#line 176 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 957 "parse-gram.c"
+        break;
+      case 26: /* "\"%initial-action {...}\"" */
+#line 172 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 962 "parse-gram.c"
+        break;
+      case 27: /* "\"%lex-param {...}\"" */
+#line 173 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 967 "parse-gram.c"
+        break;
+      case 34: /* "\"%parse-param {...}\"" */
+#line 174 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 972 "parse-gram.c"
+        break;
+      case 42: /* "\"type\"" */
+#line 180 "parse-gram.y"
+        { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
+#line 977 "parse-gram.c"
+        break;
+      case 46: /* "\"identifier\"" */
+#line 184 "parse-gram.y"
+        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
+#line 982 "parse-gram.c"
+        break;
+      case 47: /* "\"identifier:\"" */
+#line 186 "parse-gram.y"
+        { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
+#line 987 "parse-gram.c"
+        break;
+      case 49: /* "\"%{...%}\"" */
+#line 178 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 992 "parse-gram.c"
+        break;
+      case 50: /* "\"epilogue\"" */
+#line 178 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 997 "parse-gram.c"
+        break;
+      case 51: /* "\"{...}\"" */
+#line 177 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 1002 "parse-gram.c"
+        break;
+      case 72: /* "symbol" */
+#line 184 "parse-gram.y"
+        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
+#line 1007 "parse-gram.c"
+        break;
+      case 73: /* "action" */
+#line 177 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
+#line 1012 "parse-gram.c"
+        break;
+      case 74: /* "string_as_id" */
+#line 184 "parse-gram.y"
+        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
+#line 1017 "parse-gram.c"
+        break;
+      case 75: /* "string_content" */
+#line 169 "parse-gram.y"
+        { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
+#line 1022 "parse-gram.c"
+        break;
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
 
 /*------------------------------------------------------------------.
 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
@@ -900,7 +1051,7 @@ yy_stack_print (bottom, top)
 do {                                                           \
   if (yydebug)                                                 \
     yy_stack_print ((Bottom), (Top));                          \
-} while (/*CONSTCOND*/ 0)
+} while (YYID (0))
 
 
 /*------------------------------------------------.
@@ -909,28 +1060,37 @@ do {                                                             \
 
 #if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
 static void
-yy_reduce_print (int yyrule)
+yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
 #else
 static void
-yy_reduce_print (yyrule)
+yy_reduce_print (yyvsp, yylsp, yyrule
+                   )
+    YYSTYPE *yyvsp;
+    YYLTYPE *yylsp;
     int yyrule;
 #endif
 {
+  int yynrhs = yyr2[yyrule];
   int yyi;
   unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu)",
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
              yyrule - 1, yylno);
-  /* Print the symbols being reduced, and their result.  */
-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
-    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
-  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      fprintf (stderr, "   $%d = ", yyi + 1);
+      yysymprint (stderr, yyrhs[yyprhs[yyrule] + yyi],
+                  &(yyvsp[(yyi + 1) - (yynrhs)])
+                  , &(yylsp[(yyi + 1) - (yynrhs)])               );
+      fprintf (stderr, "\n");
+    }
 }
 
 # define YY_REDUCE_PRINT(Rule)         \
 do {                                   \
   if (yydebug)                         \
-    yy_reduce_print (Rule);            \
-} while (/*CONSTCOND*/ 0)
+    yy_reduce_print (yyvsp, yylsp, Rule); \
+} while (YYID (0))
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
@@ -976,12 +1136,10 @@ yystrlen (yystr)
      const char *yystr;
 #   endif
 {
-  const char *yys = yystr;
-
-  while (*yys++ != '\0')
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
     continue;
-
-  return yys - yystr - 1;
+  return yylen;
 }
 #  endif
 # endif
@@ -1129,7 +1287,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
               }
             yyarg[yycount++] = yytname[yyx];
             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-            yysize_overflow |= yysize1 < yysize;
+            yysize_overflow |= (yysize1 < yysize);
             yysize = yysize1;
             yyfmt = yystpcpy (yyfmt, yyprefix);
             yyprefix = yyor;
@@ -1137,7 +1295,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
 
       yyf = YY_(yyformat);
       yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= yysize1 < yysize;
+      yysize_overflow |= (yysize1 < yysize);
       yysize = yysize1;
 
       if (yysize_overflow)
@@ -1150,7 +1308,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
              produced a string with the wrong number of "%s"s.  */
           char *yyp = yyresult;
           int yyi = 0;
-          while ((*yyp = *yyf))
+          while ((*yyp = *yyf) != '\0')
             {
               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
                 {
@@ -1170,141 +1328,11 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
 #endif /* YYERROR_VERBOSE */
 \f
 
-#if YYDEBUG
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
-static void
-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
-#else
-static void
-yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE *yyvaluep;
-    YYLTYPE *yylocationp;
-#endif
-{
-  YYUSE (yyvaluep);
-  YYUSE (yylocationp);
-
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-  YY_LOCATION_PRINT (yyoutput, *yylocationp);
-  YYFPRINTF (yyoutput, ": ");
-
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
-  switch (yytype)
-    {
-      case 3: /* "\"string\"" */
-#line 169 "parse-gram.y"
-        { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
-#line 1211 "parse-gram.c"
-        break;
-      case 4: /* "\"integer\"" */
-#line 182 "parse-gram.y"
-        { fprintf (stderr, "%d", (yyvaluep->integer)); };
-#line 1216 "parse-gram.c"
-        break;
-      case 8: /* "\"%destructor {...}\"" */
-#line 171 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1221 "parse-gram.c"
-        break;
-      case 9: /* "\"%printer {...}\"" */
-#line 175 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1226 "parse-gram.c"
-        break;
-      case 10: /* "\"%union {...}\"" */
-#line 176 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1231 "parse-gram.c"
-        break;
-      case 26: /* "\"%initial-action {...}\"" */
-#line 172 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1236 "parse-gram.c"
-        break;
-      case 27: /* "\"%lex-param {...}\"" */
-#line 173 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1241 "parse-gram.c"
-        break;
-      case 34: /* "\"%parse-param {...}\"" */
-#line 174 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1246 "parse-gram.c"
-        break;
-      case 42: /* "\"type\"" */
-#line 180 "parse-gram.y"
-        { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
-#line 1251 "parse-gram.c"
-        break;
-      case 46: /* "\"identifier\"" */
-#line 184 "parse-gram.y"
-        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-#line 1256 "parse-gram.c"
-        break;
-      case 47: /* "\"identifier:\"" */
-#line 186 "parse-gram.y"
-        { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
-#line 1261 "parse-gram.c"
-        break;
-      case 49: /* "\"%{...%}\"" */
-#line 178 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1266 "parse-gram.c"
-        break;
-      case 50: /* "\"epilogue\"" */
-#line 178 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1271 "parse-gram.c"
-        break;
-      case 51: /* "\"{...}\"" */
-#line 177 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1276 "parse-gram.c"
-        break;
-      case 72: /* "symbol" */
-#line 184 "parse-gram.y"
-        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-#line 1281 "parse-gram.c"
-        break;
-      case 73: /* "action" */
-#line 177 "parse-gram.y"
-        { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1286 "parse-gram.c"
-        break;
-      case 74: /* "string_as_id" */
-#line 184 "parse-gram.y"
-        { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-#line 1291 "parse-gram.c"
-        break;
-      case 75: /* "string_content" */
-#line 169 "parse-gram.y"
-        { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
-#line 1296 "parse-gram.c"
-        break;
-      default:
-        break;
-    }
-  YYFPRINTF (yyoutput, ")");
-}
-
-#endif /* ! YYDEBUG */
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
+/*ARGSUSED*/
 #if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
@@ -1470,8 +1498,8 @@ YYLTYPE yylloc;
   yylloc.start.line   = yylloc.end.line   = 1;
   yylloc.start.column = yylloc.end.column = 0;
 }
-/* Line 1066 of yacc.c.  */
-#line 1475 "parse-gram.c"
+/* Line 1088 of yacc.c.  */
+#line 1503 "parse-gram.c"
   yylsp[0] = yylloc;
   goto yysetstate;
 
@@ -1661,7 +1689,7 @@ yyreduce:
     {
         case 6:
 #line 207 "parse-gram.y"
-    { prologue_augment ((yyvsp[0].chars), (yylsp[0])); }
+    { prologue_augment ((yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)])); }
     break;
 
   case 7:
@@ -1671,12 +1699,12 @@ yyreduce:
 
   case 8:
 #line 209 "parse-gram.y"
-    { muscle_insert ((yyvsp[0].chars), "1"); }
+    { muscle_insert ((yyvsp[(2) - (2)].chars), "1"); }
     break;
 
   case 9:
 #line 210 "parse-gram.y"
-    { muscle_insert ((yyvsp[-1].chars), (yyvsp[0].chars)); }
+    { muscle_insert ((yyvsp[(2) - (3)].chars), (yyvsp[(3) - (3)].chars)); }
     break;
 
   case 10:
@@ -1691,17 +1719,17 @@ yyreduce:
 
   case 12:
 #line 213 "parse-gram.y"
-    { expected_sr_conflicts = (yyvsp[0].integer); }
+    { expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 13:
 #line 214 "parse-gram.y"
-    { expected_rr_conflicts = (yyvsp[0].integer); }
+    { expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 14:
 #line 215 "parse-gram.y"
-    { spec_file_prefix = (yyvsp[0].chars); }
+    { spec_file_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 15:
@@ -1715,13 +1743,13 @@ yyreduce:
   case 16:
 #line 222 "parse-gram.y"
     {
-    muscle_code_grow ("initial_action", (yyvsp[0].chars), (yylsp[0]));
+    muscle_code_grow ("initial_action", (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)]));
   }
     break;
 
   case 17:
 #line 225 "parse-gram.y"
-    { add_param ("lex_param", (yyvsp[0].chars), (yylsp[0])); }
+    { add_param ("lex_param", (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)])); }
     break;
 
   case 18:
@@ -1731,7 +1759,7 @@ yyreduce:
 
   case 19:
 #line 227 "parse-gram.y"
-    { spec_name_prefix = (yyvsp[0].chars); }
+    { spec_name_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 20:
@@ -1746,12 +1774,12 @@ yyreduce:
 
   case 22:
 #line 230 "parse-gram.y"
-    { spec_outfile = (yyvsp[0].chars); }
+    { spec_outfile = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 23:
 #line 231 "parse-gram.y"
-    { add_param ("parse_param", (yyvsp[0].chars), (yylsp[0])); }
+    { add_param ("parse_param", (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)])); }
     break;
 
   case 24:
@@ -1761,12 +1789,12 @@ yyreduce:
 
   case 25:
 #line 233 "parse-gram.y"
-    { version_check (&(yylsp[0]), (yyvsp[0].chars)); }
+    { version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
     break;
 
   case 26:
 #line 234 "parse-gram.y"
-    { skeleton = (yyvsp[0].chars); }
+    { skeleton = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 27:
@@ -1787,7 +1815,7 @@ yyreduce:
   case 33:
 #line 245 "parse-gram.y"
     {
-      grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
+      grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
     }
     break;
 
@@ -1795,8 +1823,8 @@ yyreduce:
 #line 249 "parse-gram.y"
     {
       typed = true;
-      MUSCLE_INSERT_INT ("stype_line", (yylsp[0]).start.line);
-      muscle_insert ("stype", (yyvsp[0].chars));
+      MUSCLE_INSERT_INT ("stype_line", (yylsp[(1) - (1)]).start.line);
+      muscle_insert ("stype", (yyvsp[(1) - (1)].chars));
     }
     break;
 
@@ -1804,9 +1832,9 @@ yyreduce:
 #line 255 "parse-gram.y"
     {
       symbol_list *list;
-      for (list = (yyvsp[0].list); list; list = list->next)
-       symbol_destructor_set (list->sym, (yyvsp[-1].chars), (yylsp[-1]));
-      symbol_list_free ((yyvsp[0].list));
+      for (list = (yyvsp[(2) - (2)].list); list; list = list->next)
+       symbol_destructor_set (list->sym, (yyvsp[(1) - (2)].chars), (yylsp[(1) - (2)]));
+      symbol_list_free ((yyvsp[(2) - (2)].list));
     }
     break;
 
@@ -1814,9 +1842,9 @@ yyreduce:
 #line 262 "parse-gram.y"
     {
       symbol_list *list;
-      for (list = (yyvsp[0].list); list; list = list->next)
-       symbol_printer_set (list->sym, (yyvsp[-1].chars), list->location);
-      symbol_list_free ((yyvsp[0].list));
+      for (list = (yyvsp[(2) - (2)].list); list; list = list->next)
+       symbol_printer_set (list->sym, (yyvsp[(1) - (2)].chars), list->location);
+      symbol_list_free ((yyvsp[(2) - (2)].list));
     }
     break;
 
@@ -1864,9 +1892,9 @@ yyreduce:
 #line 290 "parse-gram.y"
     {
       symbol_list *list;
-      for (list = (yyvsp[0].list); list; list = list->next)
-       symbol_type_set (list->sym, (yyvsp[-1].uniqstr), (yylsp[-1]));
-      symbol_list_free ((yyvsp[0].list));
+      for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
+       symbol_type_set (list->sym, (yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]));
+      symbol_list_free ((yyvsp[(3) - (3)].list));
     }
     break;
 
@@ -1875,12 +1903,12 @@ yyreduce:
     {
       symbol_list *list;
       ++current_prec;
-      for (list = (yyvsp[0].list); list; list = list->next)
+      for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
        {
-         symbol_type_set (list->sym, current_type, (yylsp[-1]));
-         symbol_precedence_set (list->sym, current_prec, (yyvsp[-2].assoc), (yylsp[-2]));
+         symbol_type_set (list->sym, current_type, (yylsp[(2) - (3)]));
+         symbol_precedence_set (list->sym, current_prec, (yyvsp[(1) - (3)].assoc), (yylsp[(1) - (3)]));
        }
-      symbol_list_free ((yyvsp[0].list));
+      symbol_list_free ((yyvsp[(3) - (3)].list));
       current_type = NULL;
     }
     break;
@@ -1907,59 +1935,59 @@ yyreduce:
 
   case 49:
 #line 321 "parse-gram.y"
-    { current_type = (yyvsp[0].uniqstr); }
+    { current_type = (yyvsp[(1) - (1)].uniqstr); }
     break;
 
   case 50:
 #line 327 "parse-gram.y"
-    { (yyval.list) = symbol_list_new ((yyvsp[0].symbol), (yylsp[0])); }
+    { (yyval.list) = symbol_list_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 51:
 #line 328 "parse-gram.y"
-    { (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), (yyvsp[0].symbol), (yylsp[0])); }
+    { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
     break;
 
   case 52:
 #line 334 "parse-gram.y"
     {
-       current_type = (yyvsp[0].uniqstr);
+       current_type = (yyvsp[(1) - (1)].uniqstr);
      }
     break;
 
   case 53:
 #line 338 "parse-gram.y"
     {
-       symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]));
-       symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
+       symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]));
+       symbol_type_set ((yyvsp[(1) - (1)].symbol), current_type, (yylsp[(1) - (1)]));
      }
     break;
 
   case 54:
 #line 343 "parse-gram.y"
     {
-      symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
-      symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
-      symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
+      symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]));
+      symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
+      symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)]));
     }
     break;
 
   case 55:
 #line 349 "parse-gram.y"
     {
-      symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
-      symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
-      symbol_make_alias ((yyvsp[-1].symbol), (yyvsp[0].symbol), (yyloc));
+      symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]));
+      symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
+      symbol_make_alias ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].symbol), (yyloc));
     }
     break;
 
   case 56:
 #line 355 "parse-gram.y"
     {
-      symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2]));
-      symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2]));
-      symbol_user_token_number_set ((yyvsp[-2].symbol), (yyvsp[-1].integer), (yylsp[-1]));
-      symbol_make_alias ((yyvsp[-2].symbol), (yyvsp[0].symbol), (yyloc));
+      symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]));
+      symbol_type_set ((yyvsp[(1) - (3)].symbol), current_type, (yylsp[(1) - (3)]));
+      symbol_user_token_number_set ((yyvsp[(1) - (3)].symbol), (yyvsp[(2) - (3)].integer), (yylsp[(2) - (3)]));
+      symbol_make_alias ((yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol), (yyloc));
     }
     break;
 
@@ -1980,17 +2008,17 @@ yyreduce:
 
   case 64:
 #line 395 "parse-gram.y"
-    { current_lhs = (yyvsp[0].symbol); current_lhs_location = (yylsp[0]); }
+    { current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
     break;
 
   case 66:
 #line 399 "parse-gram.y"
-    { grammar_rule_end ((yylsp[0])); }
+    { grammar_rule_end ((yylsp[(1) - (1)])); }
     break;
 
   case 67:
 #line 400 "parse-gram.y"
-    { grammar_rule_end ((yylsp[0])); }
+    { grammar_rule_end ((yylsp[(3) - (3)])); }
     break;
 
   case 69:
@@ -2000,61 +2028,61 @@ yyreduce:
 
   case 70:
 #line 408 "parse-gram.y"
-    { grammar_current_rule_symbol_append ((yyvsp[0].symbol), (yylsp[0])); }
+    { grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
     break;
 
   case 71:
 #line 410 "parse-gram.y"
-    { grammar_current_rule_action_append ((yyvsp[0].chars), (yylsp[0])); }
+    { grammar_current_rule_action_append ((yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)])); }
     break;
 
   case 72:
 #line 412 "parse-gram.y"
-    { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); }
+    { grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
     break;
 
   case 73:
 #line 414 "parse-gram.y"
-    { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); }
+    { grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
     break;
 
   case 74:
 #line 416 "parse-gram.y"
-    { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); }
+    { grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
     break;
 
   case 75:
 #line 420 "parse-gram.y"
-    { (yyval.symbol) = (yyvsp[0].symbol); }
+    { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
     break;
 
   case 76:
 #line 421 "parse-gram.y"
-    { (yyval.symbol) = (yyvsp[0].symbol); }
+    { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
     break;
 
   case 77:
 #line 426 "parse-gram.y"
-    { (yyval.chars) = (yyvsp[0].chars); }
+    { (yyval.chars) = (yyvsp[(1) - (1)].chars); }
     break;
 
   case 78:
 #line 432 "parse-gram.y"
     {
-      (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].chars)), (yylsp[0]));
-      symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]));
+      (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
+      symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]));
     }
     break;
 
   case 79:
 #line 441 "parse-gram.y"
-    { (yyval.chars) = (yyvsp[0].chars); }
+    { (yyval.chars) = (yyvsp[(1) - (1)].chars); }
     break;
 
   case 81:
 #line 448 "parse-gram.y"
     {
-      muscle_code_grow ("epilogue", (yyvsp[0].chars), (yylsp[0]));
+      muscle_code_grow ("epilogue", (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
       scanner_last_string_free ();
     }
     break;
@@ -2062,9 +2090,10 @@ yyreduce:
 
       default: break;
     }
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
-/* Line 1262 of yacc.c.  */
-#line 2068 "parse-gram.c"
+/* Line __line__ of yacc.c.  */
+#line 2097 "parse-gram.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -2150,7 +2179,8 @@ yyerrlab:
         }
       else
        {
-         yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
+         yydestruct ("Error: discarding",
+                      yytoken, &yylval, &yylloc);
          yychar = YYEMPTY;
        }
     }
@@ -2204,7 +2234,8 @@ yyerrlab1:
        YYABORT;
 
       yyerror_range[0] = *yylsp;
-      yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
+      yydestruct ("Error: popping",
+                  yystos[yystate], yyvsp, yylsp);
       YYPOPSTACK;
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);