]> git.saurik.com Git - bison.git/blobdiff - data/lalr1.cc
* configure.ac: Require 2.54.
[bison.git] / data / lalr1.cc
index 4aa3689b02bb8f9ab00f2bf4143f106a8d1bf007..5f1490a52101107fc2f8f6e3a82137bc3921e3df 100644 (file)
@@ -1,5 +1,4 @@
 m4_divert(-1)
-
 # C++ skeleton for Bison
 # Copyright (C) 2002 Free Software Foundation, Inc.
 
@@ -18,24 +17,7 @@ m4_divert(-1)
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 # 02111-1307  USA
 
-
-# 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])])
-
-
-# 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])])
-
+m4_include([c.m4])
 
 # b4_lhs_value([TYPE])
 # --------------------
@@ -51,6 +33,7 @@ m4_define([b4_lhs_value],
 m4_define([b4_rhs_value],
 [semantic_stack_@<:@m4_eval([$1 - $2])@:>@m4_ifval([$3], [.$3])])
 
+m4_define_default([b4_ltype], [Location])
 
 # b4_lhs_location()
 # -----------------
@@ -67,20 +50,6 @@ 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],
@@ -118,37 +87,11 @@ 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.  */])
 
 m4_divert(0)dnl
 #output "b4_output_header_name"
-b4_copyright
+b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison],
+             [2002])
 #ifndef b4_header_guard
 # define b4_header_guard
 
@@ -201,18 +144,6 @@ b4_post_prologue
    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;
@@ -225,8 +156,8 @@ namespace yy
   template < >
   struct Traits< b4_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;
@@ -281,14 +212,16 @@ 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_[[]];
@@ -297,10 +230,10 @@ namespace yy
     /* 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 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.  */
@@ -309,9 +242,7 @@ namespace yy
     /* Constants.  */
     static const int eof_;
     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_;
@@ -351,9 +282,10 @@ namespace yy
 }
 
 #endif /* not b4_header_guard */
-
+dnl
 #output "b4_output_prefix[]b4_output_infix[].cc"
-b4_copyright
+b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison],
+             [2002])
 
 #include "b4_output_header_name"
 
@@ -394,7 +326,7 @@ yy::b4_name::parse ()
 
   /* Try to take a decision without lookahead.  */
   n_ = pact_[[state_]];
-  if (n_ == flag_)
+  if (n_ == pact_ninf_)
     goto yydefault;
 
   /* Read a lookahead token.  */
@@ -433,7 +365,7 @@ yy::b4_name::parse ()
   n_ = table_[[n_]];
   if (n_ < 0)
     {
-      if (n_ == flag_)
+      if (n_ == table_ninf_)
        goto yyerrlab;
       else
        {
@@ -493,7 +425,7 @@ yy::b4_name::parse ()
     {
       YYCDEBUG << "Reducing via rule " << n_ - 1
             << " (line " << rline_[[n_]] << "), ";
-      for (b4_uint_type(b4_prhs_max) i = prhs_[[n_]];
+      for (b4_int_type_for([b4_prhs]) i = prhs_[[n_]];
           rhs_[[i]] >= 0; ++i)
        YYCDEBUG << name_[[rhs_[i]]] << ' ';
       YYCDEBUG << "-> " << name_[[r1_[n_]]] << std::endl;
@@ -550,20 +482,20 @@ yy::b4_name::parse ()
 
 #if YYERROR_VERBOSE
       n_ = pact_[[state_]];
-      if (n_ > flag_ && n_ < last_)
+      if (pact_ninf_ < n_ && n_ < last_)
        {
          message = "parse 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]];
@@ -601,7 +533,7 @@ yy::b4_name::parse ()
   for (;;)
     {
       n_ = pact_[[state_]];
-      if (n_ != flag_)
+      if (n_ != pact_ninf_)
        {
          n_ += terror_;
          if (0 <= n_ && n_ <= last_ && check_[[n_]] == terror_)
@@ -686,7 +618,8 @@ yy::b4_name::lex_ ()
 
 /* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-const short
+const b4_int_type_for([b4_pact]) yy::b4_name::pact_ninf_ = b4_pact_ninf;
+const b4_int_type_for([b4_pact])
 yy::b4_name::pact_[[]] =
 {
   b4_pact
@@ -695,21 +628,21 @@ yy::b4_name::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.  */
-const short
+const b4_int_type_for([b4_defact])
 yy::b4_name::defact_[[]] =
 {
   b4_defact
 };
 
 /* YYPGOTO[[NTERM-NUM]].  */
-const short
+const b4_int_type_for([b4_pgoto])
 yy::b4_name::pgoto_[[]] =
 {
   b4_pgoto
 };
 
 /* YYDEFGOTO[[NTERM-NUM]].  */
-const short
+const b4_int_type_for([b4_defgoto])
 yy::b4_name::defgoto_[[]] =
 {
   b4_defgoto
@@ -718,14 +651,15 @@ yy::b4_name::defgoto_[[]] =
 /* 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
+const b4_int_type_for([b4_table]) yy::b4_name::table_ninf_ = b4_table_ninf;
+const b4_int_type_for([b4_table])
 yy::b4_name::table_[[]] =
 {
   b4_table
 };
 
 /* YYCHECK.  */
-const short
+const b4_int_type_for([b4_check])
 yy::b4_name::check_[[]] =
 {
   b4_check
@@ -734,7 +668,7 @@ yy::b4_name::check_[[]] =
 #if YYDEBUG
 /* STOS_[[STATE-NUM]] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
-const b4_uint_type(b4_stos_max)
+const b4_int_type_for([b4_stos])
 yy::b4_name::stos_[[]] =
 {
   b4_stos
@@ -742,7 +676,7 @@ yy::b4_name::stos_[[]] =
 
 /* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding
    to YYLEX-NUM.  */
-const short
+const b4_int_type_for([b4_toknum])
 yy::b4_name::token_number_[[]] =
 {
   b4_toknum
@@ -750,14 +684,14 @@ yy::b4_name::token_number_[[]] =
 #endif
 
 /* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives.  */
-const b4_uint_type(b4_r1_max)
+const b4_int_type_for([b4_r1])
 yy::b4_name::r1_[[]] =
 {
   b4_r1
 };
 
 /* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN.  */
-const b4_uint_type(b4_r2_max)
+const b4_int_type_for([b4_r2])
 yy::b4_name::r2_[[]] =
 {
   b4_r2
@@ -783,14 +717,14 @@ yy::b4_name::rhs_[[]] =
 
 /* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-const b4_uint_type(b4_prhs_max)
+const b4_int_type_for([b4_prhs])
 yy::b4_name::prhs_[[]] =
 {
   b4_prhs
 };
 
 /* YYRLINE[[YYN]] -- source line where rule number YYN was defined.  */
-const b4_uint_type(b4_rline_max)
+const b4_int_type_for([b4_rline])
 yy::b4_name::rline_[[]] =
 {
   b4_rline
@@ -815,23 +749,21 @@ yy::b4_name::translate_ (int 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::nnts_ = b4_nterms_number;
 const int yy::b4_name::empty_ = -2;
-const int yy::b4_name::final_ = b4_final;
+const int yy::b4_name::final_ = b4_final_state_number;
 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::ntokens_ = b4_tokens_number;
 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;
 
 b4_epilogue
-
+dnl
 #output "stack.hh"
-b4_copyright
+b4_copyright([2002])
 
 #ifndef BISON_STACK_HH
 # define BISON_STACK_HH
@@ -926,9 +858,9 @@ namespace yy
 }
 
 #endif // not BISON_STACK_HH
-
+dnl
 #output "location.hh"
-b4_copyright
+b4_copyright([2002])
 
 #ifndef BISON_LOCATION_HH
 # define BISON_LOCATION_HH