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