]> git.saurik.com Git - bison.git/blobdiff - data/lalr1.cc
* data/lalr1.cc (lex_): Rename as...
[bison.git] / data / lalr1.cc
index 817b3833b333d35868508cb33b2624ad8ce4c640..4f60505ae73c2d2fdb0d08d1cb8f83080f395918 100644 (file)
@@ -62,25 +62,6 @@ m4_define([b4_rhs_location],
 [location_stack_@{m4_eval([$1 - $2])@}])
 
 
-m4_define([b4_inherit],
-          [m4_ifdef([b4_root],
-                   [: public b4_root
-],
-                   [])])
-
-m4_define([b4_param],
-         [m4_ifdef([b4_root],
-                   [,
-            const Param& param],
-                   [])])
-
-m4_define([b4_constructor],
-         [m4_ifdef([b4_root],
-                   [b4_root (param),
-      ],
-                   [])])
-
-
 # b4_parse_param_decl
 # -------------------
 # Extra formal arguments of the constructor.
@@ -89,7 +70,7 @@ m4_define([b4_constructor],
 # argument name in the constructor.
 m4_define([b4_parse_param_decl],
 [m4_ifset([b4_parse_param],
-          [m4_map_sep([b4_parse_param_decl_1], [, ], [b4_parse_param])])])
+          [m4_map_sep([b4_parse_param_decl_1], [, ], [b4_parse_param])])])
 
 m4_define([b4_parse_param_decl_1],
 [$1_yyarg])
@@ -222,7 +203,7 @@ namespace yy
 
 namespace yy
 {
-  class ]b4_parser_class_name b4_inherit[
+  class ]b4_parser_class_name[
   {
   public:
 
@@ -236,49 +217,55 @@ namespace yy
     typedef Stack<SemanticType> SemanticStack;
     typedef Stack<LocationType> LocationStack;
 
-    ]b4_parser_class_name[ (bool debug][]b4_param[]b4_parse_param_decl[) :
-      ]b4_constructor[][debug_ (debug),
+    ]b4_parser_class_name[ (]b4_parse_param_decl[) :
+      yydebug_ (false),
       yycdebug_ (&std::cerr)]b4_parse_param_cons[
     {
     }
 
-    ]b4_parser_class_name[ (bool debug,
-           LocationType][]b4_param[]b4_parse_param_decl[) :
-      ]b4_constructor[][debug_ (debug),
-      yycdebug_ (&std::cerr)]b4_parse_param_cons[
-    {
-      *yycdebug_ << __FILE__ << ':' << __LINE__
-                << ": this constructor is provided by backward compatibility"
-                << ", but will be removed in the near future."
-                << std::endl;
-    }
-
     virtual ~]b4_parser_class_name[ ()
     {
     }
 
+    /// Parse.
+    /// \returns  0 iff parsing succeeded.
     virtual int parse ();
 
-    /// Return the current debugging stream.
+    /// The current debugging stream.
     std::ostream& debug_stream () const;
     /// Set the current debugging stream.
     void set_debug_stream (std::ostream &);
 
+    /// Type for debugging levels.
+    typedef int debug_level_type;
+    /// The current debugging level.
+    debug_level_type debug_level () const;
+    /// Set the current debugging level.
+    void set_debug_level (debug_level_type l);
+
   private:
 
-    virtual void lex_ ();
+    /// Call the scanner.
+    virtual void yylex_ ();
     virtual void error_ ();
-    virtual void report_syntax_error_ ();
+    /// Generate an error message, and invoke error. */
+    virtual void yyreport_syntax_error_ ();
 #if YYDEBUG
-    virtual void symprint_ (int yytype,
-                           const SemanticType* yyvaluep,
-                           const LocationType* yylocationp);
+    /// \brief Report a symbol on the debug stream.
+    /// \param yytype       The token type.
+    /// \param yyvaluep     Its semantic value.
+    /// \param yylocationp  Its location.
+    virtual void yysymprint_ (int yytype,
+                             const SemanticType* yyvaluep,
+                             const LocationType* yylocationp);
 #endif /* ! YYDEBUG */
 
 
-    /* Stacks.  */
+    /// The state stack.
     StateStack    state_stack_;
+    /// The semantic value stack.
     SemanticStack semantic_stack_;
+    /// The location stack.
     LocationStack location_stack_;
 
     /* Tables.  */
@@ -304,18 +291,25 @@ namespace yy
     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_toknum])[ token_number_[];
-    virtual void reduce_print_ (int yyrule);
-    virtual void stack_print_ ();
+    virtual void yyreduce_print_ (int yyrule);
+    virtual void yystack_print_ ();
 #endif
 
-    /* Even more tables.  */
-    inline TokenNumberType translate_ (int token);
-    inline void destruct_ (const char* yymsg,
-                           int yytype,
-                           SemanticType* yyvaluep, LocationType* yylocationp);
+    /// Convert a scanner token number to a symbol number.
+    inline TokenNumberType yytranslate_ (int token);
+
+    /// \brief Reclaim the memory associated to a symbol.
+    /// \param yymsg        Why this token is reclaimed.
+    /// \param yytype       The symbol type.
+    /// \param yyvaluep     Its semantic value.
+    /// \param yylocationp  Its location.
+    inline void yydestruct_ (const char* yymsg,
+                             int yytype,
+                             SemanticType* yyvaluep,
+                             LocationType* yylocationp);
 
     /// Pop \a n symbols the three stacks.
-    inline void pop (unsigned int n = 1);
+    inline void yypop_ (unsigned int n = 1);
 
     /* Constants.  */
     static const int eof_;
@@ -340,7 +334,7 @@ namespace yy
     int errstatus_;
 
     /* Debugging.  */
-    int debug_;
+    int yydebug_;
     std::ostream* yycdebug_;
 
     /* Look-ahead and look-ahead in internal form.  */
@@ -373,9 +367,9 @@ b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison],
 
 m4_if(b4_defines_flag, 0, [], [#include @output_header_name@])[
 
-/* A pseudo ostream that takes debug_ into account. */
+/* A pseudo ostream that takes yydebug_ into account. */
 # define YYCDEBUG                                                      \
-  for (bool yydebugcond_ = debug_; yydebugcond_; yydebugcond_ = false) \
+  for (bool yydebugcond_ = yydebug_; yydebugcond_; yydebugcond_ = false)       \
     (*yycdebug_)
 
 /* Enable debugging if requested.  */
@@ -383,24 +377,24 @@ m4_if(b4_defines_flag, 0, [], [#include @output_header_name@])[
 
 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
 do {                                                   \
-  if (debug_)                                          \
+  if (yydebug_)                                                \
     {                                                  \
       *yycdebug_ << (Title) << ' ';                    \
-      symprint_ ((Type), (Value), (Location));         \
+      yysymprint_ ((Type), (Value), (Location));       \
       *yycdebug_ << std::endl;                         \
     }                                                  \
 } while (0)
 
 # define YY_REDUCE_PRINT(Rule)         \
 do {                                   \
-  if (debug_)                          \
-    reduce_print_ (Rule);              \
+  if (yydebug_)                                \
+    yyreduce_print_ (Rule);            \
 } while (0)
 
 # define YY_STACK_PRINT()              \
 do {                                   \
-  if (debug_)                          \
-    stack_print_ ();                   \
+  if (yydebug_)                                \
+    yystack_print_ ();                 \
 } while (0)
 
 #else /* !YYDEBUG */
@@ -421,7 +415,7 @@ do {                                        \
 `--------------------------------*/
 
 void
-yy::]b4_parser_class_name[::symprint_ (int yytype,
+yy::]b4_parser_class_name[::yysymprint_ (int yytype,
                          const SemanticType* yyvaluep, const LocationType* yylocationp)
 {
   /* Pacify ``unused variable'' warnings.  */
@@ -445,7 +439,7 @@ yy::]b4_parser_class_name[::symprint_ (int yytype,
 #endif /* ! YYDEBUG */
 
 void
-yy::]b4_parser_class_name[::destruct_ (const char* yymsg,
+yy::]b4_parser_class_name[::yydestruct_ (const char* yymsg,
                          int yytype, SemanticType* yyvaluep, LocationType* yylocationp)
 {
   /* Pacify ``unused variable'' warnings.  */
@@ -463,7 +457,7 @@ yy::]b4_parser_class_name[::destruct_ (const char* yymsg,
 }
 
 void
-yy::]b4_parser_class_name[::pop (unsigned int n)
+yy::]b4_parser_class_name[::yypop_ (unsigned int n)
 {
   state_stack_.pop (n);
   semantic_stack_.pop (n);
@@ -483,6 +477,19 @@ yy::]b4_parser_class_name[::set_debug_stream (std::ostream& o)
 }
 
 
+yy::]b4_parser_class_name[::debug_level_type
+yy::]b4_parser_class_name[::debug_level () const
+{
+  return yydebug_;
+}
+
+void
+yy::]b4_parser_class_name[::set_debug_level (debug_level_type l)
+{
+  yydebug_ = l;
+}
+
+
 int
 yy::]b4_parser_class_name[::parse ()
 {
@@ -531,10 +538,7 @@ yybackup:
 
   /* Read a look-ahead token.  */
   if (looka_ == empty_)
-    {
-      YYCDEBUG << "Reading a token: ";
-      lex_ ();
-    }
+    yylex_ ();
 
   /* Convert token to internal form.  */
   if (looka_ <= eof_)
@@ -544,7 +548,7 @@ yybackup:
     }
   else
     {
-      ilooka_ = translate_ (looka_);
+      ilooka_ = yytranslate_ (looka_);
       YY_SYMBOL_PRINT ("Next token is", ilooka_, &value, &location);
     }
 
@@ -629,7 +633,7 @@ yyreduce:
 ]/* Line __line__ of lalr1.cc.  */
 b4_syncline([@oline@], [@ofile@])[
 
-  pop (len_);
+  yypop_ (len_);
 
   YY_STACK_PRINT ();
 
@@ -650,7 +654,7 @@ b4_syncline([@oline@], [@ofile@])[
 `------------------------------------*/
 yyerrlab:
   /* If not already recovering from an error, report this error.  */
-  report_syntax_error_ ();
+  yyreport_syntax_error_ ();
 
   error_range_[0] = location;
   if (errstatus_ == 3)
@@ -667,18 +671,18 @@ yyerrlab:
             for (;;)
               {
                  error_range_[0] = location_stack_[0];
-                 pop ();
+                 yypop_ ();
                 if (state_stack_.height () == 1)
                   YYABORT;
-                 destruct_ ("Error: popping",
-                            stos_[state_stack_[0]],
-                            &semantic_stack_[0],
-                            &location_stack_[0]);
+                 yydestruct_ ("Error: popping",
+                              stos_[state_stack_[0]],
+                              &semantic_stack_[0],
+                              &location_stack_[0]);
               }
         }
       else
         {
-          destruct_ ("Error: discarding", ilooka_, &value, &location);
+          yydestruct_ ("Error: discarding", ilooka_, &value, &location);
           looka_ = empty_;
         }
     }
@@ -701,7 +705,7 @@ yyerrorlab:
 #endif
 
   error_range_[0] = location_stack_[len_ - 1];
-  pop (len_);
+  yypop_ (len_);
   state_ = state_stack_[0];
   goto yyerrlab1;
 
@@ -730,9 +734,9 @@ yyerrlab1:
        YYABORT;
 
       error_range_[0] = location_stack_[0];
-      destruct_ ("Error: popping",
-                 stos_[state_], &semantic_stack_[0], &location_stack_[0]);
-      pop ();
+      yydestruct_ ("Error: popping",
+                   stos_[state_], &semantic_stack_[0], &location_stack_[0]);
+      yypop_ ();
       state_ = state_stack_[0];
       YY_STACK_PRINT ();
     }
@@ -761,24 +765,25 @@ yyacceptlab:
   /* Abort.  */
 yyabortlab:
   /* Free the lookahead. */
-  destruct_ ("Error: discarding lookahead", ilooka_, &value, &location);
+  yydestruct_ ("Error: discarding lookahead", ilooka_, &value, &location);
   looka_ = empty_;
   return 1;
 }
 
 void
-yy::]b4_parser_class_name[::lex_ ()
+yy::]b4_parser_class_name[::yylex_ ()
 {
+  YYCDEBUG << "Reading a token: ";
 #if YYLSP_NEEDED
-  looka_ = yylex (&value, &location);
+  looka_ = ]m4_default(b4_prefix, [yy])[lex (&value, &location);
 #else
-  looka_ = yylex (&value);
+  looka_ = ]m4_default(b4_prefix, [yy])[lex (&value);
 #endif
 }
 
-/** Generate an error message, and invoke yyerror. */
+// Generate an error message, and invoke error.
 void
-yy::]b4_parser_class_name[::report_syntax_error_ ()
+yy::]b4_parser_class_name[::yyreport_syntax_error_ ()
 {
   /* If not already recovering from an error, report this error.  */
   if (!errstatus_)
@@ -930,10 +935,9 @@ yy::]b4_parser_class_name[::rline_[] =
   ]b4_rline[
 };
 
-/** Print the state stack from its BOTTOM up to its TOP (included).  */
-
+/// Print the state stack on the debug stream.
 void
-yy::]b4_parser_class_name[::stack_print_ ()
+yy::]b4_parser_class_name[::yystack_print_ ()
 {
   *yycdebug_ << "Stack now";
   for (StateStack::const_iterator i = state_stack_.begin ();
@@ -942,10 +946,9 @@ yy::]b4_parser_class_name[::stack_print_ ()
   *yycdebug_ << std::endl;
 }
 
-/** Report that the YYRULE is going to be reduced.  */
-
+/// Report on the debug stream that the rule \a yyrule is going to be reduced.
 void
-yy::]b4_parser_class_name[::reduce_print_ (int yyrule)
+yy::]b4_parser_class_name[::yyreduce_print_ (int yyrule)
 {
   unsigned int yylno = rline_[yyrule];
   /* Print the symbols being reduced, and their result.  */
@@ -960,7 +963,7 @@ yy::]b4_parser_class_name[::reduce_print_ (int yyrule)
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 yy::]b4_parser_class_name[::TokenNumberType
-yy::]b4_parser_class_name[::translate_ (int token)
+yy::]b4_parser_class_name[::yytranslate_ (int token)
 {
   static
   const TokenNumberType
@@ -1102,19 +1105,19 @@ b4_copyright([Position class for Bison C++ parsers], [2002, 2003, 2004])[
 
 namespace yy
 {
-  /** \brief Abstract a Position. */
+  /// Abstract a Position.
   class Position
   {
   public:
-    /** \brief Initial column number. */
+    /// Initial column number.
     static const unsigned int initial_column = 0;
-    /** \brief Initial line number. */
+    /// Initial line number.
     static const unsigned int initial_line = 1;
 
     /** \name Ctor & dtor.
      ** \{ */
   public:
-    /** \brief Construct a Position. */
+    /// Construct a Position.
     Position () :
       filename (),
       line (initial_line),
@@ -1127,14 +1130,14 @@ namespace yy
     /** \name Line and Column related manipulators
      ** \{ */
   public:
-    /** \brief (line related) Advance to the COUNT next lines. */
+    /// (line related) Advance to the COUNT next lines.
     inline void lines (int count = 1)
     {
       column = initial_column;
       line += count;
     }
 
-    /** \brief (column related) Advance to the COUNT next columns. */
+    /// (column related) Advance to the COUNT next columns.
     inline void columns (int count = 1)
     {
       int leftmost = initial_column;
@@ -1147,15 +1150,15 @@ namespace yy
     /** \} */
 
   public:
-    /** \brief File name to which this position refers. */
+    /// File name to which this position refers.
     std::string filename;
-    /** \brief Current line number. */
+    /// Current line number.
     unsigned int line;
-    /** \brief Current column number. */
+    /// Current column number.
     unsigned int column;
   };
 
-  /** \brief Add and assign a Position. */
+  /// Add and assign a Position.
   inline const Position&
   operator+= (Position& res, const int width)
   {
@@ -1163,7 +1166,7 @@ namespace yy
     return res;
   }
 
-  /** \brief Add two Position objects. */
+  /// Add two Position objects.
   inline const Position
   operator+ (const Position& begin, const int width)
   {
@@ -1171,14 +1174,14 @@ namespace yy
     return res += width;
   }
 
-  /** \brief Add and assign a Position. */
+  /// Add and assign a Position.
   inline const Position&
   operator-= (Position& res, const int width)
   {
     return res += -width;
   }
 
-  /** \brief Add two Position objects. */
+  /// Add two Position objects.
   inline const Position
   operator- (const Position& begin, const int width)
   {
@@ -1217,13 +1220,13 @@ b4_copyright([Location class for Bison C++ parsers], [2002, 2003, 2004])[
 namespace yy
 {
 
-  /** \brief Abstract a Location. */
+  /// Abstract a Location.
   class Location
   {
     /** \name Ctor & dtor.
      ** \{ */
   public:
-    /** \brief Construct a Location. */
+    /// Construct a Location.
     Location (void) :
       begin (),
       end ()
@@ -1235,19 +1238,19 @@ namespace yy
     /** \name Line and Column related manipulators
      ** \{ */
   public:
-    /** \brief Reset initial location to final location. */
+    /// Reset initial location to final location.
     inline void step (void)
     {
       begin = end;
     }
 
-    /** \brief Extend the current location to the COUNT next columns. */
+    /// Extend the current location to the COUNT next columns.
     inline void columns (unsigned int count = 1)
     {
       end += count;
     }
 
-    /** \brief Extend the current location to the COUNT next lines. */
+    /// Extend the current location to the COUNT next lines.
     inline void lines (unsigned int count = 1)
     {
       end.lines (count);
@@ -1256,13 +1259,13 @@ namespace yy
 
 
   public:
-    /** \brief Beginning of the located region. */
+    /// Beginning of the located region.
     Position begin;
-    /** \brief End of the located region. */
+    /// End of the located region.
     Position end;
   };
 
-  /** \brief Join two Location objects to create a Location. */
+  /// Join two Location objects to create a Location.
   inline const Location operator+ (const Location& begin, const Location& end)
   {
     Location res = begin;
@@ -1270,7 +1273,7 @@ namespace yy
     return res;
   }
 
-  /** \brief Add two Location objects */
+  /// Add two Location objects.
   inline const Location operator+ (const Location& begin, unsigned int width)
   {
     Location res = begin;
@@ -1278,7 +1281,7 @@ namespace yy
     return res;
   }
 
-  /** \brief Add and assign a Location */
+  /// Add and assign a Location.
   inline Location& operator+= (Location& res, unsigned int width)
   {
     res.columns (width);