1*0c8de5b0SBaptiste Daroussin /* original parser id follows */ 2*0c8de5b0SBaptiste Daroussin /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3*0c8de5b0SBaptiste Daroussin /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 4*0c8de5b0SBaptiste Daroussin 5*0c8de5b0SBaptiste Daroussin #define YYBYACC 1 6*0c8de5b0SBaptiste Daroussin #define YYMAJOR 1 7*0c8de5b0SBaptiste Daroussin #define YYMINOR 9 8*0c8de5b0SBaptiste Daroussin #define YYCHECK "yyyymmdd" 9*0c8de5b0SBaptiste Daroussin 10*0c8de5b0SBaptiste Daroussin #define YYEMPTY (-1) 11*0c8de5b0SBaptiste Daroussin #define yyclearin (yychar = YYEMPTY) 12*0c8de5b0SBaptiste Daroussin #define yyerrok (yyerrflag = 0) 13*0c8de5b0SBaptiste Daroussin #define YYRECOVERING() (yyerrflag != 0) 14*0c8de5b0SBaptiste Daroussin #define YYENOMEM (-2) 15*0c8de5b0SBaptiste Daroussin #define YYEOF 0 16*0c8de5b0SBaptiste Daroussin #undef YYBTYACC 17*0c8de5b0SBaptiste Daroussin #define YYBTYACC 0 18*0c8de5b0SBaptiste Daroussin #define YYDEBUGSTR YYPREFIX "debug" 19*0c8de5b0SBaptiste Daroussin 20*0c8de5b0SBaptiste Daroussin #ifndef yyparse 21*0c8de5b0SBaptiste Daroussin #define yyparse err_syntax10_parse 22*0c8de5b0SBaptiste Daroussin #endif /* yyparse */ 23*0c8de5b0SBaptiste Daroussin 24*0c8de5b0SBaptiste Daroussin #ifndef yylex 25*0c8de5b0SBaptiste Daroussin #define yylex err_syntax10_lex 26*0c8de5b0SBaptiste Daroussin #endif /* yylex */ 27*0c8de5b0SBaptiste Daroussin 28*0c8de5b0SBaptiste Daroussin #ifndef yyerror 29*0c8de5b0SBaptiste Daroussin #define yyerror err_syntax10_error 30*0c8de5b0SBaptiste Daroussin #endif /* yyerror */ 31*0c8de5b0SBaptiste Daroussin 32*0c8de5b0SBaptiste Daroussin #ifndef yychar 33*0c8de5b0SBaptiste Daroussin #define yychar err_syntax10_char 34*0c8de5b0SBaptiste Daroussin #endif /* yychar */ 35*0c8de5b0SBaptiste Daroussin 36*0c8de5b0SBaptiste Daroussin #ifndef yyval 37*0c8de5b0SBaptiste Daroussin #define yyval err_syntax10_val 38*0c8de5b0SBaptiste Daroussin #endif /* yyval */ 39*0c8de5b0SBaptiste Daroussin 40*0c8de5b0SBaptiste Daroussin #ifndef yylval 41*0c8de5b0SBaptiste Daroussin #define yylval err_syntax10_lval 42*0c8de5b0SBaptiste Daroussin #endif /* yylval */ 43*0c8de5b0SBaptiste Daroussin 44*0c8de5b0SBaptiste Daroussin #ifndef yydebug 45*0c8de5b0SBaptiste Daroussin #define yydebug err_syntax10_debug 46*0c8de5b0SBaptiste Daroussin #endif /* yydebug */ 47*0c8de5b0SBaptiste Daroussin 48*0c8de5b0SBaptiste Daroussin #ifndef yynerrs 49*0c8de5b0SBaptiste Daroussin #define yynerrs err_syntax10_nerrs 50*0c8de5b0SBaptiste Daroussin #endif /* yynerrs */ 51*0c8de5b0SBaptiste Daroussin 52*0c8de5b0SBaptiste Daroussin #ifndef yyerrflag 53*0c8de5b0SBaptiste Daroussin #define yyerrflag err_syntax10_errflag 54*0c8de5b0SBaptiste Daroussin #endif /* yyerrflag */ 55*0c8de5b0SBaptiste Daroussin 56*0c8de5b0SBaptiste Daroussin #ifndef yylhs 57*0c8de5b0SBaptiste Daroussin #define yylhs err_syntax10_lhs 58*0c8de5b0SBaptiste Daroussin #endif /* yylhs */ 59*0c8de5b0SBaptiste Daroussin 60*0c8de5b0SBaptiste Daroussin #ifndef yylen 61*0c8de5b0SBaptiste Daroussin #define yylen err_syntax10_len 62*0c8de5b0SBaptiste Daroussin #endif /* yylen */ 63*0c8de5b0SBaptiste Daroussin 64*0c8de5b0SBaptiste Daroussin #ifndef yydefred 65*0c8de5b0SBaptiste Daroussin #define yydefred err_syntax10_defred 66*0c8de5b0SBaptiste Daroussin #endif /* yydefred */ 67*0c8de5b0SBaptiste Daroussin 68*0c8de5b0SBaptiste Daroussin #ifndef yystos 69*0c8de5b0SBaptiste Daroussin #define yystos err_syntax10_stos 70*0c8de5b0SBaptiste Daroussin #endif /* yystos */ 71*0c8de5b0SBaptiste Daroussin 72*0c8de5b0SBaptiste Daroussin #ifndef yydgoto 73*0c8de5b0SBaptiste Daroussin #define yydgoto err_syntax10_dgoto 74*0c8de5b0SBaptiste Daroussin #endif /* yydgoto */ 75*0c8de5b0SBaptiste Daroussin 76*0c8de5b0SBaptiste Daroussin #ifndef yysindex 77*0c8de5b0SBaptiste Daroussin #define yysindex err_syntax10_sindex 78*0c8de5b0SBaptiste Daroussin #endif /* yysindex */ 79*0c8de5b0SBaptiste Daroussin 80*0c8de5b0SBaptiste Daroussin #ifndef yyrindex 81*0c8de5b0SBaptiste Daroussin #define yyrindex err_syntax10_rindex 82*0c8de5b0SBaptiste Daroussin #endif /* yyrindex */ 83*0c8de5b0SBaptiste Daroussin 84*0c8de5b0SBaptiste Daroussin #ifndef yygindex 85*0c8de5b0SBaptiste Daroussin #define yygindex err_syntax10_gindex 86*0c8de5b0SBaptiste Daroussin #endif /* yygindex */ 87*0c8de5b0SBaptiste Daroussin 88*0c8de5b0SBaptiste Daroussin #ifndef yytable 89*0c8de5b0SBaptiste Daroussin #define yytable err_syntax10_table 90*0c8de5b0SBaptiste Daroussin #endif /* yytable */ 91*0c8de5b0SBaptiste Daroussin 92*0c8de5b0SBaptiste Daroussin #ifndef yycheck 93*0c8de5b0SBaptiste Daroussin #define yycheck err_syntax10_check 94*0c8de5b0SBaptiste Daroussin #endif /* yycheck */ 95*0c8de5b0SBaptiste Daroussin 96*0c8de5b0SBaptiste Daroussin #ifndef yyname 97*0c8de5b0SBaptiste Daroussin #define yyname err_syntax10_name 98*0c8de5b0SBaptiste Daroussin #endif /* yyname */ 99*0c8de5b0SBaptiste Daroussin 100*0c8de5b0SBaptiste Daroussin #ifndef yyrule 101*0c8de5b0SBaptiste Daroussin #define yyrule err_syntax10_rule 102*0c8de5b0SBaptiste Daroussin #endif /* yyrule */ 103*0c8de5b0SBaptiste Daroussin 104*0c8de5b0SBaptiste Daroussin #if YYBTYACC 105*0c8de5b0SBaptiste Daroussin 106*0c8de5b0SBaptiste Daroussin #ifndef yycindex 107*0c8de5b0SBaptiste Daroussin #define yycindex err_syntax10_cindex 108*0c8de5b0SBaptiste Daroussin #endif /* yycindex */ 109*0c8de5b0SBaptiste Daroussin 110*0c8de5b0SBaptiste Daroussin #ifndef yyctable 111*0c8de5b0SBaptiste Daroussin #define yyctable err_syntax10_ctable 112*0c8de5b0SBaptiste Daroussin #endif /* yyctable */ 113*0c8de5b0SBaptiste Daroussin 114*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 115*0c8de5b0SBaptiste Daroussin 116*0c8de5b0SBaptiste Daroussin #define YYPREFIX "err_syntax10_" 117*0c8de5b0SBaptiste Daroussin 118*0c8de5b0SBaptiste Daroussin #define YYPURE 0 119*0c8de5b0SBaptiste Daroussin 120*0c8de5b0SBaptiste Daroussin #line 2 "err_syntax10.y" 121*0c8de5b0SBaptiste Daroussin int yylex(void); 122*0c8de5b0SBaptiste Daroussin static void yyerror(const char *); 123*0c8de5b0SBaptiste Daroussin #line 124 "err_syntax10.tab.c" 124*0c8de5b0SBaptiste Daroussin 125*0c8de5b0SBaptiste Daroussin /* compatibility with bison */ 126*0c8de5b0SBaptiste Daroussin #ifdef YYPARSE_PARAM 127*0c8de5b0SBaptiste Daroussin /* compatibility with FreeBSD */ 128*0c8de5b0SBaptiste Daroussin # ifdef YYPARSE_PARAM_TYPE 129*0c8de5b0SBaptiste Daroussin # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 130*0c8de5b0SBaptiste Daroussin # else 131*0c8de5b0SBaptiste Daroussin # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 132*0c8de5b0SBaptiste Daroussin # endif 133*0c8de5b0SBaptiste Daroussin #else 134*0c8de5b0SBaptiste Daroussin # define YYPARSE_DECL() yyparse(void) 135*0c8de5b0SBaptiste Daroussin #endif 136*0c8de5b0SBaptiste Daroussin 137*0c8de5b0SBaptiste Daroussin /* Parameters sent to lex. */ 138*0c8de5b0SBaptiste Daroussin #ifdef YYLEX_PARAM 139*0c8de5b0SBaptiste Daroussin # define YYLEX_DECL() yylex(void *YYLEX_PARAM) 140*0c8de5b0SBaptiste Daroussin # define YYLEX yylex(YYLEX_PARAM) 141*0c8de5b0SBaptiste Daroussin #else 142*0c8de5b0SBaptiste Daroussin # define YYLEX_DECL() yylex(void) 143*0c8de5b0SBaptiste Daroussin # define YYLEX yylex() 144*0c8de5b0SBaptiste Daroussin #endif 145*0c8de5b0SBaptiste Daroussin 146*0c8de5b0SBaptiste Daroussin /* Parameters sent to yyerror. */ 147*0c8de5b0SBaptiste Daroussin #ifndef YYERROR_DECL 148*0c8de5b0SBaptiste Daroussin #define YYERROR_DECL() yyerror(const char *s) 149*0c8de5b0SBaptiste Daroussin #endif 150*0c8de5b0SBaptiste Daroussin #ifndef YYERROR_CALL 151*0c8de5b0SBaptiste Daroussin #define YYERROR_CALL(msg) yyerror(msg) 152*0c8de5b0SBaptiste Daroussin #endif 153*0c8de5b0SBaptiste Daroussin 154*0c8de5b0SBaptiste Daroussin extern int YYPARSE_DECL(); 155*0c8de5b0SBaptiste Daroussin 156*0c8de5b0SBaptiste Daroussin #define YYERRCODE 256 157*0c8de5b0SBaptiste Daroussin typedef short YYINT; 158*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_lhs[] = { -1, 159*0c8de5b0SBaptiste Daroussin 0, 160*0c8de5b0SBaptiste Daroussin }; 161*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_len[] = { 2, 162*0c8de5b0SBaptiste Daroussin 1, 163*0c8de5b0SBaptiste Daroussin }; 164*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_defred[] = { 0, 165*0c8de5b0SBaptiste Daroussin 1, 0, 166*0c8de5b0SBaptiste Daroussin }; 167*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_stos[] = { 0, 168*0c8de5b0SBaptiste Daroussin 256, 258, 169*0c8de5b0SBaptiste Daroussin }; 170*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_dgoto[] = { 2, 171*0c8de5b0SBaptiste Daroussin }; 172*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_sindex[] = { -256, 173*0c8de5b0SBaptiste Daroussin 0, 0, 174*0c8de5b0SBaptiste Daroussin }; 175*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_rindex[] = { 0, 176*0c8de5b0SBaptiste Daroussin 0, 0, 177*0c8de5b0SBaptiste Daroussin }; 178*0c8de5b0SBaptiste Daroussin #if YYBTYACC 179*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_cindex[] = { 0, 180*0c8de5b0SBaptiste Daroussin 0, 0, 181*0c8de5b0SBaptiste Daroussin }; 182*0c8de5b0SBaptiste Daroussin #endif 183*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_gindex[] = { 0, 184*0c8de5b0SBaptiste Daroussin }; 185*0c8de5b0SBaptiste Daroussin #define YYTABLESIZE 0 186*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_table[] = { 1, 187*0c8de5b0SBaptiste Daroussin }; 188*0c8de5b0SBaptiste Daroussin static const YYINT err_syntax10_check[] = { 256, 189*0c8de5b0SBaptiste Daroussin }; 190*0c8de5b0SBaptiste Daroussin #define YYFINAL 2 191*0c8de5b0SBaptiste Daroussin #ifndef YYDEBUG 192*0c8de5b0SBaptiste Daroussin #define YYDEBUG 0 193*0c8de5b0SBaptiste Daroussin #endif 194*0c8de5b0SBaptiste Daroussin #define YYMAXTOKEN 256 195*0c8de5b0SBaptiste Daroussin #define YYUNDFTOKEN 259 196*0c8de5b0SBaptiste Daroussin #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 197*0c8de5b0SBaptiste Daroussin #if YYDEBUG 198*0c8de5b0SBaptiste Daroussin static const char *const err_syntax10_name[] = { 199*0c8de5b0SBaptiste Daroussin 200*0c8de5b0SBaptiste Daroussin "$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 201*0c8de5b0SBaptiste Daroussin 0,"'&'",0,"'('",0,"'*'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 202*0c8de5b0SBaptiste Daroussin 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 203*0c8de5b0SBaptiste Daroussin 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 204*0c8de5b0SBaptiste Daroussin 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 205*0c8de5b0SBaptiste Daroussin 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 206*0c8de5b0SBaptiste Daroussin 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","$accept","S", 207*0c8de5b0SBaptiste Daroussin "illegal-symbol", 208*0c8de5b0SBaptiste Daroussin }; 209*0c8de5b0SBaptiste Daroussin static const char *const err_syntax10_rule[] = { 210*0c8de5b0SBaptiste Daroussin "$accept : S", 211*0c8de5b0SBaptiste Daroussin "S : error", 212*0c8de5b0SBaptiste Daroussin 213*0c8de5b0SBaptiste Daroussin }; 214*0c8de5b0SBaptiste Daroussin #endif 215*0c8de5b0SBaptiste Daroussin 216*0c8de5b0SBaptiste Daroussin int yydebug; 217*0c8de5b0SBaptiste Daroussin int yynerrs; 218*0c8de5b0SBaptiste Daroussin 219*0c8de5b0SBaptiste Daroussin int yyerrflag; 220*0c8de5b0SBaptiste Daroussin int yychar; 221*0c8de5b0SBaptiste Daroussin YYSTYPE yyval; 222*0c8de5b0SBaptiste Daroussin YYSTYPE yylval; 223*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 224*0c8de5b0SBaptiste Daroussin YYLTYPE yyloc; /* position returned by actions */ 225*0c8de5b0SBaptiste Daroussin YYLTYPE yylloc; /* position from the lexer */ 226*0c8de5b0SBaptiste Daroussin #endif 227*0c8de5b0SBaptiste Daroussin 228*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 229*0c8de5b0SBaptiste Daroussin #ifndef YYLLOC_DEFAULT 230*0c8de5b0SBaptiste Daroussin #define YYLLOC_DEFAULT(loc, rhs, n) \ 231*0c8de5b0SBaptiste Daroussin do \ 232*0c8de5b0SBaptiste Daroussin { \ 233*0c8de5b0SBaptiste Daroussin if (n == 0) \ 234*0c8de5b0SBaptiste Daroussin { \ 235*0c8de5b0SBaptiste Daroussin (loc).first_line = ((rhs)[-1]).last_line; \ 236*0c8de5b0SBaptiste Daroussin (loc).first_column = ((rhs)[-1]).last_column; \ 237*0c8de5b0SBaptiste Daroussin (loc).last_line = ((rhs)[-1]).last_line; \ 238*0c8de5b0SBaptiste Daroussin (loc).last_column = ((rhs)[-1]).last_column; \ 239*0c8de5b0SBaptiste Daroussin } \ 240*0c8de5b0SBaptiste Daroussin else \ 241*0c8de5b0SBaptiste Daroussin { \ 242*0c8de5b0SBaptiste Daroussin (loc).first_line = ((rhs)[ 0 ]).first_line; \ 243*0c8de5b0SBaptiste Daroussin (loc).first_column = ((rhs)[ 0 ]).first_column; \ 244*0c8de5b0SBaptiste Daroussin (loc).last_line = ((rhs)[n-1]).last_line; \ 245*0c8de5b0SBaptiste Daroussin (loc).last_column = ((rhs)[n-1]).last_column; \ 246*0c8de5b0SBaptiste Daroussin } \ 247*0c8de5b0SBaptiste Daroussin } while (0) 248*0c8de5b0SBaptiste Daroussin #endif /* YYLLOC_DEFAULT */ 249*0c8de5b0SBaptiste Daroussin #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 250*0c8de5b0SBaptiste Daroussin #if YYBTYACC 251*0c8de5b0SBaptiste Daroussin 252*0c8de5b0SBaptiste Daroussin #ifndef YYLVQUEUEGROWTH 253*0c8de5b0SBaptiste Daroussin #define YYLVQUEUEGROWTH 32 254*0c8de5b0SBaptiste Daroussin #endif 255*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 256*0c8de5b0SBaptiste Daroussin 257*0c8de5b0SBaptiste Daroussin /* define the initial stack-sizes */ 258*0c8de5b0SBaptiste Daroussin #ifdef YYSTACKSIZE 259*0c8de5b0SBaptiste Daroussin #undef YYMAXDEPTH 260*0c8de5b0SBaptiste Daroussin #define YYMAXDEPTH YYSTACKSIZE 261*0c8de5b0SBaptiste Daroussin #else 262*0c8de5b0SBaptiste Daroussin #ifdef YYMAXDEPTH 263*0c8de5b0SBaptiste Daroussin #define YYSTACKSIZE YYMAXDEPTH 264*0c8de5b0SBaptiste Daroussin #else 265*0c8de5b0SBaptiste Daroussin #define YYSTACKSIZE 10000 266*0c8de5b0SBaptiste Daroussin #define YYMAXDEPTH 10000 267*0c8de5b0SBaptiste Daroussin #endif 268*0c8de5b0SBaptiste Daroussin #endif 269*0c8de5b0SBaptiste Daroussin 270*0c8de5b0SBaptiste Daroussin #ifndef YYINITSTACKSIZE 271*0c8de5b0SBaptiste Daroussin #define YYINITSTACKSIZE 200 272*0c8de5b0SBaptiste Daroussin #endif 273*0c8de5b0SBaptiste Daroussin 274*0c8de5b0SBaptiste Daroussin typedef struct { 275*0c8de5b0SBaptiste Daroussin unsigned stacksize; 276*0c8de5b0SBaptiste Daroussin short *s_base; 277*0c8de5b0SBaptiste Daroussin short *s_mark; 278*0c8de5b0SBaptiste Daroussin short *s_last; 279*0c8de5b0SBaptiste Daroussin YYSTYPE *l_base; 280*0c8de5b0SBaptiste Daroussin YYSTYPE *l_mark; 281*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 282*0c8de5b0SBaptiste Daroussin YYLTYPE *p_base; 283*0c8de5b0SBaptiste Daroussin YYLTYPE *p_mark; 284*0c8de5b0SBaptiste Daroussin #endif 285*0c8de5b0SBaptiste Daroussin } YYSTACKDATA; 286*0c8de5b0SBaptiste Daroussin #if YYBTYACC 287*0c8de5b0SBaptiste Daroussin 288*0c8de5b0SBaptiste Daroussin struct YYParseState_s 289*0c8de5b0SBaptiste Daroussin { 290*0c8de5b0SBaptiste Daroussin struct YYParseState_s *save; /* Previously saved parser state */ 291*0c8de5b0SBaptiste Daroussin YYSTACKDATA yystack; /* saved parser stack */ 292*0c8de5b0SBaptiste Daroussin int state; /* saved parser state */ 293*0c8de5b0SBaptiste Daroussin int errflag; /* saved error recovery status */ 294*0c8de5b0SBaptiste Daroussin int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 295*0c8de5b0SBaptiste Daroussin YYINT ctry; /* saved index in yyctable[] for this conflict */ 296*0c8de5b0SBaptiste Daroussin }; 297*0c8de5b0SBaptiste Daroussin typedef struct YYParseState_s YYParseState; 298*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 299*0c8de5b0SBaptiste Daroussin /* variables for the parser stack */ 300*0c8de5b0SBaptiste Daroussin static YYSTACKDATA yystack; 301*0c8de5b0SBaptiste Daroussin #if YYBTYACC 302*0c8de5b0SBaptiste Daroussin 303*0c8de5b0SBaptiste Daroussin /* Current parser state */ 304*0c8de5b0SBaptiste Daroussin static YYParseState *yyps = 0; 305*0c8de5b0SBaptiste Daroussin 306*0c8de5b0SBaptiste Daroussin /* yypath != NULL: do the full parse, starting at *yypath parser state. */ 307*0c8de5b0SBaptiste Daroussin static YYParseState *yypath = 0; 308*0c8de5b0SBaptiste Daroussin 309*0c8de5b0SBaptiste Daroussin /* Base of the lexical value queue */ 310*0c8de5b0SBaptiste Daroussin static YYSTYPE *yylvals = 0; 311*0c8de5b0SBaptiste Daroussin 312*0c8de5b0SBaptiste Daroussin /* Current position at lexical value queue */ 313*0c8de5b0SBaptiste Daroussin static YYSTYPE *yylvp = 0; 314*0c8de5b0SBaptiste Daroussin 315*0c8de5b0SBaptiste Daroussin /* End position of lexical value queue */ 316*0c8de5b0SBaptiste Daroussin static YYSTYPE *yylve = 0; 317*0c8de5b0SBaptiste Daroussin 318*0c8de5b0SBaptiste Daroussin /* The last allocated position at the lexical value queue */ 319*0c8de5b0SBaptiste Daroussin static YYSTYPE *yylvlim = 0; 320*0c8de5b0SBaptiste Daroussin 321*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 322*0c8de5b0SBaptiste Daroussin /* Base of the lexical position queue */ 323*0c8de5b0SBaptiste Daroussin static YYLTYPE *yylpsns = 0; 324*0c8de5b0SBaptiste Daroussin 325*0c8de5b0SBaptiste Daroussin /* Current position at lexical position queue */ 326*0c8de5b0SBaptiste Daroussin static YYLTYPE *yylpp = 0; 327*0c8de5b0SBaptiste Daroussin 328*0c8de5b0SBaptiste Daroussin /* End position of lexical position queue */ 329*0c8de5b0SBaptiste Daroussin static YYLTYPE *yylpe = 0; 330*0c8de5b0SBaptiste Daroussin 331*0c8de5b0SBaptiste Daroussin /* The last allocated position at the lexical position queue */ 332*0c8de5b0SBaptiste Daroussin static YYLTYPE *yylplim = 0; 333*0c8de5b0SBaptiste Daroussin #endif 334*0c8de5b0SBaptiste Daroussin 335*0c8de5b0SBaptiste Daroussin /* Current position at lexical token queue */ 336*0c8de5b0SBaptiste Daroussin static short *yylexp = 0; 337*0c8de5b0SBaptiste Daroussin 338*0c8de5b0SBaptiste Daroussin static short *yylexemes = 0; 339*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 340*0c8de5b0SBaptiste Daroussin #line 12 "err_syntax10.y" 341*0c8de5b0SBaptiste Daroussin 342*0c8de5b0SBaptiste Daroussin #include <stdio.h> 343*0c8de5b0SBaptiste Daroussin 344*0c8de5b0SBaptiste Daroussin int 345*0c8de5b0SBaptiste Daroussin main(void) 346*0c8de5b0SBaptiste Daroussin { 347*0c8de5b0SBaptiste Daroussin printf("yyparse() = %d\n", yyparse()); 348*0c8de5b0SBaptiste Daroussin return 0; 349*0c8de5b0SBaptiste Daroussin } 350*0c8de5b0SBaptiste Daroussin 351*0c8de5b0SBaptiste Daroussin int 352*0c8de5b0SBaptiste Daroussin yylex(void) 353*0c8de5b0SBaptiste Daroussin { 354*0c8de5b0SBaptiste Daroussin return -1; 355*0c8de5b0SBaptiste Daroussin } 356*0c8de5b0SBaptiste Daroussin 357*0c8de5b0SBaptiste Daroussin static void 358*0c8de5b0SBaptiste Daroussin yyerror(const char* s) 359*0c8de5b0SBaptiste Daroussin { 360*0c8de5b0SBaptiste Daroussin printf("%s\n", s); 361*0c8de5b0SBaptiste Daroussin } 362*0c8de5b0SBaptiste Daroussin #line 363 "err_syntax10.tab.c" 363*0c8de5b0SBaptiste Daroussin 364*0c8de5b0SBaptiste Daroussin /* For use in generated program */ 365*0c8de5b0SBaptiste Daroussin #define yydepth (int)(yystack.s_mark - yystack.s_base) 366*0c8de5b0SBaptiste Daroussin #if YYBTYACC 367*0c8de5b0SBaptiste Daroussin #define yytrial (yyps->save) 368*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 369*0c8de5b0SBaptiste Daroussin 370*0c8de5b0SBaptiste Daroussin #if YYDEBUG 371*0c8de5b0SBaptiste Daroussin #include <stdio.h> /* needed for printf */ 372*0c8de5b0SBaptiste Daroussin #endif 373*0c8de5b0SBaptiste Daroussin 374*0c8de5b0SBaptiste Daroussin #include <stdlib.h> /* needed for malloc, etc */ 375*0c8de5b0SBaptiste Daroussin #include <string.h> /* needed for memset */ 376*0c8de5b0SBaptiste Daroussin 377*0c8de5b0SBaptiste Daroussin /* allocate initial stack or double stack size, up to YYMAXDEPTH */ 378*0c8de5b0SBaptiste Daroussin static int yygrowstack(YYSTACKDATA *data) 379*0c8de5b0SBaptiste Daroussin { 380*0c8de5b0SBaptiste Daroussin int i; 381*0c8de5b0SBaptiste Daroussin unsigned newsize; 382*0c8de5b0SBaptiste Daroussin short *newss; 383*0c8de5b0SBaptiste Daroussin YYSTYPE *newvs; 384*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 385*0c8de5b0SBaptiste Daroussin YYLTYPE *newps; 386*0c8de5b0SBaptiste Daroussin #endif 387*0c8de5b0SBaptiste Daroussin 388*0c8de5b0SBaptiste Daroussin if ((newsize = data->stacksize) == 0) 389*0c8de5b0SBaptiste Daroussin newsize = YYINITSTACKSIZE; 390*0c8de5b0SBaptiste Daroussin else if (newsize >= YYMAXDEPTH) 391*0c8de5b0SBaptiste Daroussin return YYENOMEM; 392*0c8de5b0SBaptiste Daroussin else if ((newsize *= 2) > YYMAXDEPTH) 393*0c8de5b0SBaptiste Daroussin newsize = YYMAXDEPTH; 394*0c8de5b0SBaptiste Daroussin 395*0c8de5b0SBaptiste Daroussin i = (int) (data->s_mark - data->s_base); 396*0c8de5b0SBaptiste Daroussin newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); 397*0c8de5b0SBaptiste Daroussin if (newss == 0) 398*0c8de5b0SBaptiste Daroussin return YYENOMEM; 399*0c8de5b0SBaptiste Daroussin 400*0c8de5b0SBaptiste Daroussin data->s_base = newss; 401*0c8de5b0SBaptiste Daroussin data->s_mark = newss + i; 402*0c8de5b0SBaptiste Daroussin 403*0c8de5b0SBaptiste Daroussin newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 404*0c8de5b0SBaptiste Daroussin if (newvs == 0) 405*0c8de5b0SBaptiste Daroussin return YYENOMEM; 406*0c8de5b0SBaptiste Daroussin 407*0c8de5b0SBaptiste Daroussin data->l_base = newvs; 408*0c8de5b0SBaptiste Daroussin data->l_mark = newvs + i; 409*0c8de5b0SBaptiste Daroussin 410*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 411*0c8de5b0SBaptiste Daroussin newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 412*0c8de5b0SBaptiste Daroussin if (newps == 0) 413*0c8de5b0SBaptiste Daroussin return YYENOMEM; 414*0c8de5b0SBaptiste Daroussin 415*0c8de5b0SBaptiste Daroussin data->p_base = newps; 416*0c8de5b0SBaptiste Daroussin data->p_mark = newps + i; 417*0c8de5b0SBaptiste Daroussin #endif 418*0c8de5b0SBaptiste Daroussin 419*0c8de5b0SBaptiste Daroussin data->stacksize = newsize; 420*0c8de5b0SBaptiste Daroussin data->s_last = data->s_base + newsize - 1; 421*0c8de5b0SBaptiste Daroussin 422*0c8de5b0SBaptiste Daroussin #if YYDEBUG 423*0c8de5b0SBaptiste Daroussin if (yydebug) 424*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 425*0c8de5b0SBaptiste Daroussin #endif 426*0c8de5b0SBaptiste Daroussin return 0; 427*0c8de5b0SBaptiste Daroussin } 428*0c8de5b0SBaptiste Daroussin 429*0c8de5b0SBaptiste Daroussin #if YYPURE || defined(YY_NO_LEAKS) 430*0c8de5b0SBaptiste Daroussin static void yyfreestack(YYSTACKDATA *data) 431*0c8de5b0SBaptiste Daroussin { 432*0c8de5b0SBaptiste Daroussin free(data->s_base); 433*0c8de5b0SBaptiste Daroussin free(data->l_base); 434*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 435*0c8de5b0SBaptiste Daroussin free(data->p_base); 436*0c8de5b0SBaptiste Daroussin #endif 437*0c8de5b0SBaptiste Daroussin memset(data, 0, sizeof(*data)); 438*0c8de5b0SBaptiste Daroussin } 439*0c8de5b0SBaptiste Daroussin #else 440*0c8de5b0SBaptiste Daroussin #define yyfreestack(data) /* nothing */ 441*0c8de5b0SBaptiste Daroussin #endif /* YYPURE || defined(YY_NO_LEAKS) */ 442*0c8de5b0SBaptiste Daroussin #if YYBTYACC 443*0c8de5b0SBaptiste Daroussin 444*0c8de5b0SBaptiste Daroussin static YYParseState * 445*0c8de5b0SBaptiste Daroussin yyNewState(unsigned size) 446*0c8de5b0SBaptiste Daroussin { 447*0c8de5b0SBaptiste Daroussin YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 448*0c8de5b0SBaptiste Daroussin if (p == NULL) return NULL; 449*0c8de5b0SBaptiste Daroussin 450*0c8de5b0SBaptiste Daroussin p->yystack.stacksize = size; 451*0c8de5b0SBaptiste Daroussin if (size == 0) 452*0c8de5b0SBaptiste Daroussin { 453*0c8de5b0SBaptiste Daroussin p->yystack.s_base = NULL; 454*0c8de5b0SBaptiste Daroussin p->yystack.l_base = NULL; 455*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 456*0c8de5b0SBaptiste Daroussin p->yystack.p_base = NULL; 457*0c8de5b0SBaptiste Daroussin #endif 458*0c8de5b0SBaptiste Daroussin return p; 459*0c8de5b0SBaptiste Daroussin } 460*0c8de5b0SBaptiste Daroussin p->yystack.s_base = (short *) malloc(size * sizeof(short)); 461*0c8de5b0SBaptiste Daroussin if (p->yystack.s_base == NULL) return NULL; 462*0c8de5b0SBaptiste Daroussin p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 463*0c8de5b0SBaptiste Daroussin if (p->yystack.l_base == NULL) return NULL; 464*0c8de5b0SBaptiste Daroussin memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 465*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 466*0c8de5b0SBaptiste Daroussin p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 467*0c8de5b0SBaptiste Daroussin if (p->yystack.p_base == NULL) return NULL; 468*0c8de5b0SBaptiste Daroussin memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 469*0c8de5b0SBaptiste Daroussin #endif 470*0c8de5b0SBaptiste Daroussin 471*0c8de5b0SBaptiste Daroussin return p; 472*0c8de5b0SBaptiste Daroussin } 473*0c8de5b0SBaptiste Daroussin 474*0c8de5b0SBaptiste Daroussin static void 475*0c8de5b0SBaptiste Daroussin yyFreeState(YYParseState *p) 476*0c8de5b0SBaptiste Daroussin { 477*0c8de5b0SBaptiste Daroussin yyfreestack(&p->yystack); 478*0c8de5b0SBaptiste Daroussin free(p); 479*0c8de5b0SBaptiste Daroussin } 480*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 481*0c8de5b0SBaptiste Daroussin 482*0c8de5b0SBaptiste Daroussin #define YYABORT goto yyabort 483*0c8de5b0SBaptiste Daroussin #define YYREJECT goto yyabort 484*0c8de5b0SBaptiste Daroussin #define YYACCEPT goto yyaccept 485*0c8de5b0SBaptiste Daroussin #define YYERROR goto yyerrlab 486*0c8de5b0SBaptiste Daroussin #if YYBTYACC 487*0c8de5b0SBaptiste Daroussin #define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 488*0c8de5b0SBaptiste Daroussin #define YYVALID_NESTED do { if (yyps->save && \ 489*0c8de5b0SBaptiste Daroussin yyps->save->save == 0) goto yyvalid; } while(0) 490*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 491*0c8de5b0SBaptiste Daroussin 492*0c8de5b0SBaptiste Daroussin int 493*0c8de5b0SBaptiste Daroussin YYPARSE_DECL() 494*0c8de5b0SBaptiste Daroussin { 495*0c8de5b0SBaptiste Daroussin int yym, yyn, yystate, yyresult; 496*0c8de5b0SBaptiste Daroussin #if YYBTYACC 497*0c8de5b0SBaptiste Daroussin int yynewerrflag; 498*0c8de5b0SBaptiste Daroussin YYParseState *yyerrctx = NULL; 499*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 500*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 501*0c8de5b0SBaptiste Daroussin YYLTYPE yyerror_loc_range[2]; /* position of error start & end */ 502*0c8de5b0SBaptiste Daroussin #endif 503*0c8de5b0SBaptiste Daroussin #if YYDEBUG 504*0c8de5b0SBaptiste Daroussin const char *yys; 505*0c8de5b0SBaptiste Daroussin 506*0c8de5b0SBaptiste Daroussin if ((yys = getenv("YYDEBUG")) != 0) 507*0c8de5b0SBaptiste Daroussin { 508*0c8de5b0SBaptiste Daroussin yyn = *yys; 509*0c8de5b0SBaptiste Daroussin if (yyn >= '0' && yyn <= '9') 510*0c8de5b0SBaptiste Daroussin yydebug = yyn - '0'; 511*0c8de5b0SBaptiste Daroussin } 512*0c8de5b0SBaptiste Daroussin if (yydebug) 513*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 514*0c8de5b0SBaptiste Daroussin #endif 515*0c8de5b0SBaptiste Daroussin 516*0c8de5b0SBaptiste Daroussin #if YYBTYACC 517*0c8de5b0SBaptiste Daroussin yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 518*0c8de5b0SBaptiste Daroussin yyps->save = 0; 519*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 520*0c8de5b0SBaptiste Daroussin yynerrs = 0; 521*0c8de5b0SBaptiste Daroussin yyerrflag = 0; 522*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 523*0c8de5b0SBaptiste Daroussin yystate = 0; 524*0c8de5b0SBaptiste Daroussin 525*0c8de5b0SBaptiste Daroussin #if YYPURE 526*0c8de5b0SBaptiste Daroussin memset(&yystack, 0, sizeof(yystack)); 527*0c8de5b0SBaptiste Daroussin #endif 528*0c8de5b0SBaptiste Daroussin 529*0c8de5b0SBaptiste Daroussin if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 530*0c8de5b0SBaptiste Daroussin yystack.s_mark = yystack.s_base; 531*0c8de5b0SBaptiste Daroussin yystack.l_mark = yystack.l_base; 532*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 533*0c8de5b0SBaptiste Daroussin yystack.p_mark = yystack.p_base; 534*0c8de5b0SBaptiste Daroussin #endif 535*0c8de5b0SBaptiste Daroussin yystate = 0; 536*0c8de5b0SBaptiste Daroussin *yystack.s_mark = 0; 537*0c8de5b0SBaptiste Daroussin 538*0c8de5b0SBaptiste Daroussin yyloop: 539*0c8de5b0SBaptiste Daroussin if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 540*0c8de5b0SBaptiste Daroussin if (yychar < 0) 541*0c8de5b0SBaptiste Daroussin { 542*0c8de5b0SBaptiste Daroussin #if YYBTYACC 543*0c8de5b0SBaptiste Daroussin do { 544*0c8de5b0SBaptiste Daroussin if (yylvp < yylve) 545*0c8de5b0SBaptiste Daroussin { 546*0c8de5b0SBaptiste Daroussin /* we're currently re-reading tokens */ 547*0c8de5b0SBaptiste Daroussin yylval = *yylvp++; 548*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 549*0c8de5b0SBaptiste Daroussin yylloc = *yylpp++; 550*0c8de5b0SBaptiste Daroussin #endif 551*0c8de5b0SBaptiste Daroussin yychar = *yylexp++; 552*0c8de5b0SBaptiste Daroussin break; 553*0c8de5b0SBaptiste Daroussin } 554*0c8de5b0SBaptiste Daroussin if (yyps->save) 555*0c8de5b0SBaptiste Daroussin { 556*0c8de5b0SBaptiste Daroussin /* in trial mode; save scanner results for future parse attempts */ 557*0c8de5b0SBaptiste Daroussin if (yylvp == yylvlim) 558*0c8de5b0SBaptiste Daroussin { /* Enlarge lexical value queue */ 559*0c8de5b0SBaptiste Daroussin int p = yylvp - yylvals; 560*0c8de5b0SBaptiste Daroussin int s = yylvlim - yylvals; 561*0c8de5b0SBaptiste Daroussin 562*0c8de5b0SBaptiste Daroussin s += YYLVQUEUEGROWTH; 563*0c8de5b0SBaptiste Daroussin if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem; 564*0c8de5b0SBaptiste Daroussin if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 565*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 566*0c8de5b0SBaptiste Daroussin if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 567*0c8de5b0SBaptiste Daroussin #endif 568*0c8de5b0SBaptiste Daroussin yylvp = yylve = yylvals + p; 569*0c8de5b0SBaptiste Daroussin yylvlim = yylvals + s; 570*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 571*0c8de5b0SBaptiste Daroussin yylpp = yylpe = yylpsns + p; 572*0c8de5b0SBaptiste Daroussin yylplim = yylpsns + s; 573*0c8de5b0SBaptiste Daroussin #endif 574*0c8de5b0SBaptiste Daroussin yylexp = yylexemes + p; 575*0c8de5b0SBaptiste Daroussin } 576*0c8de5b0SBaptiste Daroussin *yylexp = (short) YYLEX; 577*0c8de5b0SBaptiste Daroussin *yylvp++ = yylval; 578*0c8de5b0SBaptiste Daroussin yylve++; 579*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 580*0c8de5b0SBaptiste Daroussin *yylpp++ = yylloc; 581*0c8de5b0SBaptiste Daroussin yylpe++; 582*0c8de5b0SBaptiste Daroussin #endif 583*0c8de5b0SBaptiste Daroussin yychar = *yylexp++; 584*0c8de5b0SBaptiste Daroussin break; 585*0c8de5b0SBaptiste Daroussin } 586*0c8de5b0SBaptiste Daroussin /* normal operation, no conflict encountered */ 587*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 588*0c8de5b0SBaptiste Daroussin yychar = YYLEX; 589*0c8de5b0SBaptiste Daroussin #if YYBTYACC 590*0c8de5b0SBaptiste Daroussin } while (0); 591*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 592*0c8de5b0SBaptiste Daroussin if (yychar < 0) yychar = YYEOF; 593*0c8de5b0SBaptiste Daroussin /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 594*0c8de5b0SBaptiste Daroussin #if YYDEBUG 595*0c8de5b0SBaptiste Daroussin if (yydebug) 596*0c8de5b0SBaptiste Daroussin { 597*0c8de5b0SBaptiste Daroussin yys = yyname[YYTRANSLATE(yychar)]; 598*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 599*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate, yychar, yys); 600*0c8de5b0SBaptiste Daroussin #ifdef YYSTYPE_TOSTRING 601*0c8de5b0SBaptiste Daroussin #if YYBTYACC 602*0c8de5b0SBaptiste Daroussin if (!yytrial) 603*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 604*0c8de5b0SBaptiste Daroussin fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 605*0c8de5b0SBaptiste Daroussin #endif 606*0c8de5b0SBaptiste Daroussin fputc('\n', stderr); 607*0c8de5b0SBaptiste Daroussin } 608*0c8de5b0SBaptiste Daroussin #endif 609*0c8de5b0SBaptiste Daroussin } 610*0c8de5b0SBaptiste Daroussin #if YYBTYACC 611*0c8de5b0SBaptiste Daroussin 612*0c8de5b0SBaptiste Daroussin /* Do we have a conflict? */ 613*0c8de5b0SBaptiste Daroussin if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 614*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 615*0c8de5b0SBaptiste Daroussin { 616*0c8de5b0SBaptiste Daroussin YYINT ctry; 617*0c8de5b0SBaptiste Daroussin 618*0c8de5b0SBaptiste Daroussin if (yypath) 619*0c8de5b0SBaptiste Daroussin { 620*0c8de5b0SBaptiste Daroussin YYParseState *save; 621*0c8de5b0SBaptiste Daroussin #if YYDEBUG 622*0c8de5b0SBaptiste Daroussin if (yydebug) 623*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 624*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate); 625*0c8de5b0SBaptiste Daroussin #endif 626*0c8de5b0SBaptiste Daroussin /* Switch to the next conflict context */ 627*0c8de5b0SBaptiste Daroussin save = yypath; 628*0c8de5b0SBaptiste Daroussin yypath = save->save; 629*0c8de5b0SBaptiste Daroussin save->save = NULL; 630*0c8de5b0SBaptiste Daroussin ctry = save->ctry; 631*0c8de5b0SBaptiste Daroussin if (save->state != yystate) YYABORT; 632*0c8de5b0SBaptiste Daroussin yyFreeState(save); 633*0c8de5b0SBaptiste Daroussin 634*0c8de5b0SBaptiste Daroussin } 635*0c8de5b0SBaptiste Daroussin else 636*0c8de5b0SBaptiste Daroussin { 637*0c8de5b0SBaptiste Daroussin 638*0c8de5b0SBaptiste Daroussin /* Unresolved conflict - start/continue trial parse */ 639*0c8de5b0SBaptiste Daroussin YYParseState *save; 640*0c8de5b0SBaptiste Daroussin #if YYDEBUG 641*0c8de5b0SBaptiste Daroussin if (yydebug) 642*0c8de5b0SBaptiste Daroussin { 643*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 644*0c8de5b0SBaptiste Daroussin if (yyps->save) 645*0c8de5b0SBaptiste Daroussin fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 646*0c8de5b0SBaptiste Daroussin else 647*0c8de5b0SBaptiste Daroussin fputs("Starting trial parse.\n", stderr); 648*0c8de5b0SBaptiste Daroussin } 649*0c8de5b0SBaptiste Daroussin #endif 650*0c8de5b0SBaptiste Daroussin save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 651*0c8de5b0SBaptiste Daroussin if (save == NULL) goto yyenomem; 652*0c8de5b0SBaptiste Daroussin save->save = yyps->save; 653*0c8de5b0SBaptiste Daroussin save->state = yystate; 654*0c8de5b0SBaptiste Daroussin save->errflag = yyerrflag; 655*0c8de5b0SBaptiste Daroussin save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 656*0c8de5b0SBaptiste Daroussin memcpy (save->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 657*0c8de5b0SBaptiste Daroussin save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 658*0c8de5b0SBaptiste Daroussin memcpy (save->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 659*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 660*0c8de5b0SBaptiste Daroussin save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 661*0c8de5b0SBaptiste Daroussin memcpy (save->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 662*0c8de5b0SBaptiste Daroussin #endif 663*0c8de5b0SBaptiste Daroussin ctry = yytable[yyn]; 664*0c8de5b0SBaptiste Daroussin if (yyctable[ctry] == -1) 665*0c8de5b0SBaptiste Daroussin { 666*0c8de5b0SBaptiste Daroussin #if YYDEBUG 667*0c8de5b0SBaptiste Daroussin if (yydebug && yychar >= YYEOF) 668*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 669*0c8de5b0SBaptiste Daroussin #endif 670*0c8de5b0SBaptiste Daroussin ctry++; 671*0c8de5b0SBaptiste Daroussin } 672*0c8de5b0SBaptiste Daroussin save->ctry = ctry; 673*0c8de5b0SBaptiste Daroussin if (yyps->save == NULL) 674*0c8de5b0SBaptiste Daroussin { 675*0c8de5b0SBaptiste Daroussin /* If this is a first conflict in the stack, start saving lexemes */ 676*0c8de5b0SBaptiste Daroussin if (!yylexemes) 677*0c8de5b0SBaptiste Daroussin { 678*0c8de5b0SBaptiste Daroussin yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short)); 679*0c8de5b0SBaptiste Daroussin if (yylexemes == NULL) goto yyenomem; 680*0c8de5b0SBaptiste Daroussin yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 681*0c8de5b0SBaptiste Daroussin if (yylvals == NULL) goto yyenomem; 682*0c8de5b0SBaptiste Daroussin yylvlim = yylvals + YYLVQUEUEGROWTH; 683*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 684*0c8de5b0SBaptiste Daroussin yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 685*0c8de5b0SBaptiste Daroussin if (yylpsns == NULL) goto yyenomem; 686*0c8de5b0SBaptiste Daroussin yylplim = yylpsns + YYLVQUEUEGROWTH; 687*0c8de5b0SBaptiste Daroussin #endif 688*0c8de5b0SBaptiste Daroussin } 689*0c8de5b0SBaptiste Daroussin if (yylvp == yylve) 690*0c8de5b0SBaptiste Daroussin { 691*0c8de5b0SBaptiste Daroussin yylvp = yylve = yylvals; 692*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 693*0c8de5b0SBaptiste Daroussin yylpp = yylpe = yylpsns; 694*0c8de5b0SBaptiste Daroussin #endif 695*0c8de5b0SBaptiste Daroussin yylexp = yylexemes; 696*0c8de5b0SBaptiste Daroussin if (yychar >= YYEOF) 697*0c8de5b0SBaptiste Daroussin { 698*0c8de5b0SBaptiste Daroussin *yylve++ = yylval; 699*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 700*0c8de5b0SBaptiste Daroussin *yylpe++ = yylloc; 701*0c8de5b0SBaptiste Daroussin #endif 702*0c8de5b0SBaptiste Daroussin *yylexp = (short) yychar; 703*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 704*0c8de5b0SBaptiste Daroussin } 705*0c8de5b0SBaptiste Daroussin } 706*0c8de5b0SBaptiste Daroussin } 707*0c8de5b0SBaptiste Daroussin if (yychar >= YYEOF) 708*0c8de5b0SBaptiste Daroussin { 709*0c8de5b0SBaptiste Daroussin yylvp--; 710*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 711*0c8de5b0SBaptiste Daroussin yylpp--; 712*0c8de5b0SBaptiste Daroussin #endif 713*0c8de5b0SBaptiste Daroussin yylexp--; 714*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 715*0c8de5b0SBaptiste Daroussin } 716*0c8de5b0SBaptiste Daroussin save->lexeme = yylvp - yylvals; 717*0c8de5b0SBaptiste Daroussin yyps->save = save; 718*0c8de5b0SBaptiste Daroussin } 719*0c8de5b0SBaptiste Daroussin if (yytable[yyn] == ctry) 720*0c8de5b0SBaptiste Daroussin { 721*0c8de5b0SBaptiste Daroussin #if YYDEBUG 722*0c8de5b0SBaptiste Daroussin if (yydebug) 723*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 724*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 725*0c8de5b0SBaptiste Daroussin #endif 726*0c8de5b0SBaptiste Daroussin if (yychar < 0) 727*0c8de5b0SBaptiste Daroussin { 728*0c8de5b0SBaptiste Daroussin yylvp++; 729*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 730*0c8de5b0SBaptiste Daroussin yylpp++; 731*0c8de5b0SBaptiste Daroussin #endif 732*0c8de5b0SBaptiste Daroussin yylexp++; 733*0c8de5b0SBaptiste Daroussin } 734*0c8de5b0SBaptiste Daroussin if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 735*0c8de5b0SBaptiste Daroussin goto yyoverflow; 736*0c8de5b0SBaptiste Daroussin yystate = yyctable[ctry]; 737*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = (short) yystate; 738*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yylval; 739*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 740*0c8de5b0SBaptiste Daroussin *++yystack.p_mark = yylloc; 741*0c8de5b0SBaptiste Daroussin #endif 742*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 743*0c8de5b0SBaptiste Daroussin if (yyerrflag > 0) --yyerrflag; 744*0c8de5b0SBaptiste Daroussin goto yyloop; 745*0c8de5b0SBaptiste Daroussin } 746*0c8de5b0SBaptiste Daroussin else 747*0c8de5b0SBaptiste Daroussin { 748*0c8de5b0SBaptiste Daroussin yyn = yyctable[ctry]; 749*0c8de5b0SBaptiste Daroussin goto yyreduce; 750*0c8de5b0SBaptiste Daroussin } 751*0c8de5b0SBaptiste Daroussin } /* End of code dealing with conflicts */ 752*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 753*0c8de5b0SBaptiste Daroussin if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 754*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 755*0c8de5b0SBaptiste Daroussin { 756*0c8de5b0SBaptiste Daroussin #if YYDEBUG 757*0c8de5b0SBaptiste Daroussin if (yydebug) 758*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 759*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 760*0c8de5b0SBaptiste Daroussin #endif 761*0c8de5b0SBaptiste Daroussin if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 762*0c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 763*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = yytable[yyn]; 764*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yylval; 765*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 766*0c8de5b0SBaptiste Daroussin *++yystack.p_mark = yylloc; 767*0c8de5b0SBaptiste Daroussin #endif 768*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 769*0c8de5b0SBaptiste Daroussin if (yyerrflag > 0) --yyerrflag; 770*0c8de5b0SBaptiste Daroussin goto yyloop; 771*0c8de5b0SBaptiste Daroussin } 772*0c8de5b0SBaptiste Daroussin if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 773*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 774*0c8de5b0SBaptiste Daroussin { 775*0c8de5b0SBaptiste Daroussin yyn = yytable[yyn]; 776*0c8de5b0SBaptiste Daroussin goto yyreduce; 777*0c8de5b0SBaptiste Daroussin } 778*0c8de5b0SBaptiste Daroussin if (yyerrflag != 0) goto yyinrecovery; 779*0c8de5b0SBaptiste Daroussin #if YYBTYACC 780*0c8de5b0SBaptiste Daroussin 781*0c8de5b0SBaptiste Daroussin yynewerrflag = 1; 782*0c8de5b0SBaptiste Daroussin goto yyerrhandler; 783*0c8de5b0SBaptiste Daroussin goto yyerrlab; 784*0c8de5b0SBaptiste Daroussin 785*0c8de5b0SBaptiste Daroussin yyerrlab: 786*0c8de5b0SBaptiste Daroussin yynewerrflag = 0; 787*0c8de5b0SBaptiste Daroussin yyerrhandler: 788*0c8de5b0SBaptiste Daroussin while (yyps->save) 789*0c8de5b0SBaptiste Daroussin { 790*0c8de5b0SBaptiste Daroussin int ctry; 791*0c8de5b0SBaptiste Daroussin YYParseState *save = yyps->save; 792*0c8de5b0SBaptiste Daroussin #if YYDEBUG 793*0c8de5b0SBaptiste Daroussin if (yydebug) 794*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 795*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate, yyps->save->state, 796*0c8de5b0SBaptiste Daroussin (int)(yylvp - yylvals - yyps->save->lexeme)); 797*0c8de5b0SBaptiste Daroussin #endif 798*0c8de5b0SBaptiste Daroussin /* Memorize most forward-looking error state in case it's really an error. */ 799*0c8de5b0SBaptiste Daroussin if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 800*0c8de5b0SBaptiste Daroussin { 801*0c8de5b0SBaptiste Daroussin /* Free old saved error context state */ 802*0c8de5b0SBaptiste Daroussin if (yyerrctx) yyFreeState(yyerrctx); 803*0c8de5b0SBaptiste Daroussin /* Create and fill out new saved error context state */ 804*0c8de5b0SBaptiste Daroussin yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 805*0c8de5b0SBaptiste Daroussin if (yyerrctx == NULL) goto yyenomem; 806*0c8de5b0SBaptiste Daroussin yyerrctx->save = yyps->save; 807*0c8de5b0SBaptiste Daroussin yyerrctx->state = yystate; 808*0c8de5b0SBaptiste Daroussin yyerrctx->errflag = yyerrflag; 809*0c8de5b0SBaptiste Daroussin yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 810*0c8de5b0SBaptiste Daroussin memcpy (yyerrctx->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 811*0c8de5b0SBaptiste Daroussin yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 812*0c8de5b0SBaptiste Daroussin memcpy (yyerrctx->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 813*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 814*0c8de5b0SBaptiste Daroussin yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 815*0c8de5b0SBaptiste Daroussin memcpy (yyerrctx->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 816*0c8de5b0SBaptiste Daroussin #endif 817*0c8de5b0SBaptiste Daroussin yyerrctx->lexeme = yylvp - yylvals; 818*0c8de5b0SBaptiste Daroussin } 819*0c8de5b0SBaptiste Daroussin yylvp = yylvals + save->lexeme; 820*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 821*0c8de5b0SBaptiste Daroussin yylpp = yylpsns + save->lexeme; 822*0c8de5b0SBaptiste Daroussin #endif 823*0c8de5b0SBaptiste Daroussin yylexp = yylexemes + save->lexeme; 824*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 825*0c8de5b0SBaptiste Daroussin yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 826*0c8de5b0SBaptiste Daroussin memcpy (yystack.s_base, save->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 827*0c8de5b0SBaptiste Daroussin yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 828*0c8de5b0SBaptiste Daroussin memcpy (yystack.l_base, save->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 829*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 830*0c8de5b0SBaptiste Daroussin yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 831*0c8de5b0SBaptiste Daroussin memcpy (yystack.p_base, save->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 832*0c8de5b0SBaptiste Daroussin #endif 833*0c8de5b0SBaptiste Daroussin ctry = ++save->ctry; 834*0c8de5b0SBaptiste Daroussin yystate = save->state; 835*0c8de5b0SBaptiste Daroussin /* We tried shift, try reduce now */ 836*0c8de5b0SBaptiste Daroussin if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 837*0c8de5b0SBaptiste Daroussin yyps->save = save->save; 838*0c8de5b0SBaptiste Daroussin save->save = NULL; 839*0c8de5b0SBaptiste Daroussin yyFreeState(save); 840*0c8de5b0SBaptiste Daroussin 841*0c8de5b0SBaptiste Daroussin /* Nothing left on the stack -- error */ 842*0c8de5b0SBaptiste Daroussin if (!yyps->save) 843*0c8de5b0SBaptiste Daroussin { 844*0c8de5b0SBaptiste Daroussin #if YYDEBUG 845*0c8de5b0SBaptiste Daroussin if (yydebug) 846*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 847*0c8de5b0SBaptiste Daroussin YYPREFIX, yydepth); 848*0c8de5b0SBaptiste Daroussin #endif 849*0c8de5b0SBaptiste Daroussin /* Restore state as it was in the most forward-advanced error */ 850*0c8de5b0SBaptiste Daroussin yylvp = yylvals + yyerrctx->lexeme; 851*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 852*0c8de5b0SBaptiste Daroussin yylpp = yylpsns + yyerrctx->lexeme; 853*0c8de5b0SBaptiste Daroussin #endif 854*0c8de5b0SBaptiste Daroussin yylexp = yylexemes + yyerrctx->lexeme; 855*0c8de5b0SBaptiste Daroussin yychar = yylexp[-1]; 856*0c8de5b0SBaptiste Daroussin yylval = yylvp[-1]; 857*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 858*0c8de5b0SBaptiste Daroussin yylloc = yylpp[-1]; 859*0c8de5b0SBaptiste Daroussin #endif 860*0c8de5b0SBaptiste Daroussin yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 861*0c8de5b0SBaptiste Daroussin memcpy (yystack.s_base, yyerrctx->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 862*0c8de5b0SBaptiste Daroussin yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 863*0c8de5b0SBaptiste Daroussin memcpy (yystack.l_base, yyerrctx->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 864*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 865*0c8de5b0SBaptiste Daroussin yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 866*0c8de5b0SBaptiste Daroussin memcpy (yystack.p_base, yyerrctx->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 867*0c8de5b0SBaptiste Daroussin #endif 868*0c8de5b0SBaptiste Daroussin yystate = yyerrctx->state; 869*0c8de5b0SBaptiste Daroussin yyFreeState(yyerrctx); 870*0c8de5b0SBaptiste Daroussin yyerrctx = NULL; 871*0c8de5b0SBaptiste Daroussin } 872*0c8de5b0SBaptiste Daroussin yynewerrflag = 1; 873*0c8de5b0SBaptiste Daroussin } 874*0c8de5b0SBaptiste Daroussin if (yynewerrflag == 0) goto yyinrecovery; 875*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 876*0c8de5b0SBaptiste Daroussin 877*0c8de5b0SBaptiste Daroussin YYERROR_CALL("syntax error"); 878*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 879*0c8de5b0SBaptiste Daroussin yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */ 880*0c8de5b0SBaptiste Daroussin #endif 881*0c8de5b0SBaptiste Daroussin 882*0c8de5b0SBaptiste Daroussin #if !YYBTYACC 883*0c8de5b0SBaptiste Daroussin goto yyerrlab; 884*0c8de5b0SBaptiste Daroussin yyerrlab: 885*0c8de5b0SBaptiste Daroussin #endif 886*0c8de5b0SBaptiste Daroussin ++yynerrs; 887*0c8de5b0SBaptiste Daroussin 888*0c8de5b0SBaptiste Daroussin yyinrecovery: 889*0c8de5b0SBaptiste Daroussin if (yyerrflag < 3) 890*0c8de5b0SBaptiste Daroussin { 891*0c8de5b0SBaptiste Daroussin yyerrflag = 3; 892*0c8de5b0SBaptiste Daroussin for (;;) 893*0c8de5b0SBaptiste Daroussin { 894*0c8de5b0SBaptiste Daroussin if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 895*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 896*0c8de5b0SBaptiste Daroussin { 897*0c8de5b0SBaptiste Daroussin #if YYDEBUG 898*0c8de5b0SBaptiste Daroussin if (yydebug) 899*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 900*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 901*0c8de5b0SBaptiste Daroussin #endif 902*0c8de5b0SBaptiste Daroussin if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 903*0c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 904*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = yytable[yyn]; 905*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yylval; 906*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 907*0c8de5b0SBaptiste Daroussin /* lookahead position is error end position */ 908*0c8de5b0SBaptiste Daroussin yyerror_loc_range[1] = yylloc; 909*0c8de5b0SBaptiste Daroussin YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 910*0c8de5b0SBaptiste Daroussin *++yystack.p_mark = yyloc; 911*0c8de5b0SBaptiste Daroussin #endif 912*0c8de5b0SBaptiste Daroussin goto yyloop; 913*0c8de5b0SBaptiste Daroussin } 914*0c8de5b0SBaptiste Daroussin else 915*0c8de5b0SBaptiste Daroussin { 916*0c8de5b0SBaptiste Daroussin #if YYDEBUG 917*0c8de5b0SBaptiste Daroussin if (yydebug) 918*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 919*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, *yystack.s_mark); 920*0c8de5b0SBaptiste Daroussin #endif 921*0c8de5b0SBaptiste Daroussin if (yystack.s_mark <= yystack.s_base) goto yyabort; 922*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 923*0c8de5b0SBaptiste Daroussin /* the current TOS position is the error start position */ 924*0c8de5b0SBaptiste Daroussin yyerror_loc_range[0] = *yystack.p_mark; 925*0c8de5b0SBaptiste Daroussin #endif 926*0c8de5b0SBaptiste Daroussin #if defined(YYDESTRUCT_CALL) 927*0c8de5b0SBaptiste Daroussin #if YYBTYACC 928*0c8de5b0SBaptiste Daroussin if (!yytrial) 929*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 930*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 931*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("error: discarding state", 932*0c8de5b0SBaptiste Daroussin yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 933*0c8de5b0SBaptiste Daroussin #else 934*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("error: discarding state", 935*0c8de5b0SBaptiste Daroussin yystos[*yystack.s_mark], yystack.l_mark); 936*0c8de5b0SBaptiste Daroussin #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 937*0c8de5b0SBaptiste Daroussin #endif /* defined(YYDESTRUCT_CALL) */ 938*0c8de5b0SBaptiste Daroussin --yystack.s_mark; 939*0c8de5b0SBaptiste Daroussin --yystack.l_mark; 940*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 941*0c8de5b0SBaptiste Daroussin --yystack.p_mark; 942*0c8de5b0SBaptiste Daroussin #endif 943*0c8de5b0SBaptiste Daroussin } 944*0c8de5b0SBaptiste Daroussin } 945*0c8de5b0SBaptiste Daroussin } 946*0c8de5b0SBaptiste Daroussin else 947*0c8de5b0SBaptiste Daroussin { 948*0c8de5b0SBaptiste Daroussin if (yychar == YYEOF) goto yyabort; 949*0c8de5b0SBaptiste Daroussin #if YYDEBUG 950*0c8de5b0SBaptiste Daroussin if (yydebug) 951*0c8de5b0SBaptiste Daroussin { 952*0c8de5b0SBaptiste Daroussin yys = yyname[YYTRANSLATE(yychar)]; 953*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 954*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate, yychar, yys); 955*0c8de5b0SBaptiste Daroussin } 956*0c8de5b0SBaptiste Daroussin #endif 957*0c8de5b0SBaptiste Daroussin #if defined(YYDESTRUCT_CALL) 958*0c8de5b0SBaptiste Daroussin #if YYBTYACC 959*0c8de5b0SBaptiste Daroussin if (!yytrial) 960*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 961*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 962*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 963*0c8de5b0SBaptiste Daroussin #else 964*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 965*0c8de5b0SBaptiste Daroussin #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 966*0c8de5b0SBaptiste Daroussin #endif /* defined(YYDESTRUCT_CALL) */ 967*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 968*0c8de5b0SBaptiste Daroussin goto yyloop; 969*0c8de5b0SBaptiste Daroussin } 970*0c8de5b0SBaptiste Daroussin 971*0c8de5b0SBaptiste Daroussin yyreduce: 972*0c8de5b0SBaptiste Daroussin yym = yylen[yyn]; 973*0c8de5b0SBaptiste Daroussin #if YYDEBUG 974*0c8de5b0SBaptiste Daroussin if (yydebug) 975*0c8de5b0SBaptiste Daroussin { 976*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 977*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 978*0c8de5b0SBaptiste Daroussin #ifdef YYSTYPE_TOSTRING 979*0c8de5b0SBaptiste Daroussin #if YYBTYACC 980*0c8de5b0SBaptiste Daroussin if (!yytrial) 981*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 982*0c8de5b0SBaptiste Daroussin if (yym > 0) 983*0c8de5b0SBaptiste Daroussin { 984*0c8de5b0SBaptiste Daroussin int i; 985*0c8de5b0SBaptiste Daroussin fputc('<', stderr); 986*0c8de5b0SBaptiste Daroussin for (i = yym; i > 0; i--) 987*0c8de5b0SBaptiste Daroussin { 988*0c8de5b0SBaptiste Daroussin if (i != yym) fputs(", ", stderr); 989*0c8de5b0SBaptiste Daroussin fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 990*0c8de5b0SBaptiste Daroussin yystack.l_mark[1-i]), stderr); 991*0c8de5b0SBaptiste Daroussin } 992*0c8de5b0SBaptiste Daroussin fputc('>', stderr); 993*0c8de5b0SBaptiste Daroussin } 994*0c8de5b0SBaptiste Daroussin #endif 995*0c8de5b0SBaptiste Daroussin fputc('\n', stderr); 996*0c8de5b0SBaptiste Daroussin } 997*0c8de5b0SBaptiste Daroussin #endif 998*0c8de5b0SBaptiste Daroussin if (yym > 0) 999*0c8de5b0SBaptiste Daroussin yyval = yystack.l_mark[1-yym]; 1000*0c8de5b0SBaptiste Daroussin else 1001*0c8de5b0SBaptiste Daroussin memset(&yyval, 0, sizeof yyval); 1002*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1003*0c8de5b0SBaptiste Daroussin 1004*0c8de5b0SBaptiste Daroussin /* Perform position reduction */ 1005*0c8de5b0SBaptiste Daroussin memset(&yyloc, 0, sizeof(yyloc)); 1006*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1007*0c8de5b0SBaptiste Daroussin if (!yytrial) 1008*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1009*0c8de5b0SBaptiste Daroussin { 1010*0c8de5b0SBaptiste Daroussin YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym); 1011*0c8de5b0SBaptiste Daroussin /* just in case YYERROR is invoked within the action, save 1012*0c8de5b0SBaptiste Daroussin the start of the rhs as the error start position */ 1013*0c8de5b0SBaptiste Daroussin yyerror_loc_range[0] = yystack.p_mark[1-yym]; 1014*0c8de5b0SBaptiste Daroussin } 1015*0c8de5b0SBaptiste Daroussin #endif 1016*0c8de5b0SBaptiste Daroussin 1017*0c8de5b0SBaptiste Daroussin switch (yyn) 1018*0c8de5b0SBaptiste Daroussin { 1019*0c8de5b0SBaptiste Daroussin default: 1020*0c8de5b0SBaptiste Daroussin break; 1021*0c8de5b0SBaptiste Daroussin } 1022*0c8de5b0SBaptiste Daroussin yystack.s_mark -= yym; 1023*0c8de5b0SBaptiste Daroussin yystate = *yystack.s_mark; 1024*0c8de5b0SBaptiste Daroussin yystack.l_mark -= yym; 1025*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1026*0c8de5b0SBaptiste Daroussin yystack.p_mark -= yym; 1027*0c8de5b0SBaptiste Daroussin #endif 1028*0c8de5b0SBaptiste Daroussin yym = yylhs[yyn]; 1029*0c8de5b0SBaptiste Daroussin if (yystate == 0 && yym == 0) 1030*0c8de5b0SBaptiste Daroussin { 1031*0c8de5b0SBaptiste Daroussin #if YYDEBUG 1032*0c8de5b0SBaptiste Daroussin if (yydebug) 1033*0c8de5b0SBaptiste Daroussin { 1034*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1035*0c8de5b0SBaptiste Daroussin #ifdef YYSTYPE_TOSTRING 1036*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1037*0c8de5b0SBaptiste Daroussin if (!yytrial) 1038*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1039*0c8de5b0SBaptiste Daroussin fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 1040*0c8de5b0SBaptiste Daroussin #endif 1041*0c8de5b0SBaptiste Daroussin fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 1042*0c8de5b0SBaptiste Daroussin } 1043*0c8de5b0SBaptiste Daroussin #endif 1044*0c8de5b0SBaptiste Daroussin yystate = YYFINAL; 1045*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = YYFINAL; 1046*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yyval; 1047*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1048*0c8de5b0SBaptiste Daroussin *++yystack.p_mark = yyloc; 1049*0c8de5b0SBaptiste Daroussin #endif 1050*0c8de5b0SBaptiste Daroussin if (yychar < 0) 1051*0c8de5b0SBaptiste Daroussin { 1052*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1053*0c8de5b0SBaptiste Daroussin do { 1054*0c8de5b0SBaptiste Daroussin if (yylvp < yylve) 1055*0c8de5b0SBaptiste Daroussin { 1056*0c8de5b0SBaptiste Daroussin /* we're currently re-reading tokens */ 1057*0c8de5b0SBaptiste Daroussin yylval = *yylvp++; 1058*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1059*0c8de5b0SBaptiste Daroussin yylloc = *yylpp++; 1060*0c8de5b0SBaptiste Daroussin #endif 1061*0c8de5b0SBaptiste Daroussin yychar = *yylexp++; 1062*0c8de5b0SBaptiste Daroussin break; 1063*0c8de5b0SBaptiste Daroussin } 1064*0c8de5b0SBaptiste Daroussin if (yyps->save) 1065*0c8de5b0SBaptiste Daroussin { 1066*0c8de5b0SBaptiste Daroussin /* in trial mode; save scanner results for future parse attempts */ 1067*0c8de5b0SBaptiste Daroussin if (yylvp == yylvlim) 1068*0c8de5b0SBaptiste Daroussin { /* Enlarge lexical value queue */ 1069*0c8de5b0SBaptiste Daroussin int p = yylvp - yylvals; 1070*0c8de5b0SBaptiste Daroussin int s = yylvlim - yylvals; 1071*0c8de5b0SBaptiste Daroussin 1072*0c8de5b0SBaptiste Daroussin s += YYLVQUEUEGROWTH; 1073*0c8de5b0SBaptiste Daroussin if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) 1074*0c8de5b0SBaptiste Daroussin goto yyenomem; 1075*0c8de5b0SBaptiste Daroussin if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 1076*0c8de5b0SBaptiste Daroussin goto yyenomem; 1077*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1078*0c8de5b0SBaptiste Daroussin if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 1079*0c8de5b0SBaptiste Daroussin goto yyenomem; 1080*0c8de5b0SBaptiste Daroussin #endif 1081*0c8de5b0SBaptiste Daroussin yylvp = yylve = yylvals + p; 1082*0c8de5b0SBaptiste Daroussin yylvlim = yylvals + s; 1083*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1084*0c8de5b0SBaptiste Daroussin yylpp = yylpe = yylpsns + p; 1085*0c8de5b0SBaptiste Daroussin yylplim = yylpsns + s; 1086*0c8de5b0SBaptiste Daroussin #endif 1087*0c8de5b0SBaptiste Daroussin yylexp = yylexemes + p; 1088*0c8de5b0SBaptiste Daroussin } 1089*0c8de5b0SBaptiste Daroussin *yylexp = (short) YYLEX; 1090*0c8de5b0SBaptiste Daroussin *yylvp++ = yylval; 1091*0c8de5b0SBaptiste Daroussin yylve++; 1092*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1093*0c8de5b0SBaptiste Daroussin *yylpp++ = yylloc; 1094*0c8de5b0SBaptiste Daroussin yylpe++; 1095*0c8de5b0SBaptiste Daroussin #endif 1096*0c8de5b0SBaptiste Daroussin yychar = *yylexp++; 1097*0c8de5b0SBaptiste Daroussin break; 1098*0c8de5b0SBaptiste Daroussin } 1099*0c8de5b0SBaptiste Daroussin /* normal operation, no conflict encountered */ 1100*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1101*0c8de5b0SBaptiste Daroussin yychar = YYLEX; 1102*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1103*0c8de5b0SBaptiste Daroussin } while (0); 1104*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1105*0c8de5b0SBaptiste Daroussin if (yychar < 0) yychar = YYEOF; 1106*0c8de5b0SBaptiste Daroussin /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */ 1107*0c8de5b0SBaptiste Daroussin #if YYDEBUG 1108*0c8de5b0SBaptiste Daroussin if (yydebug) 1109*0c8de5b0SBaptiste Daroussin { 1110*0c8de5b0SBaptiste Daroussin yys = yyname[YYTRANSLATE(yychar)]; 1111*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n", 1112*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 1113*0c8de5b0SBaptiste Daroussin } 1114*0c8de5b0SBaptiste Daroussin #endif 1115*0c8de5b0SBaptiste Daroussin } 1116*0c8de5b0SBaptiste Daroussin if (yychar == YYEOF) goto yyaccept; 1117*0c8de5b0SBaptiste Daroussin goto yyloop; 1118*0c8de5b0SBaptiste Daroussin } 1119*0c8de5b0SBaptiste Daroussin if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 1120*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 1121*0c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 1122*0c8de5b0SBaptiste Daroussin else 1123*0c8de5b0SBaptiste Daroussin yystate = yydgoto[yym]; 1124*0c8de5b0SBaptiste Daroussin #if YYDEBUG 1125*0c8de5b0SBaptiste Daroussin if (yydebug) 1126*0c8de5b0SBaptiste Daroussin { 1127*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 1128*0c8de5b0SBaptiste Daroussin #ifdef YYSTYPE_TOSTRING 1129*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1130*0c8de5b0SBaptiste Daroussin if (!yytrial) 1131*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1132*0c8de5b0SBaptiste Daroussin fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 1133*0c8de5b0SBaptiste Daroussin #endif 1134*0c8de5b0SBaptiste Daroussin fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 1135*0c8de5b0SBaptiste Daroussin } 1136*0c8de5b0SBaptiste Daroussin #endif 1137*0c8de5b0SBaptiste Daroussin if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1138*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = (short) yystate; 1139*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yyval; 1140*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1141*0c8de5b0SBaptiste Daroussin *++yystack.p_mark = yyloc; 1142*0c8de5b0SBaptiste Daroussin #endif 1143*0c8de5b0SBaptiste Daroussin goto yyloop; 1144*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1145*0c8de5b0SBaptiste Daroussin 1146*0c8de5b0SBaptiste Daroussin /* Reduction declares that this path is valid. Set yypath and do a full parse */ 1147*0c8de5b0SBaptiste Daroussin yyvalid: 1148*0c8de5b0SBaptiste Daroussin if (yypath) YYABORT; 1149*0c8de5b0SBaptiste Daroussin while (yyps->save) 1150*0c8de5b0SBaptiste Daroussin { 1151*0c8de5b0SBaptiste Daroussin YYParseState *save = yyps->save; 1152*0c8de5b0SBaptiste Daroussin yyps->save = save->save; 1153*0c8de5b0SBaptiste Daroussin save->save = yypath; 1154*0c8de5b0SBaptiste Daroussin yypath = save; 1155*0c8de5b0SBaptiste Daroussin } 1156*0c8de5b0SBaptiste Daroussin #if YYDEBUG 1157*0c8de5b0SBaptiste Daroussin if (yydebug) 1158*0c8de5b0SBaptiste Daroussin fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 1159*0c8de5b0SBaptiste Daroussin YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 1160*0c8de5b0SBaptiste Daroussin #endif 1161*0c8de5b0SBaptiste Daroussin if (yyerrctx) 1162*0c8de5b0SBaptiste Daroussin { 1163*0c8de5b0SBaptiste Daroussin yyFreeState(yyerrctx); 1164*0c8de5b0SBaptiste Daroussin yyerrctx = NULL; 1165*0c8de5b0SBaptiste Daroussin } 1166*0c8de5b0SBaptiste Daroussin yylvp = yylvals + yypath->lexeme; 1167*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1168*0c8de5b0SBaptiste Daroussin yylpp = yylpsns + yypath->lexeme; 1169*0c8de5b0SBaptiste Daroussin #endif 1170*0c8de5b0SBaptiste Daroussin yylexp = yylexemes + yypath->lexeme; 1171*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 1172*0c8de5b0SBaptiste Daroussin yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 1173*0c8de5b0SBaptiste Daroussin memcpy (yystack.s_base, yypath->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short)); 1174*0c8de5b0SBaptiste Daroussin yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 1175*0c8de5b0SBaptiste Daroussin memcpy (yystack.l_base, yypath->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 1176*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1177*0c8de5b0SBaptiste Daroussin yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 1178*0c8de5b0SBaptiste Daroussin memcpy (yystack.p_base, yypath->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 1179*0c8de5b0SBaptiste Daroussin #endif 1180*0c8de5b0SBaptiste Daroussin yystate = yypath->state; 1181*0c8de5b0SBaptiste Daroussin goto yyloop; 1182*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1183*0c8de5b0SBaptiste Daroussin 1184*0c8de5b0SBaptiste Daroussin yyoverflow: 1185*0c8de5b0SBaptiste Daroussin YYERROR_CALL("yacc stack overflow"); 1186*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1187*0c8de5b0SBaptiste Daroussin goto yyabort_nomem; 1188*0c8de5b0SBaptiste Daroussin yyenomem: 1189*0c8de5b0SBaptiste Daroussin YYERROR_CALL("memory exhausted"); 1190*0c8de5b0SBaptiste Daroussin yyabort_nomem: 1191*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1192*0c8de5b0SBaptiste Daroussin yyresult = 2; 1193*0c8de5b0SBaptiste Daroussin goto yyreturn; 1194*0c8de5b0SBaptiste Daroussin 1195*0c8de5b0SBaptiste Daroussin yyabort: 1196*0c8de5b0SBaptiste Daroussin yyresult = 1; 1197*0c8de5b0SBaptiste Daroussin goto yyreturn; 1198*0c8de5b0SBaptiste Daroussin 1199*0c8de5b0SBaptiste Daroussin yyaccept: 1200*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1201*0c8de5b0SBaptiste Daroussin if (yyps->save) goto yyvalid; 1202*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1203*0c8de5b0SBaptiste Daroussin yyresult = 0; 1204*0c8de5b0SBaptiste Daroussin 1205*0c8de5b0SBaptiste Daroussin yyreturn: 1206*0c8de5b0SBaptiste Daroussin #if defined(YYDESTRUCT_CALL) 1207*0c8de5b0SBaptiste Daroussin if (yychar != YYEOF && yychar != YYEMPTY) 1208*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1209*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 1210*0c8de5b0SBaptiste Daroussin #else 1211*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 1212*0c8de5b0SBaptiste Daroussin #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1213*0c8de5b0SBaptiste Daroussin 1214*0c8de5b0SBaptiste Daroussin { 1215*0c8de5b0SBaptiste Daroussin YYSTYPE *pv; 1216*0c8de5b0SBaptiste Daroussin #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1217*0c8de5b0SBaptiste Daroussin YYLTYPE *pp; 1218*0c8de5b0SBaptiste Daroussin 1219*0c8de5b0SBaptiste Daroussin for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 1220*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("cleanup: discarding state", 1221*0c8de5b0SBaptiste Daroussin yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 1222*0c8de5b0SBaptiste Daroussin #else 1223*0c8de5b0SBaptiste Daroussin for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 1224*0c8de5b0SBaptiste Daroussin YYDESTRUCT_CALL("cleanup: discarding state", 1225*0c8de5b0SBaptiste Daroussin yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 1226*0c8de5b0SBaptiste Daroussin #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 1227*0c8de5b0SBaptiste Daroussin } 1228*0c8de5b0SBaptiste Daroussin #endif /* defined(YYDESTRUCT_CALL) */ 1229*0c8de5b0SBaptiste Daroussin 1230*0c8de5b0SBaptiste Daroussin #if YYBTYACC 1231*0c8de5b0SBaptiste Daroussin if (yyerrctx) 1232*0c8de5b0SBaptiste Daroussin { 1233*0c8de5b0SBaptiste Daroussin yyFreeState(yyerrctx); 1234*0c8de5b0SBaptiste Daroussin yyerrctx = NULL; 1235*0c8de5b0SBaptiste Daroussin } 1236*0c8de5b0SBaptiste Daroussin while (yyps) 1237*0c8de5b0SBaptiste Daroussin { 1238*0c8de5b0SBaptiste Daroussin YYParseState *save = yyps; 1239*0c8de5b0SBaptiste Daroussin yyps = save->save; 1240*0c8de5b0SBaptiste Daroussin save->save = NULL; 1241*0c8de5b0SBaptiste Daroussin yyFreeState(save); 1242*0c8de5b0SBaptiste Daroussin } 1243*0c8de5b0SBaptiste Daroussin while (yypath) 1244*0c8de5b0SBaptiste Daroussin { 1245*0c8de5b0SBaptiste Daroussin YYParseState *save = yypath; 1246*0c8de5b0SBaptiste Daroussin yypath = save->save; 1247*0c8de5b0SBaptiste Daroussin save->save = NULL; 1248*0c8de5b0SBaptiste Daroussin yyFreeState(save); 1249*0c8de5b0SBaptiste Daroussin } 1250*0c8de5b0SBaptiste Daroussin #endif /* YYBTYACC */ 1251*0c8de5b0SBaptiste Daroussin yyfreestack(&yystack); 1252*0c8de5b0SBaptiste Daroussin return (yyresult); 1253*0c8de5b0SBaptiste Daroussin } 1254