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