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 17*0c8de5b0SBaptiste Daroussin #ifndef yyparse 18*0c8de5b0SBaptiste Daroussin #define yyparse error_parse 19*0c8de5b0SBaptiste Daroussin #endif /* yyparse */ 20*0c8de5b0SBaptiste Daroussin 21*0c8de5b0SBaptiste Daroussin #ifndef yylex 22*0c8de5b0SBaptiste Daroussin #define yylex error_lex 23*0c8de5b0SBaptiste Daroussin #endif /* yylex */ 24*0c8de5b0SBaptiste Daroussin 25*0c8de5b0SBaptiste Daroussin #ifndef yyerror 26*0c8de5b0SBaptiste Daroussin #define yyerror error_error 27*0c8de5b0SBaptiste Daroussin #endif /* yyerror */ 28*0c8de5b0SBaptiste Daroussin 29*0c8de5b0SBaptiste Daroussin #ifndef yychar 30*0c8de5b0SBaptiste Daroussin #define yychar error_char 31*0c8de5b0SBaptiste Daroussin #endif /* yychar */ 32*0c8de5b0SBaptiste Daroussin 33*0c8de5b0SBaptiste Daroussin #ifndef yyval 34*0c8de5b0SBaptiste Daroussin #define yyval error_val 35*0c8de5b0SBaptiste Daroussin #endif /* yyval */ 36*0c8de5b0SBaptiste Daroussin 37*0c8de5b0SBaptiste Daroussin #ifndef yylval 38*0c8de5b0SBaptiste Daroussin #define yylval error_lval 39*0c8de5b0SBaptiste Daroussin #endif /* yylval */ 40*0c8de5b0SBaptiste Daroussin 41*0c8de5b0SBaptiste Daroussin #ifndef yydebug 42*0c8de5b0SBaptiste Daroussin #define yydebug error_debug 43*0c8de5b0SBaptiste Daroussin #endif /* yydebug */ 44*0c8de5b0SBaptiste Daroussin 45*0c8de5b0SBaptiste Daroussin #ifndef yynerrs 46*0c8de5b0SBaptiste Daroussin #define yynerrs error_nerrs 47*0c8de5b0SBaptiste Daroussin #endif /* yynerrs */ 48*0c8de5b0SBaptiste Daroussin 49*0c8de5b0SBaptiste Daroussin #ifndef yyerrflag 50*0c8de5b0SBaptiste Daroussin #define yyerrflag error_errflag 51*0c8de5b0SBaptiste Daroussin #endif /* yyerrflag */ 52*0c8de5b0SBaptiste Daroussin 53*0c8de5b0SBaptiste Daroussin #ifndef yylhs 54*0c8de5b0SBaptiste Daroussin #define yylhs error_lhs 55*0c8de5b0SBaptiste Daroussin #endif /* yylhs */ 56*0c8de5b0SBaptiste Daroussin 57*0c8de5b0SBaptiste Daroussin #ifndef yylen 58*0c8de5b0SBaptiste Daroussin #define yylen error_len 59*0c8de5b0SBaptiste Daroussin #endif /* yylen */ 60*0c8de5b0SBaptiste Daroussin 61*0c8de5b0SBaptiste Daroussin #ifndef yydefred 62*0c8de5b0SBaptiste Daroussin #define yydefred error_defred 63*0c8de5b0SBaptiste Daroussin #endif /* yydefred */ 64*0c8de5b0SBaptiste Daroussin 65*0c8de5b0SBaptiste Daroussin #ifndef yydgoto 66*0c8de5b0SBaptiste Daroussin #define yydgoto error_dgoto 67*0c8de5b0SBaptiste Daroussin #endif /* yydgoto */ 68*0c8de5b0SBaptiste Daroussin 69*0c8de5b0SBaptiste Daroussin #ifndef yysindex 70*0c8de5b0SBaptiste Daroussin #define yysindex error_sindex 71*0c8de5b0SBaptiste Daroussin #endif /* yysindex */ 72*0c8de5b0SBaptiste Daroussin 73*0c8de5b0SBaptiste Daroussin #ifndef yyrindex 74*0c8de5b0SBaptiste Daroussin #define yyrindex error_rindex 75*0c8de5b0SBaptiste Daroussin #endif /* yyrindex */ 76*0c8de5b0SBaptiste Daroussin 77*0c8de5b0SBaptiste Daroussin #ifndef yygindex 78*0c8de5b0SBaptiste Daroussin #define yygindex error_gindex 79*0c8de5b0SBaptiste Daroussin #endif /* yygindex */ 80*0c8de5b0SBaptiste Daroussin 81*0c8de5b0SBaptiste Daroussin #ifndef yytable 82*0c8de5b0SBaptiste Daroussin #define yytable error_table 83*0c8de5b0SBaptiste Daroussin #endif /* yytable */ 84*0c8de5b0SBaptiste Daroussin 85*0c8de5b0SBaptiste Daroussin #ifndef yycheck 86*0c8de5b0SBaptiste Daroussin #define yycheck error_check 87*0c8de5b0SBaptiste Daroussin #endif /* yycheck */ 88*0c8de5b0SBaptiste Daroussin 89*0c8de5b0SBaptiste Daroussin #ifndef yyname 90*0c8de5b0SBaptiste Daroussin #define yyname error_name 91*0c8de5b0SBaptiste Daroussin #endif /* yyname */ 92*0c8de5b0SBaptiste Daroussin 93*0c8de5b0SBaptiste Daroussin #ifndef yyrule 94*0c8de5b0SBaptiste Daroussin #define yyrule error_rule 95*0c8de5b0SBaptiste Daroussin #endif /* yyrule */ 96*0c8de5b0SBaptiste Daroussin #define YYPREFIX "error_" 97*0c8de5b0SBaptiste Daroussin 98*0c8de5b0SBaptiste Daroussin #define YYPURE 0 99*0c8de5b0SBaptiste Daroussin 100*0c8de5b0SBaptiste Daroussin #line 2 "code_error.y" 101*0c8de5b0SBaptiste Daroussin 102*0c8de5b0SBaptiste Daroussin #ifdef YYBISON 103*0c8de5b0SBaptiste Daroussin int yylex(void); 104*0c8de5b0SBaptiste Daroussin static void yyerror(const char *); 105*0c8de5b0SBaptiste Daroussin #endif 106*0c8de5b0SBaptiste Daroussin 107*0c8de5b0SBaptiste Daroussin #line 108 "code_error.code.c" 108*0c8de5b0SBaptiste Daroussin 109*0c8de5b0SBaptiste Daroussin #if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 110*0c8de5b0SBaptiste Daroussin /* Default: YYSTYPE is the semantic value type. */ 111*0c8de5b0SBaptiste Daroussin typedef int YYSTYPE; 112*0c8de5b0SBaptiste Daroussin # define YYSTYPE_IS_DECLARED 1 113*0c8de5b0SBaptiste Daroussin #endif 114*0c8de5b0SBaptiste Daroussin 115*0c8de5b0SBaptiste Daroussin /* compatibility with bison */ 116*0c8de5b0SBaptiste Daroussin #ifdef YYPARSE_PARAM 117*0c8de5b0SBaptiste Daroussin /* compatibility with FreeBSD */ 118*0c8de5b0SBaptiste Daroussin # ifdef YYPARSE_PARAM_TYPE 119*0c8de5b0SBaptiste Daroussin # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 120*0c8de5b0SBaptiste Daroussin # else 121*0c8de5b0SBaptiste Daroussin # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 122*0c8de5b0SBaptiste Daroussin # endif 123*0c8de5b0SBaptiste Daroussin #else 124*0c8de5b0SBaptiste Daroussin # define YYPARSE_DECL() yyparse(void) 125*0c8de5b0SBaptiste Daroussin #endif 126*0c8de5b0SBaptiste Daroussin 127*0c8de5b0SBaptiste Daroussin /* Parameters sent to lex. */ 128*0c8de5b0SBaptiste Daroussin #ifdef YYLEX_PARAM 129*0c8de5b0SBaptiste Daroussin # define YYLEX_DECL() yylex(void *YYLEX_PARAM) 130*0c8de5b0SBaptiste Daroussin # define YYLEX yylex(YYLEX_PARAM) 131*0c8de5b0SBaptiste Daroussin #else 132*0c8de5b0SBaptiste Daroussin # define YYLEX_DECL() yylex(void) 133*0c8de5b0SBaptiste Daroussin # define YYLEX yylex() 134*0c8de5b0SBaptiste Daroussin #endif 135*0c8de5b0SBaptiste Daroussin 136*0c8de5b0SBaptiste Daroussin /* Parameters sent to yyerror. */ 137*0c8de5b0SBaptiste Daroussin #ifndef YYERROR_DECL 138*0c8de5b0SBaptiste Daroussin #define YYERROR_DECL() yyerror(const char *s) 139*0c8de5b0SBaptiste Daroussin #endif 140*0c8de5b0SBaptiste Daroussin #ifndef YYERROR_CALL 141*0c8de5b0SBaptiste Daroussin #define YYERROR_CALL(msg) yyerror(msg) 142*0c8de5b0SBaptiste Daroussin #endif 143*0c8de5b0SBaptiste Daroussin 144*0c8de5b0SBaptiste Daroussin #define YYERRCODE 256 145*0c8de5b0SBaptiste Daroussin #define YYTABLESIZE 0 146*0c8de5b0SBaptiste Daroussin #define YYFINAL 2 147*0c8de5b0SBaptiste Daroussin #ifndef YYDEBUG 148*0c8de5b0SBaptiste Daroussin #define YYDEBUG 0 149*0c8de5b0SBaptiste Daroussin #endif 150*0c8de5b0SBaptiste Daroussin #define YYMAXTOKEN 256 151*0c8de5b0SBaptiste Daroussin #define YYUNDFTOKEN 259 152*0c8de5b0SBaptiste Daroussin #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 153*0c8de5b0SBaptiste Daroussin 154*0c8de5b0SBaptiste Daroussin extern int YYPARSE_DECL(); 155*0c8de5b0SBaptiste Daroussin typedef short YYINT; 156*0c8de5b0SBaptiste Daroussin extern YYINT yylhs[]; 157*0c8de5b0SBaptiste Daroussin extern YYINT yylen[]; 158*0c8de5b0SBaptiste Daroussin extern YYINT yydefred[]; 159*0c8de5b0SBaptiste Daroussin extern YYINT yydgoto[]; 160*0c8de5b0SBaptiste Daroussin extern YYINT yysindex[]; 161*0c8de5b0SBaptiste Daroussin extern YYINT yyrindex[]; 162*0c8de5b0SBaptiste Daroussin extern YYINT yygindex[]; 163*0c8de5b0SBaptiste Daroussin extern YYINT yytable[]; 164*0c8de5b0SBaptiste Daroussin extern YYINT yycheck[]; 165*0c8de5b0SBaptiste Daroussin 166*0c8de5b0SBaptiste Daroussin #if YYDEBUG 167*0c8de5b0SBaptiste Daroussin extern char *yyname[]; 168*0c8de5b0SBaptiste Daroussin extern char *yyrule[]; 169*0c8de5b0SBaptiste Daroussin #endif 170*0c8de5b0SBaptiste Daroussin 171*0c8de5b0SBaptiste Daroussin int yydebug; 172*0c8de5b0SBaptiste Daroussin int yynerrs; 173*0c8de5b0SBaptiste Daroussin 174*0c8de5b0SBaptiste Daroussin int yyerrflag; 175*0c8de5b0SBaptiste Daroussin int yychar; 176*0c8de5b0SBaptiste Daroussin YYSTYPE yyval; 177*0c8de5b0SBaptiste Daroussin YYSTYPE yylval; 178*0c8de5b0SBaptiste Daroussin 179*0c8de5b0SBaptiste Daroussin /* define the initial stack-sizes */ 180*0c8de5b0SBaptiste Daroussin #ifdef YYSTACKSIZE 181*0c8de5b0SBaptiste Daroussin #undef YYMAXDEPTH 182*0c8de5b0SBaptiste Daroussin #define YYMAXDEPTH YYSTACKSIZE 183*0c8de5b0SBaptiste Daroussin #else 184*0c8de5b0SBaptiste Daroussin #ifdef YYMAXDEPTH 185*0c8de5b0SBaptiste Daroussin #define YYSTACKSIZE YYMAXDEPTH 186*0c8de5b0SBaptiste Daroussin #else 187*0c8de5b0SBaptiste Daroussin #define YYSTACKSIZE 10000 188*0c8de5b0SBaptiste Daroussin #define YYMAXDEPTH 10000 189*0c8de5b0SBaptiste Daroussin #endif 190*0c8de5b0SBaptiste Daroussin #endif 191*0c8de5b0SBaptiste Daroussin 192*0c8de5b0SBaptiste Daroussin #define YYINITSTACKSIZE 200 193*0c8de5b0SBaptiste Daroussin 194*0c8de5b0SBaptiste Daroussin typedef struct { 195*0c8de5b0SBaptiste Daroussin unsigned stacksize; 196*0c8de5b0SBaptiste Daroussin YYINT *s_base; 197*0c8de5b0SBaptiste Daroussin YYINT *s_mark; 198*0c8de5b0SBaptiste Daroussin YYINT *s_last; 199*0c8de5b0SBaptiste Daroussin YYSTYPE *l_base; 200*0c8de5b0SBaptiste Daroussin YYSTYPE *l_mark; 201*0c8de5b0SBaptiste Daroussin } YYSTACKDATA; 202*0c8de5b0SBaptiste Daroussin /* variables for the parser stack */ 203*0c8de5b0SBaptiste Daroussin static YYSTACKDATA yystack; 204*0c8de5b0SBaptiste Daroussin #line 12 "code_error.y" 205*0c8de5b0SBaptiste Daroussin 206*0c8de5b0SBaptiste Daroussin #include <stdio.h> 207*0c8de5b0SBaptiste Daroussin 208*0c8de5b0SBaptiste Daroussin #ifdef YYBYACC 209*0c8de5b0SBaptiste Daroussin extern int YYLEX_DECL(); 210*0c8de5b0SBaptiste Daroussin #endif 211*0c8de5b0SBaptiste Daroussin 212*0c8de5b0SBaptiste Daroussin int 213*0c8de5b0SBaptiste Daroussin main(void) 214*0c8de5b0SBaptiste Daroussin { 215*0c8de5b0SBaptiste Daroussin printf("yyparse() = %d\n", yyparse()); 216*0c8de5b0SBaptiste Daroussin return 0; 217*0c8de5b0SBaptiste Daroussin } 218*0c8de5b0SBaptiste Daroussin 219*0c8de5b0SBaptiste Daroussin int 220*0c8de5b0SBaptiste Daroussin yylex(void) 221*0c8de5b0SBaptiste Daroussin { 222*0c8de5b0SBaptiste Daroussin return -1; 223*0c8de5b0SBaptiste Daroussin } 224*0c8de5b0SBaptiste Daroussin 225*0c8de5b0SBaptiste Daroussin static void 226*0c8de5b0SBaptiste Daroussin yyerror(const char* s) 227*0c8de5b0SBaptiste Daroussin { 228*0c8de5b0SBaptiste Daroussin printf("%s\n", s); 229*0c8de5b0SBaptiste Daroussin } 230*0c8de5b0SBaptiste Daroussin #line 231 "code_error.code.c" 231*0c8de5b0SBaptiste Daroussin 232*0c8de5b0SBaptiste Daroussin #if YYDEBUG 233*0c8de5b0SBaptiste Daroussin #include <stdio.h> /* needed for printf */ 234*0c8de5b0SBaptiste Daroussin #endif 235*0c8de5b0SBaptiste Daroussin 236*0c8de5b0SBaptiste Daroussin #include <stdlib.h> /* needed for malloc, etc */ 237*0c8de5b0SBaptiste Daroussin #include <string.h> /* needed for memset */ 238*0c8de5b0SBaptiste Daroussin 239*0c8de5b0SBaptiste Daroussin /* allocate initial stack or double stack size, up to YYMAXDEPTH */ 240*0c8de5b0SBaptiste Daroussin static int yygrowstack(YYSTACKDATA *data) 241*0c8de5b0SBaptiste Daroussin { 242*0c8de5b0SBaptiste Daroussin int i; 243*0c8de5b0SBaptiste Daroussin unsigned newsize; 244*0c8de5b0SBaptiste Daroussin YYINT *newss; 245*0c8de5b0SBaptiste Daroussin YYSTYPE *newvs; 246*0c8de5b0SBaptiste Daroussin 247*0c8de5b0SBaptiste Daroussin if ((newsize = data->stacksize) == 0) 248*0c8de5b0SBaptiste Daroussin newsize = YYINITSTACKSIZE; 249*0c8de5b0SBaptiste Daroussin else if (newsize >= YYMAXDEPTH) 250*0c8de5b0SBaptiste Daroussin return YYENOMEM; 251*0c8de5b0SBaptiste Daroussin else if ((newsize *= 2) > YYMAXDEPTH) 252*0c8de5b0SBaptiste Daroussin newsize = YYMAXDEPTH; 253*0c8de5b0SBaptiste Daroussin 254*0c8de5b0SBaptiste Daroussin i = (int) (data->s_mark - data->s_base); 255*0c8de5b0SBaptiste Daroussin newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 256*0c8de5b0SBaptiste Daroussin if (newss == 0) 257*0c8de5b0SBaptiste Daroussin return YYENOMEM; 258*0c8de5b0SBaptiste Daroussin 259*0c8de5b0SBaptiste Daroussin data->s_base = newss; 260*0c8de5b0SBaptiste Daroussin data->s_mark = newss + i; 261*0c8de5b0SBaptiste Daroussin 262*0c8de5b0SBaptiste Daroussin newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 263*0c8de5b0SBaptiste Daroussin if (newvs == 0) 264*0c8de5b0SBaptiste Daroussin return YYENOMEM; 265*0c8de5b0SBaptiste Daroussin 266*0c8de5b0SBaptiste Daroussin data->l_base = newvs; 267*0c8de5b0SBaptiste Daroussin data->l_mark = newvs + i; 268*0c8de5b0SBaptiste Daroussin 269*0c8de5b0SBaptiste Daroussin data->stacksize = newsize; 270*0c8de5b0SBaptiste Daroussin data->s_last = data->s_base + newsize - 1; 271*0c8de5b0SBaptiste Daroussin return 0; 272*0c8de5b0SBaptiste Daroussin } 273*0c8de5b0SBaptiste Daroussin 274*0c8de5b0SBaptiste Daroussin #if YYPURE || defined(YY_NO_LEAKS) 275*0c8de5b0SBaptiste Daroussin static void yyfreestack(YYSTACKDATA *data) 276*0c8de5b0SBaptiste Daroussin { 277*0c8de5b0SBaptiste Daroussin free(data->s_base); 278*0c8de5b0SBaptiste Daroussin free(data->l_base); 279*0c8de5b0SBaptiste Daroussin memset(data, 0, sizeof(*data)); 280*0c8de5b0SBaptiste Daroussin } 281*0c8de5b0SBaptiste Daroussin #else 282*0c8de5b0SBaptiste Daroussin #define yyfreestack(data) /* nothing */ 283*0c8de5b0SBaptiste Daroussin #endif 284*0c8de5b0SBaptiste Daroussin 285*0c8de5b0SBaptiste Daroussin #define YYABORT goto yyabort 286*0c8de5b0SBaptiste Daroussin #define YYREJECT goto yyabort 287*0c8de5b0SBaptiste Daroussin #define YYACCEPT goto yyaccept 288*0c8de5b0SBaptiste Daroussin #define YYERROR goto yyerrlab 289*0c8de5b0SBaptiste Daroussin 290*0c8de5b0SBaptiste Daroussin int 291*0c8de5b0SBaptiste Daroussin YYPARSE_DECL() 292*0c8de5b0SBaptiste Daroussin { 293*0c8de5b0SBaptiste Daroussin int yym, yyn, yystate; 294*0c8de5b0SBaptiste Daroussin #if YYDEBUG 295*0c8de5b0SBaptiste Daroussin const char *yys; 296*0c8de5b0SBaptiste Daroussin 297*0c8de5b0SBaptiste Daroussin if ((yys = getenv("YYDEBUG")) != 0) 298*0c8de5b0SBaptiste Daroussin { 299*0c8de5b0SBaptiste Daroussin yyn = *yys; 300*0c8de5b0SBaptiste Daroussin if (yyn >= '0' && yyn <= '9') 301*0c8de5b0SBaptiste Daroussin yydebug = yyn - '0'; 302*0c8de5b0SBaptiste Daroussin } 303*0c8de5b0SBaptiste Daroussin #endif 304*0c8de5b0SBaptiste Daroussin 305*0c8de5b0SBaptiste Daroussin yynerrs = 0; 306*0c8de5b0SBaptiste Daroussin yyerrflag = 0; 307*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 308*0c8de5b0SBaptiste Daroussin yystate = 0; 309*0c8de5b0SBaptiste Daroussin 310*0c8de5b0SBaptiste Daroussin #if YYPURE 311*0c8de5b0SBaptiste Daroussin memset(&yystack, 0, sizeof(yystack)); 312*0c8de5b0SBaptiste Daroussin #endif 313*0c8de5b0SBaptiste Daroussin 314*0c8de5b0SBaptiste Daroussin if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 315*0c8de5b0SBaptiste Daroussin yystack.s_mark = yystack.s_base; 316*0c8de5b0SBaptiste Daroussin yystack.l_mark = yystack.l_base; 317*0c8de5b0SBaptiste Daroussin yystate = 0; 318*0c8de5b0SBaptiste Daroussin *yystack.s_mark = 0; 319*0c8de5b0SBaptiste Daroussin 320*0c8de5b0SBaptiste Daroussin yyloop: 321*0c8de5b0SBaptiste Daroussin if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 322*0c8de5b0SBaptiste Daroussin if (yychar < 0) 323*0c8de5b0SBaptiste Daroussin { 324*0c8de5b0SBaptiste Daroussin if ((yychar = YYLEX) < 0) yychar = YYEOF; 325*0c8de5b0SBaptiste Daroussin #if YYDEBUG 326*0c8de5b0SBaptiste Daroussin if (yydebug) 327*0c8de5b0SBaptiste Daroussin { 328*0c8de5b0SBaptiste Daroussin yys = yyname[YYTRANSLATE(yychar)]; 329*0c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, reading %d (%s)\n", 330*0c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yychar, yys); 331*0c8de5b0SBaptiste Daroussin } 332*0c8de5b0SBaptiste Daroussin #endif 333*0c8de5b0SBaptiste Daroussin } 334*0c8de5b0SBaptiste Daroussin if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 335*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 336*0c8de5b0SBaptiste Daroussin { 337*0c8de5b0SBaptiste Daroussin #if YYDEBUG 338*0c8de5b0SBaptiste Daroussin if (yydebug) 339*0c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, shifting to state %d\n", 340*0c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yytable[yyn]); 341*0c8de5b0SBaptiste Daroussin #endif 342*0c8de5b0SBaptiste Daroussin if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 343*0c8de5b0SBaptiste Daroussin { 344*0c8de5b0SBaptiste Daroussin goto yyoverflow; 345*0c8de5b0SBaptiste Daroussin } 346*0c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 347*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = yytable[yyn]; 348*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yylval; 349*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 350*0c8de5b0SBaptiste Daroussin if (yyerrflag > 0) --yyerrflag; 351*0c8de5b0SBaptiste Daroussin goto yyloop; 352*0c8de5b0SBaptiste Daroussin } 353*0c8de5b0SBaptiste Daroussin if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 354*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 355*0c8de5b0SBaptiste Daroussin { 356*0c8de5b0SBaptiste Daroussin yyn = yytable[yyn]; 357*0c8de5b0SBaptiste Daroussin goto yyreduce; 358*0c8de5b0SBaptiste Daroussin } 359*0c8de5b0SBaptiste Daroussin if (yyerrflag) goto yyinrecovery; 360*0c8de5b0SBaptiste Daroussin 361*0c8de5b0SBaptiste Daroussin YYERROR_CALL("syntax error"); 362*0c8de5b0SBaptiste Daroussin 363*0c8de5b0SBaptiste Daroussin goto yyerrlab; 364*0c8de5b0SBaptiste Daroussin 365*0c8de5b0SBaptiste Daroussin yyerrlab: 366*0c8de5b0SBaptiste Daroussin ++yynerrs; 367*0c8de5b0SBaptiste Daroussin 368*0c8de5b0SBaptiste Daroussin yyinrecovery: 369*0c8de5b0SBaptiste Daroussin if (yyerrflag < 3) 370*0c8de5b0SBaptiste Daroussin { 371*0c8de5b0SBaptiste Daroussin yyerrflag = 3; 372*0c8de5b0SBaptiste Daroussin for (;;) 373*0c8de5b0SBaptiste Daroussin { 374*0c8de5b0SBaptiste Daroussin if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && 375*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 376*0c8de5b0SBaptiste Daroussin { 377*0c8de5b0SBaptiste Daroussin #if YYDEBUG 378*0c8de5b0SBaptiste Daroussin if (yydebug) 379*0c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, error recovery shifting\ 380*0c8de5b0SBaptiste Daroussin to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 381*0c8de5b0SBaptiste Daroussin #endif 382*0c8de5b0SBaptiste Daroussin if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 383*0c8de5b0SBaptiste Daroussin { 384*0c8de5b0SBaptiste Daroussin goto yyoverflow; 385*0c8de5b0SBaptiste Daroussin } 386*0c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 387*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = yytable[yyn]; 388*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yylval; 389*0c8de5b0SBaptiste Daroussin goto yyloop; 390*0c8de5b0SBaptiste Daroussin } 391*0c8de5b0SBaptiste Daroussin else 392*0c8de5b0SBaptiste Daroussin { 393*0c8de5b0SBaptiste Daroussin #if YYDEBUG 394*0c8de5b0SBaptiste Daroussin if (yydebug) 395*0c8de5b0SBaptiste Daroussin printf("%sdebug: error recovery discarding state %d\n", 396*0c8de5b0SBaptiste Daroussin YYPREFIX, *yystack.s_mark); 397*0c8de5b0SBaptiste Daroussin #endif 398*0c8de5b0SBaptiste Daroussin if (yystack.s_mark <= yystack.s_base) goto yyabort; 399*0c8de5b0SBaptiste Daroussin --yystack.s_mark; 400*0c8de5b0SBaptiste Daroussin --yystack.l_mark; 401*0c8de5b0SBaptiste Daroussin } 402*0c8de5b0SBaptiste Daroussin } 403*0c8de5b0SBaptiste Daroussin } 404*0c8de5b0SBaptiste Daroussin else 405*0c8de5b0SBaptiste Daroussin { 406*0c8de5b0SBaptiste Daroussin if (yychar == YYEOF) goto yyabort; 407*0c8de5b0SBaptiste Daroussin #if YYDEBUG 408*0c8de5b0SBaptiste Daroussin if (yydebug) 409*0c8de5b0SBaptiste Daroussin { 410*0c8de5b0SBaptiste Daroussin yys = yyname[YYTRANSLATE(yychar)]; 411*0c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 412*0c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yychar, yys); 413*0c8de5b0SBaptiste Daroussin } 414*0c8de5b0SBaptiste Daroussin #endif 415*0c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 416*0c8de5b0SBaptiste Daroussin goto yyloop; 417*0c8de5b0SBaptiste Daroussin } 418*0c8de5b0SBaptiste Daroussin 419*0c8de5b0SBaptiste Daroussin yyreduce: 420*0c8de5b0SBaptiste Daroussin #if YYDEBUG 421*0c8de5b0SBaptiste Daroussin if (yydebug) 422*0c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, reducing by rule %d (%s)\n", 423*0c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yyn, yyrule[yyn]); 424*0c8de5b0SBaptiste Daroussin #endif 425*0c8de5b0SBaptiste Daroussin yym = yylen[yyn]; 426*0c8de5b0SBaptiste Daroussin if (yym) 427*0c8de5b0SBaptiste Daroussin yyval = yystack.l_mark[1-yym]; 428*0c8de5b0SBaptiste Daroussin else 429*0c8de5b0SBaptiste Daroussin memset(&yyval, 0, sizeof yyval); 430*0c8de5b0SBaptiste Daroussin switch (yyn) 431*0c8de5b0SBaptiste Daroussin { 432*0c8de5b0SBaptiste Daroussin } 433*0c8de5b0SBaptiste Daroussin yystack.s_mark -= yym; 434*0c8de5b0SBaptiste Daroussin yystate = *yystack.s_mark; 435*0c8de5b0SBaptiste Daroussin yystack.l_mark -= yym; 436*0c8de5b0SBaptiste Daroussin yym = yylhs[yyn]; 437*0c8de5b0SBaptiste Daroussin if (yystate == 0 && yym == 0) 438*0c8de5b0SBaptiste Daroussin { 439*0c8de5b0SBaptiste Daroussin #if YYDEBUG 440*0c8de5b0SBaptiste Daroussin if (yydebug) 441*0c8de5b0SBaptiste Daroussin printf("%sdebug: after reduction, shifting from state 0 to\ 442*0c8de5b0SBaptiste Daroussin state %d\n", YYPREFIX, YYFINAL); 443*0c8de5b0SBaptiste Daroussin #endif 444*0c8de5b0SBaptiste Daroussin yystate = YYFINAL; 445*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = YYFINAL; 446*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yyval; 447*0c8de5b0SBaptiste Daroussin if (yychar < 0) 448*0c8de5b0SBaptiste Daroussin { 449*0c8de5b0SBaptiste Daroussin if ((yychar = YYLEX) < 0) yychar = YYEOF; 450*0c8de5b0SBaptiste Daroussin #if YYDEBUG 451*0c8de5b0SBaptiste Daroussin if (yydebug) 452*0c8de5b0SBaptiste Daroussin { 453*0c8de5b0SBaptiste Daroussin yys = yyname[YYTRANSLATE(yychar)]; 454*0c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, reading %d (%s)\n", 455*0c8de5b0SBaptiste Daroussin YYPREFIX, YYFINAL, yychar, yys); 456*0c8de5b0SBaptiste Daroussin } 457*0c8de5b0SBaptiste Daroussin #endif 458*0c8de5b0SBaptiste Daroussin } 459*0c8de5b0SBaptiste Daroussin if (yychar == YYEOF) goto yyaccept; 460*0c8de5b0SBaptiste Daroussin goto yyloop; 461*0c8de5b0SBaptiste Daroussin } 462*0c8de5b0SBaptiste Daroussin if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 463*0c8de5b0SBaptiste Daroussin yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 464*0c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 465*0c8de5b0SBaptiste Daroussin else 466*0c8de5b0SBaptiste Daroussin yystate = yydgoto[yym]; 467*0c8de5b0SBaptiste Daroussin #if YYDEBUG 468*0c8de5b0SBaptiste Daroussin if (yydebug) 469*0c8de5b0SBaptiste Daroussin printf("%sdebug: after reduction, shifting from state %d \ 470*0c8de5b0SBaptiste Daroussin to state %d\n", YYPREFIX, *yystack.s_mark, yystate); 471*0c8de5b0SBaptiste Daroussin #endif 472*0c8de5b0SBaptiste Daroussin if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 473*0c8de5b0SBaptiste Daroussin { 474*0c8de5b0SBaptiste Daroussin goto yyoverflow; 475*0c8de5b0SBaptiste Daroussin } 476*0c8de5b0SBaptiste Daroussin *++yystack.s_mark = (YYINT) yystate; 477*0c8de5b0SBaptiste Daroussin *++yystack.l_mark = yyval; 478*0c8de5b0SBaptiste Daroussin goto yyloop; 479*0c8de5b0SBaptiste Daroussin 480*0c8de5b0SBaptiste Daroussin yyoverflow: 481*0c8de5b0SBaptiste Daroussin YYERROR_CALL("yacc stack overflow"); 482*0c8de5b0SBaptiste Daroussin 483*0c8de5b0SBaptiste Daroussin yyabort: 484*0c8de5b0SBaptiste Daroussin yyfreestack(&yystack); 485*0c8de5b0SBaptiste Daroussin return (1); 486*0c8de5b0SBaptiste Daroussin 487*0c8de5b0SBaptiste Daroussin yyaccept: 488*0c8de5b0SBaptiste Daroussin yyfreestack(&yystack); 489*0c8de5b0SBaptiste Daroussin return (0); 490*0c8de5b0SBaptiste Daroussin } 491