| 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 */
|
|
|