]> git.saurik.com Git - bison.git/blobdiff - data/lalr1.cc
Quoc Peyrot <chojin@lrde.epita.fr>,
[bison.git] / data / lalr1.cc
index 4aa3689b02bb8f9ab00f2bf4143f106a8d1bf007..a2329e3a04fb2fcd7d715d6214a2075e6caec5f1 100644 (file)
@@ -1,5 +1,4 @@
 m4_divert(-1)
-
 # C++ skeleton for Bison
 # Copyright (C) 2002 Free Software Foundation, Inc.
 
@@ -18,23 +17,21 @@ m4_divert(-1)
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 # 02111-1307  USA
 
+## ---------------- ##
+## Default values.  ##
+## ---------------- ##
 
-# b4_sint_type(MAX)
-# -----------------
-# Return the smallest signed int type able to handle the number MAX.
-m4_define([b4_sint_type],
-[m4_if(m4_eval([$1 <= 127]),        [1], [signed char],
-       m4_eval([$1 <= 32767]),      [1], [signed short],
-       [signed int])])
+# Stack parameters.
+m4_define_default([b4_stack_depth_init],  [200])
+
+# Default Parser class name.
+m4_define_default([b4_parser_class_name], [Parser])
 
 
-# b4_uint_type(MAX)
-# -----------------
-# Return the smallest unsigned int type able to handle the number MAX.
-m4_define([b4_uint_type],
-[m4_if(m4_eval([$1 <= 255]),        [1], [unsigned char],
-       m4_eval([$1 <= 65535]),      [1], [unsigned short],
-       [unsigned int])])
+
+## ----------------- ##
+## Semantic Values.  ##
+## ----------------- ##
 
 
 # b4_lhs_value([TYPE])
@@ -49,8 +46,9 @@ m4_define([b4_lhs_value],
 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
 # symbols on RHS.
 m4_define([b4_rhs_value],
-[semantic_stack_@<:@m4_eval([$1 - $2])@:>@m4_ifval([$3], [.$3])])
+[semantic_stack_@{m4_eval([$1 - $2])@}m4_ifval([$3], [.$3])])
 
+m4_define_default([b4_location_type], [Location])
 
 # b4_lhs_location()
 # -----------------
@@ -64,41 +62,8 @@ m4_define([b4_lhs_location],
 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
 # on RHS.
 m4_define([b4_rhs_location],
-[location_stack_@<:@m4_eval([$1 - $2])@:>@])
-
-
-# b4_token_define(TOKEN-NAME, TOKEN-NUMBER)
-# -----------------------------------------
-# Output the definition of this token as #define.
-m4_define([b4_token_define],
-[#define $1 $2
-])
-
-
-# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
-# -------------------------------------------------------
-# Output the definition of the tokens as #define.
-m4_define([b4_token_defines],
-[m4_map([b4_token_define], [$@])])
-
-m4_define_default([b4_input_suffix], [.y])
-
-m4_define_default([b4_output_parser_suffix],
-[m4_translit(b4_input_suffix, [yY], [cC])])
-
-m4_define_default([b4_output_parser_name],
-[b4_output_prefix[]b4_output_infix[]b4_output_parser_suffix[]])
-
-
-m4_define_default([b4_output_header_suffix],
-[m4_translit(b4_input_suffix, [yY], [hH])])
+[location_stack_@{m4_eval([$1 - $2])@}])
 
-m4_define_default([b4_output_header_name],
-[b4_output_prefix[]b4_output_infix[]b4_output_header_suffix[]])
-
-m4_define_default([b4_header_guard],
-                  [m4_bpatsubst(m4_toupper([BISON_]b4_output_header_name),
-                                [[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]], [_])])
 
 m4_define([b4_inherit],
           [m4_ifdef([b4_root],
@@ -118,39 +83,17 @@ m4_define([b4_constructor],
       ],
                    [])])
 
-m4_define([b4_copyright],
-          [/* -*- C++ -*- */
-/* A Bison parser, made from b4_filename,
-   by GNU bison b4_version.  */
-
-/* Skeleton output parser for bison,
-   Copyright 2002 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
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, 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.  */])
 
+# We do want M4 expansion after # for CPP macros.
+m4_changecom()
 m4_divert(0)dnl
-#output "b4_output_header_name"
-b4_copyright
-#ifndef b4_header_guard
-# define b4_header_guard
+@output @output_header_name@
+b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison],
+             [2002])[
+/* FIXME: This is wrong, we want computed header guards.
+   I don't know why the macros are missing now. :( */
+#ifndef PARSER_HEADER_H
+# define PARSER_HEADER_H
 
 #include "stack.hh"
 #include "location.hh"
@@ -159,63 +102,50 @@ b4_copyright
 #include <iostream>
 
 /* Using locations.  */
-#define YYLSP_NEEDED b4_locations_flag
+#define YYLSP_NEEDED ]b4_locations_flag[
 
-/* Copy the first part of user declarations.  */
-b4_pre_prologue
+]b4_token_defines(b4_tokens)[
 
-/* Line __line__ of __file__.  */
-#line __oline__ "__ofile__"
+/* Copy the first part of user declarations.  */
+]b4_pre_prologue[
 
-/* Tokens.  */
-b4_token_defines(b4_tokens)
+]/* Line __line__ of lalr1.cc.  */
+b4_syncline([@oline@], [@ofile@])[
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
-# define YYDEBUG b4_debug
+# define YYDEBUG ]b4_debug[
 #endif
 
 /* Enabling verbose error message.  */
 #ifndef YYERROR_VERBOSE
-# define YYERROR_VERBOSE b4_error_verbose
+# define YYERROR_VERBOSE ]b4_error_verbose[
 #endif
 
 #ifndef YYSTYPE
-m4_ifdef([b4_stype],
-[#line b4_stype_line "b4_filename"
+]m4_ifdef([b4_stype],
+[b4_syncline([b4_stype_line], [b4_filename])
 typedef union b4_stype yystype;
-/* Line __line__ of __file__.  */
-#line __oline__ "__ofile__"],
-[typedef int yystype;])
+/* Line __line__ of lalr1.cc.  */
+b4_syncline([@oline@], [@ofile@])],
+[typedef int yystype;])[
 # define YYSTYPE yystype
 #endif
 
 /* Copy the second part of user declarations.  */
-b4_post_prologue
+]b4_post_prologue[
 
-/* Line __line__ of __file__.  */
-#line __oline__  "__ofile__"
+]/* Line __line__ of lalr1.cc.  */
+b4_syncline([@oline@], [@ofile@])[
 #ifndef YYLLOC_DEFAULT
 # define YYLLOC_DEFAULT(Current, Rhs, N) \
-   Current.last_line = Rhs[[N]].last_line; \
-   Current.last_column = Rhs[[N]].last_column;
+   Current.last_line = Rhs[N].last_line; \
+   Current.last_column = Rhs[N].last_column;
 #endif
 
-m4_if(b4_locations_flag, [0], [],
-[#ifndef YYLTYPE
-typedef struct yyltype
-{
-  int first_line;
-  int first_column;
-  int last_line;
-  int last_column;
-} yyltype;
-# define YYLTYPE yyltype
-#endif])
-
 namespace yy
 {
-  class b4_name;
+  class ]b4_parser_class_name[;
 
   template < typename P >
   struct Traits
@@ -223,47 +153,47 @@ namespace yy
   };
 
   template < >
-  struct Traits< b4_name >
+  struct Traits< ]b4_parser_class_name[ >
   {
-    typedef b4_uint_type(b4_translate_max) TokenNumberType;
-    typedef b4_sint_type(b4_rhs_max)       RhsNumberType;
+    typedef ]b4_int_type_for([b4_translate])[ TokenNumberType;
+    typedef ]b4_int_type_for([b4_rhs])[       RhsNumberType;
     typedef int      StateType;
     typedef yystype  SemanticType;
-    typedef b4_ltype LocationType;
+    typedef ]b4_location_type[ LocationType;
   };
 }
 
 namespace yy
 {
-  class b4_name b4_inherit
+  class ]b4_parser_class_name b4_inherit[
   {
   public:
 
-    typedef Traits< b4_name >::TokenNumberType TokenNumberType;
-    typedef Traits< b4_name >::RhsNumberType   RhsNumberType;
-    typedef Traits< b4_name >::StateType       StateType;
-    typedef Traits< b4_name >::SemanticType    SemanticType;
-    typedef Traits< b4_name >::LocationType    LocationType;
+    typedef Traits< ]b4_parser_class_name[ >::TokenNumberType TokenNumberType;
+    typedef Traits< ]b4_parser_class_name[ >::RhsNumberType   RhsNumberType;
+    typedef Traits< ]b4_parser_class_name[ >::StateType       StateType;
+    typedef Traits< ]b4_parser_class_name[ >::SemanticType    SemanticType;
+    typedef Traits< ]b4_parser_class_name[ >::LocationType    LocationType;
 
     typedef Stack< StateType >    StateStack;
     typedef Stack< SemanticType > SemanticStack;
     typedef Stack< LocationType > LocationStack;
 
 #if YYLSP_NEEDED
-    b4_name (bool debug,
-           LocationType initlocation[]b4_param) :
-      b4_constructor[]debug_ (debug),
+    ]b4_parser_class_name[ (bool debug,
+           LocationType initlocation][]b4_param[) :
+      ]b4_constructor[][debug_ (debug),
       cdebug_ (std::cerr),
       initlocation_ (initlocation)
 #else
-    b4_name (bool debug[]b4_param) :
-      b4_constructor[]debug_ (debug),
+    ]b4_parser_class_name[ (bool debug][]b4_param[) :
+      ]b4_constructor[][debug_ (debug),
       cdebug_ (std::cerr)
 #endif
     {
     }
 
-    virtual ~b4_name ()
+    virtual ~]b4_parser_class_name[ ()
     {
     }
 
@@ -281,26 +211,28 @@ namespace yy
     LocationStack location_stack_;
 
     /* Tables.  */
-    static const short pact_[[]];
-    static const short defact_[[]];
-    static const short pgoto_[[]];
-    static const short defgoto_[[]];
-    static const short table_[[]];
-    static const short check_[[]];
-    static const b4_uint_type(b4_r1_max) r1_[[]];
-    static const b4_uint_type(b4_r2_max) r2_[[]];
+    static const ]b4_int_type_for([b4_pact])[ pact_[];
+    static const ]b4_int_type_for([b4_pact])[ pact_ninf_;
+    static const ]b4_int_type_for([b4_defact])[ defact_[];
+    static const ]b4_int_type_for([b4_pgoto])[ pgoto_[];
+    static const ]b4_int_type_for([b4_defgoto])[ defgoto_[];
+    static const ]b4_int_type_for([b4_table])[ table_[];
+    static const ]b4_int_type_for([b4_table])[ table_ninf_;
+    static const ]b4_int_type_for([b4_check])[ check_[];
+    static const ]b4_int_type_for([b4_r1])[ r1_[];
+    static const ]b4_int_type_for([b4_r2])[ r2_[];
 
 #if YYDEBUG || YYERROR_VERBOSE
-    static const char* const name_[[]];
+    static const char* const name_[];
 #endif
 
     /* More tables, for debugging.  */
 #if YYDEBUG
-    static const RhsNumberType rhs_[[]];
-    static const b4_uint_type(b4_prhs_max) prhs_[[]];
-    static const b4_uint_type(b4_rline_max) rline_[[]];
-    static const b4_uint_type(b4_stos_max) stos_[[]];
-    static const short token_number_[[]];
+    static const RhsNumberType rhs_[];
+    static const ]b4_int_type_for([b4_prhs])[ prhs_[];
+    static const ]b4_int_type_for([b4_rline])[ rline_[];
+    static const ]b4_int_type_for([b4_stos])[ stos_[];
+    static const ]b4_int_type_for([b4_toknum])[ token_number_[];
 #endif
 
     /* Even more tables.  */
@@ -308,10 +240,9 @@ namespace yy
 
     /* Constants.  */
     static const int eof_;
+    /* LAST_ -- Last index in TABLE_.  */
     static const int last_;
-    static const int flag_;
     static const int nnts_;
-    static const int nsym_;
     static const int empty_;
     static const int final_;
     static const int terror_;
@@ -341,7 +272,7 @@ namespace yy
     SemanticType value;
     LocationType location;
 
-    /* @$ and $$.  */
+    /* @@$ and $$.  */
     SemanticType yyval;
     LocationType yyloc;
 
@@ -350,12 +281,13 @@ namespace yy
   };
 }
 
-#endif /* not b4_header_guard */
+#endif /* ! defined PARSER_HEADER_H */]
+dnl
+@output @output_parser_name@
+b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison],
+             [2002])[
 
-#output "b4_output_prefix[]b4_output_infix[].cc"
-b4_copyright
-
-#include "b4_output_header_name"
+#include @output_header_name@
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -365,12 +297,15 @@ b4_copyright
 #endif /* !YYDEBUG */
 
 int
-yy::b4_name::parse ()
+yy::]b4_parser_class_name[::parse ()
 {
   int nerrs = 0;
   int errstatus = 0;
 
-  /* Initialize stack.  */
+  /* Initialize the stacks.  The initial state will be pushed in
+     yynewstate, since the latter expects the semantical and the
+     location values to have been already stored, initialize these
+     stacks with a primary value.  */
   state_stack_ = StateStack (0);
   semantic_stack_ = SemanticStack (1);
   location_stack_ = LocationStack (1);
@@ -393,8 +328,8 @@ yy::b4_name::parse ()
  yybackup:
 
   /* Try to take a decision without lookahead.  */
-  n_ = pact_[[state_]];
-  if (n_ == flag_)
+  n_ = pact_[state_];
+  if (n_ == pact_ninf_)
     goto yydefault;
 
   /* Read a lookahead token.  */
@@ -418,7 +353,7 @@ yy::b4_name::parse ()
       if (debug_)
        {
          YYCDEBUG << "Next token is " << looka_
-                << " (" << name_[[ilooka_]];
+                << " (" << name_[ilooka_];
          print_ ();
          YYCDEBUG << ')' << std::endl;
        }
@@ -426,14 +361,14 @@ yy::b4_name::parse ()
     }
 
   n_ += ilooka_;
-  if (n_ < 0 || n_ > last_ || check_[[n_]] != ilooka_)
+  if (n_ < 0 || last_ < n_ || check_[n_] != ilooka_)
     goto yydefault;
 
   /* Reduce or error.  */
-  n_ = table_[[n_]];
+  n_ = table_[n_];
   if (n_ < 0)
     {
-      if (n_ == flag_)
+      if (n_ == table_ninf_)
        goto yyerrlab;
       else
        {
@@ -450,7 +385,7 @@ yy::b4_name::parse ()
 
   /* Shift the lookahead token.  */
   YYCDEBUG << "Shifting token " << looka_
-        << " (" << name_[[ilooka_]] << "), ";
+        << " (" << name_[ilooka_] << "), ";
 
   /* Discard the token being shifted unless it is eof.  */
   if (looka_ != eof_)
@@ -469,34 +404,34 @@ yy::b4_name::parse ()
 
   /* Default action.  */
  yydefault:
-  n_ = defact_[[state_]];
+  n_ = defact_[state_];
   if (n_ == 0)
     goto yyerrlab;
   goto yyreduce;
 
   /* Reduce.  */
  yyreduce:
-  len_ = r2_[[n_]];
+  len_ = r2_[n_];
   if (len_)
     {
-      yyval = semantic_stack_[[len_ - 1]];
-      yyloc = location_stack_[[len_ - 1]];
+      yyval = semantic_stack_[len_ - 1];
+      yyloc = location_stack_[len_ - 1];
     }
   else
     {
-      yyval = semantic_stack_[[0]];
-      yyloc = location_stack_[[0]];
+      yyval = semantic_stack_[0];
+      yyloc = location_stack_[0];
     }
 
 #if YYDEBUG
   if (debug_)
     {
       YYCDEBUG << "Reducing via rule " << n_ - 1
-            << " (line " << rline_[[n_]] << "), ";
-      for (b4_uint_type(b4_prhs_max) i = prhs_[[n_]];
-          rhs_[[i]] >= 0; ++i)
-       YYCDEBUG << name_[[rhs_[i]]] << ' ';
-      YYCDEBUG << "-> " << name_[[r1_[n_]]] << std::endl;
+            << " (line " << rline_[n_] << "), ";
+      for (]b4_int_type_for([b4_prhs])[ i = prhs_[n_];
+          0 <= rhs_[i]; ++i)
+       YYCDEBUG << name_[rhs_[i]] << ' ';
+      YYCDEBUG << "-> " << name_[r1_[n_]] << std::endl;
     }
 #endif
 
@@ -508,11 +443,11 @@ yy::b4_name::parse ()
 
   switch (n_)
     {
-      b4_actions
+      ]b4_actions[
     }
 
-/* Line __line__ of __file__.  */
-#line __oline__ "__ofile__"
+]/* Line __line__ of lalr1.cc.  */
+b4_syncline([@oline@], [@ofile@])[
 
   state_stack_.pop (len_);
   semantic_stack_.pop (len_);
@@ -533,12 +468,12 @@ yy::b4_name::parse ()
   location_stack_.push (yyloc);
 
   /* Shift the result of the reduction.  */
-  n_ = r1_[[n_]];
-  state_ = pgoto_[[n_ - ntokens_]] + state_stack_[[0]];
-  if (state_ >= 0 && state_ <= last_ && check_[[state_]] == state_stack_[[0]])
-    state_ = table_[[state_]];
+  n_ = r1_[n_];
+  state_ = pgoto_[n_ - ntokens_] + state_stack_[0];
+  if (0 <= state_ && state_ <= last_ && check_[state_] == state_stack_[0])
+    state_ = table_[state_];
   else
-    state_ = defgoto_[[n_ - ntokens_]];
+    state_ = defgoto_[n_ - ntokens_];
   goto yynewstate;
 
   /* Report and recover from errors.  This is very incomplete.  */
@@ -549,31 +484,31 @@ yy::b4_name::parse ()
       ++nerrs;
 
 #if YYERROR_VERBOSE
-      n_ = pact_[[state_]];
-      if (n_ > flag_ && n_ < last_)
+      n_ = pact_[state_];
+      if (pact_ninf_ < n_ && n_ < last_)
        {
-         message = "parse error, unexpected ";
-         message += name_[[ilooka_]];
+         message = "syntax error, unexpected ";
+         message += name_[ilooka_];
          {
            int count = 0;
            for (int x = (n_ < 0 ? -n_ : 0); x < ntokens_ + nnts_; ++x)
-             if (check_[[x + n_]] == x)
+             if (check_[x + n_] == x && x != terror_)
                ++count;
            if (count < 5)
              {
                count = 0;
                for (int x = (n_ < 0 ? -n_ : 0); x < ntokens_ + nnts_; ++x)
-                 if (check_[[x + n_]] == x)
+                 if (check_[x + n_] == x && x != terror_)
                    {
                      message += (!count++) ? ", expecting " : " or ";
-                     message += name_[[x]];
+                     message += name_[x];
                    }
              }
          }
        }
       else
 #endif
-       message = "parse error";
+       message = "syntax error";
       error_ ();
     }
   goto yyerrlab1;
@@ -589,7 +524,7 @@ yy::b4_name::parse ()
       if (looka_ == eof_)
        goto yyabortlab;
       YYCDEBUG << "Discarding token " << looka_
-            << " (" << name_[[ilooka_]] << ")." << std::endl;
+            << " (" << name_[ilooka_] << ")." << std::endl;
       looka_ = empty_;
     }
 
@@ -600,32 +535,32 @@ yy::b4_name::parse ()
 
   for (;;)
     {
-      n_ = pact_[[state_]];
-      if (n_ != flag_)
+      n_ = pact_[state_];
+      if (n_ != pact_ninf_)
        {
          n_ += terror_;
-         if (0 <= n_ && n_ <= last_ && check_[[n_]] == terror_)
+         if (0 <= n_ && n_ <= last_ && check_[n_] == terror_)
            {
-             n_ = table_[[n_]];
+             n_ = table_[n_];
              if (0 < n_)
                break;
            }
        }
 
       /* Pop the current state because it cannot handle the error token.  */
-      if (!state_stack_.height ())
+      if (state_stack_.height () == 1)
        goto yyabortlab;
 
 #if YYDEBUG
       if (debug_)
        {
-         if (stos_[[state_]] < ntokens_)
+         if (stos_[state_] < ntokens_)
            {
              YYCDEBUG << "Error: popping token "
-                    << token_number_[[stos_[state_]]]
-                    << " (" << name_[[stos_[state_]]];
+                    << token_number_[stos_[state_]]
+                    << " (" << name_[stos_[state_]];
 # ifdef YYPRINT
-             YYPRINT (stderr, token_number_[[stos_[state_]]],
+             YYPRINT (stderr, token_number_[stos_[state_]],
                       semantic_stack_.top ());
 # endif
              YYCDEBUG << ')' << std::endl;
@@ -633,12 +568,12 @@ yy::b4_name::parse ()
          else
            {
              YYCDEBUG << "Error: popping nonterminal ("
-                    << name_[[stos_[state_]]] << ')' << std::endl;
+                    << name_[stos_[state_]] << ')' << std::endl;
            }
        }
 #endif
 
-      state_ = (state_stack_.pop (), state_stack_[[0]]);
+      state_ = (state_stack_.pop (), state_stack_[0]);
       semantic_stack_.pop ();
       location_stack_.pop ();;
 
@@ -675,7 +610,7 @@ yy::b4_name::parse ()
 }
 
 void
-yy::b4_name::lex_ ()
+yy::]b4_parser_class_name[::lex_ ()
 {
 #if YYLSP_NEEDED
   looka_ = yylex (&value, &location);
@@ -684,154 +619,154 @@ yy::b4_name::lex_ ()
 #endif
 }
 
-/* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-const short
-yy::b4_name::pact_[[]] =
+const ]b4_int_type_for([b4_pact]) yy::b4_parser_class_name::pact_ninf_ = b4_pact_ninf[;
+const ]b4_int_type_for([b4_pact])[
+yy::]b4_parser_class_name[::pact_[] =
 {
-  b4_pact
+  ]b4_pact[
 };
 
-/* YYDEFACT[[S]] -- default rule to reduce with in state S when YYTABLE
+/* 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.  */
-const short
-yy::b4_name::defact_[[]] =
+const ]b4_int_type_for([b4_defact])[
+yy::]b4_parser_class_name[::defact_[] =
 {
-  b4_defact
+  ]b4_defact[
 };
 
-/* YYPGOTO[[NTERM-NUM]].  */
-const short
-yy::b4_name::pgoto_[[]] =
+/* YYPGOTO[NTERM-NUM].  */
+const ]b4_int_type_for([b4_pgoto])[
+yy::]b4_parser_class_name[::pgoto_[] =
 {
-  b4_pgoto
+  ]b4_pgoto[
 };
 
-/* YYDEFGOTO[[NTERM-NUM]].  */
-const short
-yy::b4_name::defgoto_[[]] =
+/* YYDEFGOTO[NTERM-NUM].  */
+const ]b4_int_type_for([b4_defgoto])[
+yy::]b4_parser_class_name[::defgoto_[] =
 {
-  b4_defgoto
+  ]b4_defgoto[
 };
 
-/* YYTABLE[[YYPACT[STATE-NUM]]].  What to do in state STATE-NUM.  If
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.  */
-const short
-yy::b4_name::table_[[]] =
+const ]b4_int_type_for([b4_table]) yy::b4_parser_class_name::table_ninf_ = b4_table_ninf[;
+const ]b4_int_type_for([b4_table])[
+yy::]b4_parser_class_name[::table_[] =
 {
-  b4_table
+  ]b4_table[
 };
 
 /* YYCHECK.  */
-const short
-yy::b4_name::check_[[]] =
+const ]b4_int_type_for([b4_check])[
+yy::]b4_parser_class_name[::check_[] =
 {
-  b4_check
+  ]b4_check[
 };
 
 #if YYDEBUG
-/* STOS_[[STATE-NUM]] -- The (internal number of the) accessing
+/* STOS_[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
-const b4_uint_type(b4_stos_max)
-yy::b4_name::stos_[[]] =
+const ]b4_int_type_for([b4_stos])[
+yy::]b4_parser_class_name[::stos_[] =
 {
-  b4_stos
+  ]b4_stos[
 };
 
-/* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding
+/* TOKEN_NUMBER_[YYLEX-NUM] -- Internal token number corresponding
    to YYLEX-NUM.  */
-const short
-yy::b4_name::token_number_[[]] =
+const ]b4_int_type_for([b4_toknum])[
+yy::]b4_parser_class_name[::token_number_[] =
 {
-  b4_toknum
+  ]b4_toknum[
 };
 #endif
 
-/* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives.  */
-const b4_uint_type(b4_r1_max)
-yy::b4_name::r1_[[]] =
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+const ]b4_int_type_for([b4_r1])[
+yy::]b4_parser_class_name[::r1_[] =
 {
-  b4_r1
+  ]b4_r1[
 };
 
-/* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN.  */
-const b4_uint_type(b4_r2_max)
-yy::b4_name::r2_[[]] =
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+const ]b4_int_type_for([b4_r2])[
+yy::]b4_parser_class_name[::r2_[] =
 {
-  b4_r2
+  ]b4_r2[
 };
 
 #if YYDEBUG || YYERROR_VERBOSE
-/* YYTNAME[[SYMBOL-NUM]] -- String name of the symbol SYMBOL-NUM.
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
 const char*
-const yy::b4_name::name_[[]] =
+const yy::]b4_parser_class_name[::name_[] =
 {
-  b4_tname
+  ]b4_tname[
 };
 #endif
 
 #if YYDEBUG
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
-const yy::b4_name::RhsNumberType
-yy::b4_name::rhs_[[]] =
+const yy::]b4_parser_class_name[::RhsNumberType
+yy::]b4_parser_class_name[::rhs_[] =
 {
-  b4_rhs
+  ]b4_rhs[
 };
 
-/* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-const b4_uint_type(b4_prhs_max)
-yy::b4_name::prhs_[[]] =
+const ]b4_int_type_for([b4_prhs])[
+yy::]b4_parser_class_name[::prhs_[] =
 {
-  b4_prhs
+  ]b4_prhs[
 };
 
-/* YYRLINE[[YYN]] -- source line where rule number YYN was defined.  */
-const b4_uint_type(b4_rline_max)
-yy::b4_name::rline_[[]] =
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+const ]b4_int_type_for([b4_rline])[
+yy::]b4_parser_class_name[::rline_[] =
 {
-  b4_rline
+  ]b4_rline[
 };
 #endif
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-yy::b4_name::TokenNumberType
-yy::b4_name::translate_ (int token)
+yy::]b4_parser_class_name[::TokenNumberType
+yy::]b4_parser_class_name[::translate_ (int token)
 {
   static
   const TokenNumberType
-  translate_[[]] =
+  translate_[] =
   {
-    b4_translate
+    ]b4_translate[
   };
   if ((unsigned) token <= user_token_number_max_)
-    return translate_[[token]];
+    return translate_[token];
   else
     return undef_token_;
 }
 
-const int yy::b4_name::eof_ = 0;
-const int yy::b4_name::last_ = b4_last;
-const int yy::b4_name::flag_ = b4_flag;
-const int yy::b4_name::nnts_ = b4_nnts;
-const int yy::b4_name::nsym_ = b4_nsym;
-const int yy::b4_name::empty_ = -2;
-const int yy::b4_name::final_ = b4_final;
-const int yy::b4_name::terror_ = 1;
-const int yy::b4_name::errcode_ = 256;
-const int yy::b4_name::ntokens_ = b4_ntokens;
-const int yy::b4_name::initdepth_ = b4_initdepth;
-
-const unsigned yy::b4_name::user_token_number_max_ = b4_user_token_number_max;
-const yy::b4_name::TokenNumberType yy::b4_name::undef_token_ = b4_undef_token_number;
+const int yy::]b4_parser_class_name[::eof_ = 0;
+const int yy::]b4_parser_class_name[::last_ = ]b4_last[;
+const int yy::]b4_parser_class_name[::nnts_ = ]b4_nterms_number[;
+const int yy::]b4_parser_class_name[::empty_ = -2;
+const int yy::]b4_parser_class_name[::final_ = ]b4_final_state_number[;
+const int yy::]b4_parser_class_name[::terror_ = 1;
+const int yy::]b4_parser_class_name[::errcode_ = 256;
+const int yy::]b4_parser_class_name[::ntokens_ = ]b4_tokens_number[;
+const int yy::]b4_parser_class_name[::initdepth_ = ]b4_stack_depth_init[;
 
-b4_epilogue
+const unsigned yy::]b4_parser_class_name[::user_token_number_max_ = ]b4_user_token_number_max[;
+const yy::]b4_parser_class_name[::TokenNumberType yy::]b4_parser_class_name[::undef_token_ = ]b4_undef_token_number[;
 
-#output "stack.hh"
-b4_copyright
+]b4_epilogue
+dnl
+@output stack.hh
+b4_copyright([2002])[
 
 #ifndef BISON_STACK_HH
 # define BISON_STACK_HH
@@ -858,16 +793,16 @@ namespace yy
 
     inline
     T&
-    operator [[]] (unsigned index)
+    operator [] (unsigned index)
     {
-      return seq_[[index]];
+      return seq_[index];
     }
 
     inline
     const T&
-    operator [[]] (unsigned index) const
+    operator [] (unsigned index) const
     {
-      return seq_[[index]];
+      return seq_[index];
     }
 
     inline
@@ -913,9 +848,9 @@ namespace yy
 
     inline
     const T&
-    operator [[]] (unsigned index) const
+    operator [] (unsigned index) const
     {
-      return stack_[[range_ - index]];
+      return stack_[range_ - index];
     }
 
   private:
@@ -925,10 +860,10 @@ namespace yy
   };
 }
 
-#endif // not BISON_STACK_HH
-
-#output "location.hh"
-b4_copyright
+#endif // not BISON_STACK_HH]
+dnl
+@output location.hh
+b4_copyright([2002])[
 
 #ifndef BISON_LOCATION_HH
 # define BISON_LOCATION_HH
@@ -948,4 +883,4 @@ namespace yy
   };
 }
 
-#endif // not BISON_LOCATION_HH
+#endif // not BISON_LOCATION_HH]