105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A Bison parser, made by GNU Bison 2.6.90.8-d4fe.  */
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Skeleton implementation for Bison LALR(1) parsers in C++
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      Copyright (C) 2002-2012 Free Software Foundation, Inc.
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software: you can redistribute it and/or modify
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation, either version 3 of the License, or
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (at your option) any later version.
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* As a special exception, you may create a larger work that contains
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   part or all of the Bison parser skeleton and distribute that work
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   under terms of your choice, so long as that work isn't itself a
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   parser generator using the skeleton or a modified version thereof
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   as a parser skeleton.  Alternatively, if you modify or redistribute
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the parser skeleton itself, you may (at your option) remove this
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   special exception, which will cause the skeleton and the resulting
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Bison output files to be licensed under the GNU General Public
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   License without this special exception.
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This special exception was added by the Free Software Foundation in
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   version 2.2 of Bison.  */
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* First part of user declarations.  */
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 279 of lalr1.cc  */
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 38 "../../../../examples/calc++/calc++-parser.cc"
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "calc++-parser.hh"
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* User implementation prologue.  */
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 285 of lalr1.cc  */
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 46 "../../../../examples/calc++/calc++-parser.cc"
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Unqualified %code blocks.  */
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 286 of lalr1.cc  */
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10280 "../../doc/bison.texi"
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include "calc++-driver.hh"
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 286 of lalr1.cc  */
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 55 "../../../../examples/calc++/calc++-parser.cc"
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef YY_NULL
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if defined __cplusplus && 201103L <= __cplusplus
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define YY_NULL nullptr
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define YY_NULL 0
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined YYENABLE_NLS && YYENABLE_NLS
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if ENABLE_NLS
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define YY_(msgid) dgettext ("bison-runtime", msgid)
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef YY_
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define YY_(msgid) msgid
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   If N is 0, then set CURRENT to the empty location which ends
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the previous symbol: RHS[0] (always defined).  */
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef YYLLOC_DEFAULT
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define YYLLOC_DEFAULT(Current, Rhs, N)                               \
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    do                                                                  \
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (N)                                                            \
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {                                                               \
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (Current).begin  = YYRHSLOC (Rhs, 1).begin;                   \
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (Current).end    = YYRHSLOC (Rhs, N).end;                     \
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }                                                               \
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      else                                                              \
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {                                                               \
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end;      \
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }                                                               \
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    while (/*CONSTCOND*/ false)
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Suppress unused-variable warnings by "using" E.  */
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYUSE(e) ((void) (e))
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Enable debugging if requested.  */
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YYDEBUG
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A pseudo ostream that takes yydebug_ into account.  */
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCDEBUG if (yydebug_) (*yycdebug_)
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_SYMBOL_PRINT(Title, Type, Value, Location)	\
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo {							\
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (yydebug_)						\
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {							\
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      *yycdebug_ << Title << ' ';			\
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      yy_symbol_print_ ((Type), (Value), (Location));	\
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      *yycdebug_ << std::endl;				\
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }							\
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang} while (false)
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_REDUCE_PRINT(Rule)		\
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo {					\
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (yydebug_)				\
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yy_reduce_print_ (Rule);		\
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang} while (false)
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_STACK_PRINT()		\
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo {					\
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (yydebug_)				\
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystack_print_ ();			\
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang} while (false)
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else /* !YYDEBUG */
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCDEBUG if (false) std::cerr
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_REDUCE_PRINT(Rule)        static_cast<void>(0)
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_STACK_PRINT()             static_cast<void>(0)
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !YYDEBUG */
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyerrok		(yyerrstatus_ = 0)
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyclearin	(yychar = yyempty_)
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYACCEPT	goto yyacceptlab
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYABORT		goto yyabortlab
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYERROR		goto yyerrorlab
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYRECOVERING()  (!!yyerrstatus_)
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wangnamespace yy {
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 353 of lalr1.cc  */
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 150 "../../../../examples/calc++/calc++-parser.cc"
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* Return YYSTR after stripping away unnecessary quotes and
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     backslashes, so that it's suitable for yyerror.  The heuristic is
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     that double-quoting is unnecessary unless the string contains an
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     apostrophe, a comma, or backslash (other than backslash-backslash).
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     YYSTR is taken from yytname.  */
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  std::string
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yytnamerr_ (const char *yystr)
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (*yystr == '"')
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        std::string yyr = "";
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        char const *yyp = yystr;
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        for (;;)
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang          switch (*++yyp)
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang            {
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang            case '\'':
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang            case ',':
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang              goto do_not_strip_quotes;
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang            case '\\':
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang              if (*++yyp != '\\')
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                goto do_not_strip_quotes;
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang              /* Fall through.  */
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang            default:
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang              yyr += *yyp;
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang              break;
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            case '"':
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang              return yyr;
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang            }
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      do_not_strip_quotes: ;
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return yystr;
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /// Build a parser object.
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::calcxx_parser (calcxx_driver& driver_yyarg)
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    :
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YYDEBUG
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      yydebug_ (false),
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      yycdebug_ (&std::cerr),
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      driver (driver_yyarg)
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::~calcxx_parser ()
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YYDEBUG
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*--------------------------------.
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | Print this symbol on YYOUTPUT.  |
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `--------------------------------*/
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  inline void
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yy_symbol_value_print_ (int yytype,
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			   const semantic_type* yyvaluep, const location_type* yylocationp)
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYUSE (yylocationp);
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYUSE (yyvaluep);
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    std::ostream& yyo = debug_stream ();
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    std::ostream& yyoutput = yyo;
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYUSE (yyoutput);
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    switch (yytype)
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        case 4: /* "identifier" */
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 423 of lalr1.cc  */
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10309 "../../doc/bison.texi"
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        { yyoutput << *((*yyvaluep).sval); };
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 423 of lalr1.cc  */
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 226 "../../../../examples/calc++/calc++-parser.cc"
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case 5: /* "number" */
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 423 of lalr1.cc  */
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10312 "../../doc/bison.texi"
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        { yyoutput << ((*yyvaluep).ival); };
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 423 of lalr1.cc  */
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 233 "../../../../examples/calc++/calc++-parser.cc"
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case 14: /* exp */
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 423 of lalr1.cc  */
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10312 "../../doc/bison.texi"
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        { yyoutput << ((*yyvaluep).ival); };
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 423 of lalr1.cc  */
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 240 "../../../../examples/calc++/calc++-parser.cc"
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       default:
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  break;
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yy_symbol_print_ (int yytype,
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			   const semantic_type* yyvaluep, const location_type* yylocationp)
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm")
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	       << ' ' << yytname_[yytype] << " ("
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	       << *yylocationp << ": ";
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yy_symbol_value_print_ (yytype, yyvaluep, yylocationp);
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    *yycdebug_ << ')';
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yydestruct_ (const char* yymsg,
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			   int yytype, semantic_type* yyvaluep, location_type* yylocationp)
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYUSE (yylocationp);
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYUSE (yymsg);
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYUSE (yyvaluep);
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yymsg)
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    switch (yytype)
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        case 4: /* "identifier" */
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 455 of lalr1.cc  */
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10310 "../../doc/bison.texi"
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        { delete ((*yyvaluep).sval); };
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 455 of lalr1.cc  */
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 278 "../../../../examples/calc++/calc++-parser.cc"
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	default:
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  break;
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yypop_ (unsigned int n)
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystate_stack_.pop (n);
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yysemantic_stack_.pop (n);
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylocation_stack_.pop (n);
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YYDEBUG
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  std::ostream&
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::debug_stream () const
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return *yycdebug_;
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::set_debug_stream (std::ostream& o)
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yycdebug_ = &o;
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::debug_level_type
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::debug_level () const
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return yydebug_;
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::set_debug_level (debug_level_type l)
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yydebug_ = l;
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  inline bool
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yy_pact_value_is_default_ (int yyvalue)
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return yyvalue == yypact_ninf_;
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  inline bool
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yy_table_value_is_error_ (int yyvalue)
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return yyvalue == yytable_ninf_;
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  int
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::parse ()
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /// Lookahead and lookahead in internal form.
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yychar = yyempty_;
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yytoken = 0;
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // State.
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yyn;
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yylen = 0;
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yystate = 0;
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Error handling.
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yynerrs_ = 0;
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yyerrstatus_ = 0;
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /// Semantic value of the lookahead.
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static semantic_type yyval_default;
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    semantic_type yylval = yyval_default;
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /// Location of the lookahead.
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    location_type yylloc;
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /// The locations where the error started and ended.
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    location_type yyerror_range[3];
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /// $$.
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    semantic_type yyval;
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /// @$.
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    location_type yyloc;
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yyresult;
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // FIXME: This shoud be completely indented.  It is not yet to
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // avoid gratuitous conflicts when merging into the master branch.
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    try
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYCDEBUG << "Starting parse" << std::endl;
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* User initialization code.  */
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 545 of lalr1.cc  */
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10242 "../../doc/bison.texi"
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  // Initialize the initial location.
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yylloc.begin.filename = yylloc.end.filename = &driver.file;
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 545 of lalr1.cc  */
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 379 "../../../../examples/calc++/calc++-parser.cc"
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Initialize the stacks.  The initial state will be pushed in
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       yynewstate, since the latter expects the semantical and the
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       location values to have been already stored, initialize these
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       stacks with a primary value.  */
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystate_stack_ = state_stack_type (0);
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yysemantic_stack_ = semantic_stack_type (0);
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylocation_stack_ = location_stack_type (0);
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yysemantic_stack_.push (yylval);
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylocation_stack_.push (yylloc);
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* New state.  */
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yynewstate:
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystate_stack_.push (yystate);
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYCDEBUG << "Entering state " << yystate << std::endl;
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Accept?  */
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yystate == yyfinal_)
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      goto yyacceptlab;
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yybackup;
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Backup.  */
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yybackup:
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Try to take a decision without lookahead.  */
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyn = yypact_[yystate];
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yy_pact_value_is_default_ (yyn))
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      goto yydefault;
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Read a lookahead token.  */
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yychar == yyempty_)
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCDEBUG << "Reading a token: ";
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yychar = yylex (&yylval, &yylloc, driver);
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Convert token to internal form.  */
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yychar <= yyeof_)
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yychar = yytoken = yyeof_;
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YYCDEBUG << "Now at end of input." << std::endl;
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    else
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yytoken = yytranslate_ (yychar);
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* If the proper action on seeing token YYTOKEN is to reduce or to
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       detect an error, take that action.  */
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyn += yytoken;
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken)
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      goto yydefault;
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Reduce or error.  */
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyn = yytable_[yyn];
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yyn <= 0)
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (yy_table_value_is_error_ (yyn))
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  goto yyerrlab;
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyn = -yyn;
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	goto yyreduce;
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Shift the lookahead token.  */
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Discard the token being shifted.  */
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yychar = yyempty_;
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yysemantic_stack_.push (yylval);
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylocation_stack_.push (yylloc);
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Count tokens shifted since error; after three, turn off error
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       status.  */
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yyerrstatus_)
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      --yyerrstatus_;
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystate = yyn;
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yynewstate;
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*-----------------------------------------------------------.
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | yydefault -- do the default action for the current state.  |
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `-----------------------------------------------------------*/
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yydefault:
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyn = yydefact_[yystate];
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yyn == 0)
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      goto yyerrlab;
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yyreduce;
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*-----------------------------.
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | yyreduce -- Do a reduction.  |
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `-----------------------------*/
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yyreduce:
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylen = yyr2_[yyn];
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* If YYLEN is nonzero, implement the default value of the action:
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       `$$ = $1'.  Otherwise, use the top of the stack.
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       Otherwise, the following line sets YYVAL to garbage.
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       This behavior is undocumented and Bison
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       users should not rely upon it.  */
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yylen)
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      yyval = yysemantic_stack_[yylen - 1];
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    else
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      yyval = yysemantic_stack_[0];
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Compute the default @$.
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      YYLLOC_DEFAULT (yyloc, slice, yylen);
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Perform the reduction.
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YY_REDUCE_PRINT (yyn);
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    switch (yyn)
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          case 2:
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10322 "../../doc/bison.texi"
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { driver.result = (yysemantic_stack_[(2) - (2)].ival); }
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 3:
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10325 "../../doc/bison.texi"
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {}
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 4:
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10326 "../../doc/bison.texi"
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {}
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 5:
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10330 "../../doc/bison.texi"
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { driver.variables[*(yysemantic_stack_[(3) - (1)].sval)] = (yysemantic_stack_[(3) - (3)].ival); delete (yysemantic_stack_[(3) - (1)].sval); }
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 6:
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10334 "../../doc/bison.texi"
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) + (yysemantic_stack_[(3) - (3)].ival); }
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 7:
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10335 "../../doc/bison.texi"
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) - (yysemantic_stack_[(3) - (3)].ival); }
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 8:
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10336 "../../doc/bison.texi"
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) * (yysemantic_stack_[(3) - (3)].ival); }
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 9:
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10337 "../../doc/bison.texi"
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) / (yysemantic_stack_[(3) - (3)].ival); }
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 10:
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10338 "../../doc/bison.texi"
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { (yyval.ival) = driver.variables[*(yysemantic_stack_[(1) - (1)].sval)]; delete (yysemantic_stack_[(1) - (1)].sval); }
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  case 11:
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10339 "../../doc/bison.texi"
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    { (yyval.ival) = (yysemantic_stack_[(1) - (1)].ival); }
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    break;
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 670 of lalr1.cc  */
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 559 "../../../../examples/calc++/calc++-parser.cc"
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      default:
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* User semantic actions sometimes alter yychar, and that requires
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       that yytoken be updated with the new translation.  We take the
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       approach of translating immediately before every use of yytoken.
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       One alternative is translating here after every semantic action,
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       but that translation would be missed if the semantic action
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       invokes YYABORT, YYACCEPT, or YYERROR immediately after altering
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       yychar.  In the case of YYABORT or YYACCEPT, an incorrect
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       destructor might then be invoked immediately.  In the case of
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       YYERROR, subsequent parser actions might lead to an incorrect
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       destructor call or verbose syntax error message before the
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       lookahead is translated.  */
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yypop_ (yylen);
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylen = 0;
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YY_STACK_PRINT ();
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yysemantic_stack_.push (yyval);
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylocation_stack_.push (yyloc);
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Shift the result of the reduction.  */
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyn = yyr1_[yyn];
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0];
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (0 <= yystate && yystate <= yylast_
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	&& yycheck_[yystate] == yystate_stack_[0])
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      yystate = yytable_[yystate];
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    else
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      yystate = yydefgoto_[yyn - yyntokens_];
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yynewstate;
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*------------------------------------.
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | yyerrlab -- here on detecting error |
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `------------------------------------*/
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yyerrlab:
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Make sure we have latest lookahead translation.  See comments at
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       user semantic actions for why this is necessary.  */
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yytoken = yytranslate_ (yychar);
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* If not already recovering from an error, report this error.  */
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (!yyerrstatus_)
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	++yynerrs_;
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (yychar == yyempty_)
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  yytoken = yyempty_;
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	error (yylloc, yysyntax_error_ (yystate, yytoken));
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyerror_range[1] = yylloc;
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yyerrstatus_ == 3)
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        /* If just tried and failed to reuse lookahead token after an
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang           error, discard it.  */
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        if (yychar <= yyeof_)
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang            /* Return failure if at end of input.  */
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang            if (yychar == yyeof_)
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang              YYABORT;
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        else
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yychar = yyempty_;
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Else will try to reuse lookahead token after shifting the error
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       token.  */
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yyerrlab1;
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*---------------------------------------------------.
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | yyerrorlab -- error raised explicitly by YYERROR.  |
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `---------------------------------------------------*/
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yyerrorlab:
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Pacify compilers like GCC when the user code never invokes
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       YYERROR and the label yyerrorlab therefore never appears in user
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       code.  */
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (false)
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      goto yyerrorlab;
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyerror_range[1] = yylocation_stack_[yylen - 1];
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Do not reclaim the symbols of the rule which action triggered
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       this YYERROR.  */
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yypop_ (yylen);
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylen = 0;
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystate = yystate_stack_[0];
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yyerrlab1;
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*-------------------------------------------------------------.
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | yyerrlab1 -- common code for both syntax error and YYERROR.  |
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  `-------------------------------------------------------------*/
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yyerrlab1:
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyerrstatus_ = 3;	/* Each real token shifted decrements this.  */
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    for (;;)
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyn = yypact_[yystate];
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (!yy_pact_value_is_default_ (yyn))
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  yyn += yyterror_;
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    {
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	      yyn = yytable_[yyn];
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	      if (0 < yyn)
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		break;
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	    }
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Pop the current state because it cannot handle the error token.  */
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (yystate_stack_.height () == 1)
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	  YYABORT;
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyerror_range[1] = yylocation_stack_[0];
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yydestruct_ ("Error: popping",
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		     yystos_[yystate],
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		     &yysemantic_stack_[0], &yylocation_stack_[0]);
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yypop_ ();
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yystate = yystate_stack_[0];
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_STACK_PRINT ();
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyerror_range[2] = yylloc;
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Using YYLLOC is tempting, but would change the location of
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // the lookahead.  YYLOC is available though.
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yysemantic_stack_.push (yylval);
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylocation_stack_.push (yyloc);
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Shift the error token.  */
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YY_SYMBOL_PRINT ("Shifting", yystos_[yyn],
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		     &yysemantic_stack_[0], &yylocation_stack_[0]);
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yystate = yyn;
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yynewstate;
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Accept.  */
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yyacceptlab:
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyresult = 0;
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yyreturn;
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Abort.  */
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yyabortlab:
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyresult = 1;
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    goto yyreturn;
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yyreturn:
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yychar != yyempty_)
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        /* Make sure we have latest lookahead translation.  See comments
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang           at user semantic actions for why this is necessary.  */
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yytoken = yytranslate_ (yychar);
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval,
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     &yylloc);
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Do not reclaim the symbols of the rule which action triggered
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       this YYABORT or YYACCEPT.  */
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yypop_ (yylen);
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    while (1 < yystate_stack_.height ())
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yydestruct_ ("Cleanup: popping",
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     yystos_[yystate_stack_[0]],
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     &yysemantic_stack_[0],
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     &yylocation_stack_[0]);
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yypop_ ();
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return yyresult;
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    catch (...)
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 << std::endl;
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        // Do not try to display the values of the reclaimed symbols,
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        // as their printer might throw an exception.
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        if (yychar != yyempty_)
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang            /* Make sure we have latest lookahead translation.  See
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang               comments at user semantic actions for why this is
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang               necessary.  */
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yytoken = yytranslate_ (yychar);
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        while (1 < yystate_stack_.height ())
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yydestruct_ (YY_NULL,
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         yystos_[yystate_stack_[0]],
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         &yysemantic_stack_[0],
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         &yylocation_stack_[0]);
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yypop_ ();
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        throw;
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  // Generate an error message.
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  std::string
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yysyntax_error_ (int yystate, int yytoken)
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    std::string yyres;
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Number of reported tokens (one for the "unexpected", one per
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // "expected").
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    size_t yycount = 0;
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Its maximum.
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Arguments of yyformat.
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* There are many possibilities here to consider:
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       - If this state is a consistent state with a default action, then
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang         the only way this function was invoked is if the default action
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang         is an error action.  In that case, don't check for expected
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang         tokens because there are none.
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       - The only way there can be no lookahead present (in yytoken) is
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang         if this state is a consistent state with a default action.
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang         Thus, detecting the absence of a lookahead is sufficient to
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang         determine that there is no unexpected or expected token to
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang         report.  In that case, just report a simple "syntax error".
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       - Don't assume there isn't a lookahead just because this state is
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang         a consistent state with a default action.  There might have
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang         been a previous inconsistent state, consistent state with a
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang         non-default action, or user semantic action that manipulated
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang         yychar.
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       - Of course, the expected token list depends on states to have
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang         correct lookahead information, and it depends on the parser not
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang         to perform extra reductions after fetching a lookahead from the
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang         scanner and before detecting a syntax error.  Thus, state
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang         merging (from LALR or IELR) and default reductions corrupt the
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang         expected token list.  However, the list is correct for
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang         canonical LR with one exception: it will still contain any
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang         token that will not be accepted due to an error action in a
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang         later state.
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    */
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (yytoken != yyempty_)
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yyarg[yycount++] = yytname_[yytoken];
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        int yyn = yypact_[yystate];
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        if (!yy_pact_value_is_default_ (yyn))
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang          {
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang            /* Start YYX at -YYN if negative to avoid negative indexes in
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang               YYCHECK.  In other words, skip the first -YYN actions for
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang               this state because they are default actions.  */
80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang            int yyxbegin = yyn < 0 ? -yyn : 0;
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang            /* Stay within bounds of both yycheck and yytname.  */
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            int yychecklim = yylast_ - yyn + 1;
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang            int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang            for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang              if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                {
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    {
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                      yycount = 1;
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                      break;
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    }
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  else
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                    yyarg[yycount++] = yytname_[yyx];
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                }
82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang          }
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    char const* yyformat = YY_NULL;
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    switch (yycount)
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      {
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYCASE_(N, S)                         \
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        case N:                               \
83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang          yyformat = S;                       \
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCASE_(0, YY_("syntax error"));
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCASE_(1, YY_("syntax error, unexpected %s"));
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef YYCASE_
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      }
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    // Argument number.
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    size_t yyi = 0;
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    for (char const* yyp = yyformat; *yyp; ++yyp)
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        {
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang          yyres += yytnamerr_ (yyarg[yyi++]);
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang          ++yyp;
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        }
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      else
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yyres += *yyp;
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return yyres;
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     STATE-NUM.  */
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const signed char calcxx_parser::yypact_ninf_ = -9;
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const signed char
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yypact_[] =
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        -9,    13,     5,    -9,    14,    -9,    -9,    -1,     7,     7,
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       7,     7,     7,    -9,    -1,     6,     6,    -9,    -9
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYDEFACT[S] -- default reduction number in state S.  Performed when
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     YYTABLE doesn't specify something else to do.  Zero means the
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     default is an error.  */
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned char
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yydefact_[] =
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang         3,     0,     0,     1,    10,    11,     4,     2,     0,     0,
87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       0,     0,     0,    10,     5,     6,     7,     8,     9
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYPGOTO[NTERM-NUM].  */
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const signed char
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yypgoto_[] =
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        -9,    -9,    -9,    -9,    -8
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYDEFGOTO[NTERM-NUM].  */
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const signed char
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yydefgoto_[] =
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        -1,     1,     2,     6,     7
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     positive, shift that token.  If negative, reduce the rule which
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang     number is the opposite.  If YYTABLE_NINF_, syntax error.  */
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const signed char calcxx_parser::yytable_ninf_ = -1;
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned char
89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yytable_[] =
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        14,    15,    16,    17,    18,     9,    10,    11,    12,     4,
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       5,    13,     5,     3,    11,    12,     0,     8
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYCHECK.  */
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const signed char
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yycheck_[] =
90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang         8,     9,    10,    11,    12,     6,     7,     8,     9,     4,
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       5,     4,     5,     0,     8,     9,    -1,     3
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* STOS_[STATE-NUM] -- The (internal number of the) accessing
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     symbol of state STATE-NUM.  */
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned char
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yystos_[] =
91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang         0,    11,    12,     0,     4,     5,    13,    14,     3,     6,
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       7,     8,     9,     4,    14,    14,    14,    14,    14
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YYDEBUG
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     to YYLEX-NUM.  */
92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned short int
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yytoken_number_[] =
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang         0,   256,   257,   258,   259,   260,    43,    45,    42,    47
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned char
93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yyr1_[] =
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang         0,    10,    11,    12,    12,    13,    14,    14,    14,    14,
93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      14,    14
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned char
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yyr2_[] =
93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang         0,     2,     2,     0,     2,     3,     3,     3,     3,     3,
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       1,     1
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     First, the terminals, then, starting at \a yyntokens_, nonterminals.  */
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const char*
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const calcxx_parser::yytname_[] =
94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    "\"end of file\"", "error", "$undefined", "\":=\"", "\"identifier\"",
95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  "\"number\"", "'+'", "'-'", "'*'", "'/'", "$accept", "unit",
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  "assignments", "assignment", "exp", YY_NULL
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YYDEBUG
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const calcxx_parser::rhs_number_type
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yyrhs_[] =
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        11,     0,    -1,    12,    14,    -1,    -1,    12,    13,    -1,
96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       4,     3,    14,    -1,    14,     6,    14,    -1,    14,     7,
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      14,    -1,    14,     8,    14,    -1,    14,     9,    14,    -1,
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       4,    -1,     5,    -1
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     YYRHS.  */
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned char
96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yyprhs_[] =
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang         0,     0,     3,     6,     7,    10,    14,    18,    22,    26,
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      30,    32
97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned short int
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yyrline_[] =
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang         0, 10322, 10322, 10325, 10326, 10329, 10334, 10335, 10336, 10337,
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   10338, 10339
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  };
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  // Print the state stack on the debug stream.
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yystack_print_ ()
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    *yycdebug_ << "Stack now";
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    for (state_stack_type::const_iterator i = yystate_stack_.begin ();
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 i != yystate_stack_.end (); ++i)
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      *yycdebug_ << ' ' << *i;
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    *yycdebug_ << std::endl;
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  // Report on the debug stream that the rule \a yyrule is going to be reduced.
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  void
99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yy_reduce_print_ (int yyrule)
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    unsigned int yylno = yyrline_[yyrule];
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yynrhs = yyr2_[yyrule];
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Print the symbols being reduced, and their result.  */
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    *yycdebug_ << "Reducing stack by rule " << yyrule - 1
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	       << " (line " << yylno << "):" << std::endl;
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* The symbols being reduced.  */
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    for (int yyi = 0; yyi < yynrhs; yyi++)
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		       yyrhs_[yyprhs_[yyrule] + yyi],
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		       &(yysemantic_stack_[(yynrhs) - (yyi + 1)]),
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		       &(yylocation_stack_[(yynrhs) - (yyi + 1)]));
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif // YYDEBUG
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::token_number_type
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  calcxx_parser::yytranslate_ (int t)
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  {
101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    const token_number_type
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    translate_table[] =
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang           0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     8,     6,     2,     7,     2,     9,     2,     2,
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
102905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       5
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    };
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if ((unsigned int) t <= yyuser_token_number_max_)
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      return translate_table[t];
105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    else
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      return yyundef_token_;
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yyeof_ = 0;
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yylast_ = 17;
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yynnts_ = 5;
105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yyempty_ = -2;
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yyfinal_ = 3;
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yyterror_ = 1;
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yyerrcode_ = 256;
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const int calcxx_parser::yyntokens_ = 10;
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const unsigned int calcxx_parser::yyuser_token_number_max_ = 260;
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  const calcxx_parser::token_number_type calcxx_parser::yyundef_token_ = 2;
106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang} // yy
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 1141 of lalr1.cc  */
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 1070 "../../../../examples/calc++/calc++-parser.cc"
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Line 1142 of lalr1.cc  */
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10340 "../../doc/bison.texi"
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 10349 "../../doc/bison.texi"
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy::calcxx_parser::error (const yy::calcxx_parser::location_type& l,
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                          const std::string& m)
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  driver.error (l, m);
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
1080