Index: bison/src/bison/2.4.1/bison-2.4.1-src/examples/calc++/calc++-parser.hh |
=================================================================== |
--- bison/src/bison/2.4.1/bison-2.4.1-src/examples/calc++/calc++-parser.hh (revision 0) |
+++ bison/src/bison/2.4.1/bison-2.4.1-src/examples/calc++/calc++-parser.hh (revision 0) |
@@ -0,0 +1,339 @@ |
+ |
+/* A Bison parser, made by GNU Bison 2.4.1. */ |
+ |
+/* Skeleton interface for Bison LALR(1) parsers in C++ |
+ |
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 3 of the License, 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, see <http://www.gnu.org/licenses/>. */ |
+ |
+/* As a special exception, you may create a larger work that contains |
+ part or all of the Bison parser skeleton and distribute that work |
+ under terms of your choice, so long as that work isn't itself a |
+ parser generator using the skeleton or a modified version thereof |
+ as a parser skeleton. Alternatively, if you modify or redistribute |
+ the parser skeleton itself, you may (at your option) remove this |
+ special exception, which will cause the skeleton and the resulting |
+ Bison output files to be licensed under the GNU General Public |
+ License without this special exception. |
+ |
+ This special exception was added by the Free Software Foundation in |
+ version 2.2 of Bison. */ |
+ |
+/* C++ LALR(1) parser skeleton written by Akim Demaille. */ |
+ |
+#ifndef PARSER_HEADER_H |
+# define PARSER_HEADER_H |
+ |
+/* "%code requires" blocks. */ |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 8438 "../../doc/bison.texinfo" |
+ |
+# include <string> |
+class calcxx_driver; |
+ |
+ |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 52 "./calc++-parser.hh" |
+ |
+ |
+#include <string> |
+#include <iostream> |
+#include "stack.hh" |
+ |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 1 "[Bison:b4_percent_define_default]" |
+ |
+namespace yy { |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 66 "./calc++-parser.hh" |
+ class position; |
+ class location; |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 1 "[Bison:b4_percent_define_default]" |
+ |
+} // yy |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 76 "./calc++-parser.hh" |
+ |
+#include "location.hh" |
+ |
+/* Enabling traces. */ |
+#ifndef YYDEBUG |
+# define YYDEBUG 1 |
+#endif |
+ |
+/* Enabling verbose error messages. */ |
+#ifdef YYERROR_VERBOSE |
+# undef YYERROR_VERBOSE |
+# define YYERROR_VERBOSE 1 |
+#else |
+# define YYERROR_VERBOSE 1 |
+#endif |
+ |
+/* Enabling the token table. */ |
+#ifndef YYTOKEN_TABLE |
+# define YYTOKEN_TABLE 0 |
+#endif |
+ |
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. |
+ If N is 0, then set CURRENT to the empty location which ends |
+ the previous symbol: RHS[0] (always defined). */ |
+ |
+#ifndef YYLLOC_DEFAULT |
+# define YYLLOC_DEFAULT(Current, Rhs, N) \ |
+do { \ |
+ if (N) \ |
+ { \ |
+ (Current).begin = (Rhs)[1].begin; \ |
+ (Current).end = (Rhs)[N].end; \ |
+ } \ |
+ else \ |
+ { \ |
+ (Current).begin = (Current).end = (Rhs)[0].end; \ |
+ } \ |
+} while (false) |
+#endif |
+ |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 1 "[Bison:b4_percent_define_default]" |
+ |
+namespace yy { |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 124 "./calc++-parser.hh" |
+ |
+ /// A Bison parser. |
+ class calcxx_parser |
+ { |
+ public: |
+ /// Symbol semantic values. |
+#ifndef YYSTYPE |
+ union semantic_type |
+ { |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 8490 "../../doc/bison.texinfo" |
+ |
+ int ival; |
+ std::string *sval; |
+ |
+ |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 144 "./calc++-parser.hh" |
+ }; |
+#else |
+ typedef YYSTYPE semantic_type; |
+#endif |
+ /// Symbol locations. |
+ typedef location location_type; |
+ /// Tokens. |
+ struct token |
+ { |
+ /* Tokens. */ |
+ enum yytokentype { |
+ END = 0, |
+ ASSIGN = 258, |
+ IDENTIFIER = 259, |
+ NUMBER = 260 |
+ }; |
+ |
+ }; |
+ /// Token type. |
+ typedef token::yytokentype token_type; |
+ |
+ /// Build a parser object. |
+ calcxx_parser (calcxx_driver& driver_yyarg); |
+ virtual ~calcxx_parser (); |
+ |
+ /// Parse. |
+ /// \returns 0 iff parsing succeeded. |
+ virtual int parse (); |
+ |
+#if YYDEBUG |
+ /// 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); |
+#endif |
+ |
+ private: |
+ /// Report a syntax error. |
+ /// \param loc where the syntax error is found. |
+ /// \param msg a description of the syntax error. |
+ virtual void error (const location_type& loc, const std::string& msg); |
+ |
+ /// Generate an error message. |
+ /// \param state the state where the error occurred. |
+ /// \param tok the lookahead token. |
+ virtual std::string yysyntax_error_ (int yystate, int tok); |
+ |
+#if YYDEBUG |
+ /// \brief Report a symbol value on the debug stream. |
+ /// \param yytype The token type. |
+ /// \param yyvaluep Its semantic value. |
+ /// \param yylocationp Its location. |
+ virtual void yy_symbol_value_print_ (int yytype, |
+ const semantic_type* yyvaluep, |
+ const location_type* 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 yy_symbol_print_ (int yytype, |
+ const semantic_type* yyvaluep, |
+ const location_type* yylocationp); |
+#endif |
+ |
+ |
+ /// State numbers. |
+ typedef int state_type; |
+ /// State stack type. |
+ typedef stack<state_type> state_stack_type; |
+ /// Semantic value stack type. |
+ typedef stack<semantic_type> semantic_stack_type; |
+ /// location stack type. |
+ typedef stack<location_type> location_stack_type; |
+ |
+ /// The state stack. |
+ state_stack_type yystate_stack_; |
+ /// The semantic value stack. |
+ semantic_stack_type yysemantic_stack_; |
+ /// The location stack. |
+ location_stack_type yylocation_stack_; |
+ |
+ /// Internal symbol numbers. |
+ typedef unsigned char token_number_type; |
+ /* Tables. */ |
+ /// For a state, the index in \a yytable_ of its portion. |
+ static const signed char yypact_[]; |
+ static const signed char yypact_ninf_; |
+ |
+ /// For a state, default rule to reduce. |
+ /// Unless\a yytable_ specifies something else to do. |
+ /// Zero means the default is an error. |
+ static const unsigned char yydefact_[]; |
+ |
+ static const signed char yypgoto_[]; |
+ static const signed char yydefgoto_[]; |
+ |
+ /// What to do in a state. |
+ /// \a yytable_[yypact_[s]]: what to do in state \a s. |
+ /// - if positive, shift that token. |
+ /// - if negative, reduce the rule which number is the opposite. |
+ /// - if zero, do what YYDEFACT says. |
+ static const unsigned char yytable_[]; |
+ static const signed char yytable_ninf_; |
+ |
+ static const signed char yycheck_[]; |
+ |
+ /// For a state, its accessing symbol. |
+ static const unsigned char yystos_[]; |
+ |
+ /// For a rule, its LHS. |
+ static const unsigned char yyr1_[]; |
+ /// For a rule, its RHS length. |
+ static const unsigned char yyr2_[]; |
+ |
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE |
+ /// For a symbol, its name in clear. |
+ static const char* const yytname_[]; |
+#endif |
+ |
+#if YYERROR_VERBOSE |
+ /// Convert the symbol name \a n to a form suitable for a diagnostic. |
+ virtual std::string yytnamerr_ (const char *n); |
+#endif |
+ |
+#if YYDEBUG |
+ /// A type to store symbol numbers and -1. |
+ typedef signed char rhs_number_type; |
+ /// A `-1'-separated list of the rules' RHS. |
+ static const rhs_number_type yyrhs_[]; |
+ /// For each rule, the index of the first RHS symbol in \a yyrhs_. |
+ static const unsigned char yyprhs_[]; |
+ /// For each rule, its source line number. |
+ static const unsigned short int yyrline_[]; |
+ /// For each scanner token number, its symbol number. |
+ static const unsigned short int yytoken_number_[]; |
+ /// Report on the debug stream that the rule \a r is going to be reduced. |
+ virtual void yy_reduce_print_ (int r); |
+ /// Print the state stack on the debug stream. |
+ virtual void yystack_print_ (); |
+ |
+ /* Debugging. */ |
+ int yydebug_; |
+ std::ostream* yycdebug_; |
+#endif |
+ |
+ /// Convert a scanner token number \a t to a symbol number. |
+ token_number_type yytranslate_ (int t); |
+ |
+ /// \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, |
+ semantic_type* yyvaluep, |
+ location_type* yylocationp); |
+ |
+ /// Pop \a n symbols the three stacks. |
+ inline void yypop_ (unsigned int n = 1); |
+ |
+ /* Constants. */ |
+ static const int yyeof_; |
+ /* LAST_ -- Last index in TABLE_. */ |
+ static const int yylast_; |
+ static const int yynnts_; |
+ static const int yyempty_; |
+ static const int yyfinal_; |
+ static const int yyterror_; |
+ static const int yyerrcode_; |
+ static const int yyntokens_; |
+ static const unsigned int yyuser_token_number_max_; |
+ static const token_number_type yyundef_token_; |
+ |
+ /* User arguments. */ |
+ calcxx_driver& driver; |
+ }; |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 1 "[Bison:b4_percent_define_default]" |
+ |
+} // yy |
+ |
+/* Line 300 of lalr1.cc */ |
+#line 336 "./calc++-parser.hh" |
+ |
+ |
+ |
+#endif /* ! defined PARSER_HEADER_H */ |