1*8e022d3cSDag-Erling Smørgrav/* $Id: yaccpar.skel,v 1.12 2021/08/08 19:55:43 tom Exp $ */ 20c8de5b0SBaptiste Daroussin 30c8de5b0SBaptiste Daroussin#include "defs.h" 40c8de5b0SBaptiste Daroussin 50c8de5b0SBaptiste Daroussin/* If the skeleton is changed, the banner should be changed so that */ 60c8de5b0SBaptiste Daroussin/* the altered version can be easily distinguished from the original. */ 70c8de5b0SBaptiste Daroussin/* */ 80c8de5b0SBaptiste Daroussin/* The #defines included with the banner are there because they are */ 90c8de5b0SBaptiste Daroussin/* useful in subsequent code. The macros #defined in the header or */ 100c8de5b0SBaptiste Daroussin/* the body either are not useful outside of semantic actions or */ 110c8de5b0SBaptiste Daroussin/* are conditional. */ 120c8de5b0SBaptiste Daroussin 130c8de5b0SBaptiste Daroussin%% banner 140c8de5b0SBaptiste Daroussin/* original parser id follows */ 150c8de5b0SBaptiste Daroussin/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 160c8de5b0SBaptiste Daroussin/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 170c8de5b0SBaptiste Daroussin 180c8de5b0SBaptiste Daroussin#define YYBYACC 1 190c8de5b0SBaptiste Daroussin%% insert VERSION here 200c8de5b0SBaptiste Daroussin 210c8de5b0SBaptiste Daroussin#define YYEMPTY (-1) 220c8de5b0SBaptiste Daroussin#define yyclearin (yychar = YYEMPTY) 230c8de5b0SBaptiste Daroussin#define yyerrok (yyerrflag = 0) 240c8de5b0SBaptiste Daroussin#define YYRECOVERING() (yyerrflag != 0) 250c8de5b0SBaptiste Daroussin#define YYENOMEM (-2) 260c8de5b0SBaptiste Daroussin#define YYEOF 0 270c8de5b0SBaptiste Daroussin%% xdecls 280c8de5b0SBaptiste Daroussin 290c8de5b0SBaptiste Daroussinextern int YYPARSE_DECL(); 300c8de5b0SBaptiste Daroussin%% tables 310c8de5b0SBaptiste Daroussinextern YYINT yylhs[]; 320c8de5b0SBaptiste Daroussinextern YYINT yylen[]; 330c8de5b0SBaptiste Daroussinextern YYINT yydefred[]; 340c8de5b0SBaptiste Daroussinextern YYINT yydgoto[]; 350c8de5b0SBaptiste Daroussinextern YYINT yysindex[]; 360c8de5b0SBaptiste Daroussinextern YYINT yyrindex[]; 370c8de5b0SBaptiste Daroussinextern YYINT yygindex[]; 380c8de5b0SBaptiste Daroussinextern YYINT yytable[]; 390c8de5b0SBaptiste Daroussinextern YYINT yycheck[]; 400c8de5b0SBaptiste Daroussin 41c5b5d71aSJung-uk Kim#if YYDEBUG || defined(yytname) 420c8de5b0SBaptiste Daroussinextern char *yyname[]; 43c5b5d71aSJung-uk Kim#endif 44c5b5d71aSJung-uk Kim#if YYDEBUG 450c8de5b0SBaptiste Daroussinextern char *yyrule[]; 460c8de5b0SBaptiste Daroussin#endif 470c8de5b0SBaptiste Daroussin%% global_vars 480c8de5b0SBaptiste Daroussin 49b53bb29fSJung-uk Kim#if YYDEBUG 500c8de5b0SBaptiste Daroussinint yydebug; 51b53bb29fSJung-uk Kim#endif 520c8de5b0SBaptiste Daroussin%% impure_vars 530c8de5b0SBaptiste Daroussin 540c8de5b0SBaptiste Daroussinint yyerrflag; 550c8de5b0SBaptiste Daroussinint yychar; 560c8de5b0SBaptiste DaroussinYYSTYPE yyval; 570c8de5b0SBaptiste DaroussinYYSTYPE yylval; 58b53bb29fSJung-uk Kimint yynerrs; 590c8de5b0SBaptiste Daroussin%% hdr_defs 600c8de5b0SBaptiste Daroussin 610c8de5b0SBaptiste Daroussin/* define the initial stack-sizes */ 620c8de5b0SBaptiste Daroussin#ifdef YYSTACKSIZE 630c8de5b0SBaptiste Daroussin#undef YYMAXDEPTH 640c8de5b0SBaptiste Daroussin#define YYMAXDEPTH YYSTACKSIZE 650c8de5b0SBaptiste Daroussin#else 660c8de5b0SBaptiste Daroussin#ifdef YYMAXDEPTH 670c8de5b0SBaptiste Daroussin#define YYSTACKSIZE YYMAXDEPTH 680c8de5b0SBaptiste Daroussin#else 690c8de5b0SBaptiste Daroussin#define YYSTACKSIZE 10000 700c8de5b0SBaptiste Daroussin#define YYMAXDEPTH 10000 710c8de5b0SBaptiste Daroussin#endif 720c8de5b0SBaptiste Daroussin#endif 730c8de5b0SBaptiste Daroussin 740c8de5b0SBaptiste Daroussin#define YYINITSTACKSIZE 200 750c8de5b0SBaptiste Daroussin 760c8de5b0SBaptiste Daroussintypedef struct { 770c8de5b0SBaptiste Daroussin unsigned stacksize; 780c8de5b0SBaptiste Daroussin YYINT *s_base; 790c8de5b0SBaptiste Daroussin YYINT *s_mark; 800c8de5b0SBaptiste Daroussin YYINT *s_last; 810c8de5b0SBaptiste Daroussin YYSTYPE *l_base; 820c8de5b0SBaptiste Daroussin YYSTYPE *l_mark; 830c8de5b0SBaptiste Daroussin} YYSTACKDATA; 840c8de5b0SBaptiste Daroussin%% hdr_vars 850c8de5b0SBaptiste Daroussin/* variables for the parser stack */ 860c8de5b0SBaptiste Daroussinstatic YYSTACKDATA yystack; 870c8de5b0SBaptiste Daroussin%% body_vars 880c8de5b0SBaptiste Daroussin int yyerrflag; 890c8de5b0SBaptiste Daroussin int yychar; 900c8de5b0SBaptiste Daroussin YYSTYPE yyval; 910c8de5b0SBaptiste Daroussin YYSTYPE yylval; 92b53bb29fSJung-uk Kim int yynerrs; 930c8de5b0SBaptiste Daroussin 940c8de5b0SBaptiste Daroussin /* variables for the parser stack */ 950c8de5b0SBaptiste Daroussin YYSTACKDATA yystack; 960c8de5b0SBaptiste Daroussin%% body_1 970c8de5b0SBaptiste Daroussin 980c8de5b0SBaptiste Daroussin#if YYDEBUG 990c8de5b0SBaptiste Daroussin#include <stdio.h> /* needed for printf */ 1000c8de5b0SBaptiste Daroussin#endif 1010c8de5b0SBaptiste Daroussin 1020c8de5b0SBaptiste Daroussin#include <stdlib.h> /* needed for malloc, etc */ 1030c8de5b0SBaptiste Daroussin#include <string.h> /* needed for memset */ 1040c8de5b0SBaptiste Daroussin 1050c8de5b0SBaptiste Daroussin/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 1060c8de5b0SBaptiste Daroussinstatic int yygrowstack(YYSTACKDATA *data) 1070c8de5b0SBaptiste Daroussin{ 1080c8de5b0SBaptiste Daroussin int i; 1090c8de5b0SBaptiste Daroussin unsigned newsize; 1100c8de5b0SBaptiste Daroussin YYINT *newss; 1110c8de5b0SBaptiste Daroussin YYSTYPE *newvs; 1120c8de5b0SBaptiste Daroussin 1130c8de5b0SBaptiste Daroussin if ((newsize = data->stacksize) == 0) 1140c8de5b0SBaptiste Daroussin newsize = YYINITSTACKSIZE; 1150c8de5b0SBaptiste Daroussin else if (newsize >= YYMAXDEPTH) 1160c8de5b0SBaptiste Daroussin return YYENOMEM; 1170c8de5b0SBaptiste Daroussin else if ((newsize *= 2) > YYMAXDEPTH) 1180c8de5b0SBaptiste Daroussin newsize = YYMAXDEPTH; 1190c8de5b0SBaptiste Daroussin 1200c8de5b0SBaptiste Daroussin i = (int) (data->s_mark - data->s_base); 1210c8de5b0SBaptiste Daroussin newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 12280f31432SJung-uk Kim if (newss == NULL) 1230c8de5b0SBaptiste Daroussin return YYENOMEM; 1240c8de5b0SBaptiste Daroussin 1250c8de5b0SBaptiste Daroussin data->s_base = newss; 1260c8de5b0SBaptiste Daroussin data->s_mark = newss + i; 1270c8de5b0SBaptiste Daroussin 1280c8de5b0SBaptiste Daroussin newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 12980f31432SJung-uk Kim if (newvs == NULL) 1300c8de5b0SBaptiste Daroussin return YYENOMEM; 1310c8de5b0SBaptiste Daroussin 1320c8de5b0SBaptiste Daroussin data->l_base = newvs; 1330c8de5b0SBaptiste Daroussin data->l_mark = newvs + i; 1340c8de5b0SBaptiste Daroussin 1350c8de5b0SBaptiste Daroussin data->stacksize = newsize; 1360c8de5b0SBaptiste Daroussin data->s_last = data->s_base + newsize - 1; 1370c8de5b0SBaptiste Daroussin return 0; 1380c8de5b0SBaptiste Daroussin} 1390c8de5b0SBaptiste Daroussin 1400c8de5b0SBaptiste Daroussin#if YYPURE || defined(YY_NO_LEAKS) 1410c8de5b0SBaptiste Daroussinstatic void yyfreestack(YYSTACKDATA *data) 1420c8de5b0SBaptiste Daroussin{ 1430c8de5b0SBaptiste Daroussin free(data->s_base); 1440c8de5b0SBaptiste Daroussin free(data->l_base); 1450c8de5b0SBaptiste Daroussin memset(data, 0, sizeof(*data)); 1460c8de5b0SBaptiste Daroussin} 1470c8de5b0SBaptiste Daroussin#else 1480c8de5b0SBaptiste Daroussin#define yyfreestack(data) /* nothing */ 1490c8de5b0SBaptiste Daroussin#endif 1500c8de5b0SBaptiste Daroussin 1510c8de5b0SBaptiste Daroussin#define YYABORT goto yyabort 1520c8de5b0SBaptiste Daroussin#define YYREJECT goto yyabort 1530c8de5b0SBaptiste Daroussin#define YYACCEPT goto yyaccept 1540c8de5b0SBaptiste Daroussin#define YYERROR goto yyerrlab 1550c8de5b0SBaptiste Daroussin 1560c8de5b0SBaptiste Daroussinint 1570c8de5b0SBaptiste DaroussinYYPARSE_DECL() 1580c8de5b0SBaptiste Daroussin{ 1590c8de5b0SBaptiste Daroussin%% body_2 1600c8de5b0SBaptiste Daroussin int yym, yyn, yystate; 1610c8de5b0SBaptiste Daroussin#if YYDEBUG 1620c8de5b0SBaptiste Daroussin const char *yys; 1630c8de5b0SBaptiste Daroussin 16480f31432SJung-uk Kim if ((yys = getenv("YYDEBUG")) != NULL) 1650c8de5b0SBaptiste Daroussin { 1660c8de5b0SBaptiste Daroussin yyn = *yys; 1670c8de5b0SBaptiste Daroussin if (yyn >= '0' && yyn <= '9') 1680c8de5b0SBaptiste Daroussin yydebug = yyn - '0'; 1690c8de5b0SBaptiste Daroussin } 1700c8de5b0SBaptiste Daroussin#endif 1710c8de5b0SBaptiste Daroussin 1726166fdceSJung-uk Kim%% init_vars 1736166fdceSJung-uk Kim memset(&yyval, 0, sizeof(yyval)); 1746166fdceSJung-uk Kim memset(&yylval, 0, sizeof(yylval)); 1756166fdceSJung-uk Kim 1762aca18c7SJung-uk Kim%% body_3 177*8e022d3cSDag-Erling Smørgrav /* yym is set below */ 178*8e022d3cSDag-Erling Smørgrav /* yyn is set below */ 1790c8de5b0SBaptiste Daroussin yynerrs = 0; 1800c8de5b0SBaptiste Daroussin yyerrflag = 0; 1810c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 1820c8de5b0SBaptiste Daroussin yystate = 0; 1830c8de5b0SBaptiste Daroussin 1840c8de5b0SBaptiste Daroussin#if YYPURE 1850c8de5b0SBaptiste Daroussin memset(&yystack, 0, sizeof(yystack)); 1860c8de5b0SBaptiste Daroussin#endif 1870c8de5b0SBaptiste Daroussin 1880c8de5b0SBaptiste Daroussin if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1890c8de5b0SBaptiste Daroussin yystack.s_mark = yystack.s_base; 1900c8de5b0SBaptiste Daroussin yystack.l_mark = yystack.l_base; 1910c8de5b0SBaptiste Daroussin yystate = 0; 1920c8de5b0SBaptiste Daroussin *yystack.s_mark = 0; 1930c8de5b0SBaptiste Daroussin 1940c8de5b0SBaptiste Daroussinyyloop: 1950c8de5b0SBaptiste Daroussin if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 1960c8de5b0SBaptiste Daroussin if (yychar < 0) 1970c8de5b0SBaptiste Daroussin { 198c5b5d71aSJung-uk Kim yychar = YYLEX; 199c5b5d71aSJung-uk Kim if (yychar < 0) yychar = YYEOF; 2000c8de5b0SBaptiste Daroussin#if YYDEBUG 2010c8de5b0SBaptiste Daroussin if (yydebug) 2020c8de5b0SBaptiste Daroussin { 203c5b5d71aSJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 2040c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, reading %d (%s)\n", 2050c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yychar, yys); 2060c8de5b0SBaptiste Daroussin } 2070c8de5b0SBaptiste Daroussin#endif 2080c8de5b0SBaptiste Daroussin } 209c5b5d71aSJung-uk Kim if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 210c5b5d71aSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 2110c8de5b0SBaptiste Daroussin { 2120c8de5b0SBaptiste Daroussin#if YYDEBUG 2130c8de5b0SBaptiste Daroussin if (yydebug) 2140c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, shifting to state %d\n", 2150c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yytable[yyn]); 2160c8de5b0SBaptiste Daroussin#endif 217c5b5d71aSJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 2180c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 2190c8de5b0SBaptiste Daroussin *++yystack.s_mark = yytable[yyn]; 2200c8de5b0SBaptiste Daroussin *++yystack.l_mark = yylval; 2210c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 2220c8de5b0SBaptiste Daroussin if (yyerrflag > 0) --yyerrflag; 2230c8de5b0SBaptiste Daroussin goto yyloop; 2240c8de5b0SBaptiste Daroussin } 225c5b5d71aSJung-uk Kim if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 226c5b5d71aSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 2270c8de5b0SBaptiste Daroussin { 2280c8de5b0SBaptiste Daroussin yyn = yytable[yyn]; 2290c8de5b0SBaptiste Daroussin goto yyreduce; 2300c8de5b0SBaptiste Daroussin } 231c5b5d71aSJung-uk Kim if (yyerrflag != 0) goto yyinrecovery; 2320c8de5b0SBaptiste Daroussin 2330c8de5b0SBaptiste Daroussin YYERROR_CALL("syntax error"); 2340c8de5b0SBaptiste Daroussin 235c5b5d71aSJung-uk Kim goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 2360c8de5b0SBaptiste Daroussinyyerrlab: 2370c8de5b0SBaptiste Daroussin ++yynerrs; 2380c8de5b0SBaptiste Daroussin 2390c8de5b0SBaptiste Daroussinyyinrecovery: 2400c8de5b0SBaptiste Daroussin if (yyerrflag < 3) 2410c8de5b0SBaptiste Daroussin { 2420c8de5b0SBaptiste Daroussin yyerrflag = 3; 2430c8de5b0SBaptiste Daroussin for (;;) 2440c8de5b0SBaptiste Daroussin { 245c5b5d71aSJung-uk Kim if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 246c5b5d71aSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 2470c8de5b0SBaptiste Daroussin { 2480c8de5b0SBaptiste Daroussin#if YYDEBUG 2490c8de5b0SBaptiste Daroussin if (yydebug) 2500c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, error recovery shifting\ 2510c8de5b0SBaptiste Daroussin to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 2520c8de5b0SBaptiste Daroussin#endif 253c5b5d71aSJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 2540c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 2550c8de5b0SBaptiste Daroussin *++yystack.s_mark = yytable[yyn]; 2560c8de5b0SBaptiste Daroussin *++yystack.l_mark = yylval; 2570c8de5b0SBaptiste Daroussin goto yyloop; 2580c8de5b0SBaptiste Daroussin } 2590c8de5b0SBaptiste Daroussin else 2600c8de5b0SBaptiste Daroussin { 2610c8de5b0SBaptiste Daroussin#if YYDEBUG 2620c8de5b0SBaptiste Daroussin if (yydebug) 2630c8de5b0SBaptiste Daroussin printf("%sdebug: error recovery discarding state %d\n", 2640c8de5b0SBaptiste Daroussin YYPREFIX, *yystack.s_mark); 2650c8de5b0SBaptiste Daroussin#endif 2660c8de5b0SBaptiste Daroussin if (yystack.s_mark <= yystack.s_base) goto yyabort; 2670c8de5b0SBaptiste Daroussin --yystack.s_mark; 2680c8de5b0SBaptiste Daroussin --yystack.l_mark; 2690c8de5b0SBaptiste Daroussin } 2700c8de5b0SBaptiste Daroussin } 2710c8de5b0SBaptiste Daroussin } 2720c8de5b0SBaptiste Daroussin else 2730c8de5b0SBaptiste Daroussin { 2740c8de5b0SBaptiste Daroussin if (yychar == YYEOF) goto yyabort; 2750c8de5b0SBaptiste Daroussin#if YYDEBUG 2760c8de5b0SBaptiste Daroussin if (yydebug) 2770c8de5b0SBaptiste Daroussin { 278c5b5d71aSJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 2790c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 2800c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yychar, yys); 2810c8de5b0SBaptiste Daroussin } 2820c8de5b0SBaptiste Daroussin#endif 2830c8de5b0SBaptiste Daroussin yychar = YYEMPTY; 2840c8de5b0SBaptiste Daroussin goto yyloop; 2850c8de5b0SBaptiste Daroussin } 2860c8de5b0SBaptiste Daroussin 2870c8de5b0SBaptiste Daroussinyyreduce: 2880c8de5b0SBaptiste Daroussin#if YYDEBUG 2890c8de5b0SBaptiste Daroussin if (yydebug) 2900c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, reducing by rule %d (%s)\n", 2910c8de5b0SBaptiste Daroussin YYPREFIX, yystate, yyn, yyrule[yyn]); 2920c8de5b0SBaptiste Daroussin#endif 2930c8de5b0SBaptiste Daroussin yym = yylen[yyn]; 294c5b5d71aSJung-uk Kim if (yym > 0) 2950c8de5b0SBaptiste Daroussin yyval = yystack.l_mark[1-yym]; 2960c8de5b0SBaptiste Daroussin else 2970c8de5b0SBaptiste Daroussin memset(&yyval, 0, sizeof yyval); 298c5b5d71aSJung-uk Kim 2990c8de5b0SBaptiste Daroussin switch (yyn) 3000c8de5b0SBaptiste Daroussin { 3010c8de5b0SBaptiste Daroussin%% trailer 3020c8de5b0SBaptiste Daroussin } 3030c8de5b0SBaptiste Daroussin yystack.s_mark -= yym; 3040c8de5b0SBaptiste Daroussin yystate = *yystack.s_mark; 3050c8de5b0SBaptiste Daroussin yystack.l_mark -= yym; 3060c8de5b0SBaptiste Daroussin yym = yylhs[yyn]; 3070c8de5b0SBaptiste Daroussin if (yystate == 0 && yym == 0) 3080c8de5b0SBaptiste Daroussin { 3090c8de5b0SBaptiste Daroussin#if YYDEBUG 3100c8de5b0SBaptiste Daroussin if (yydebug) 3110c8de5b0SBaptiste Daroussin printf("%sdebug: after reduction, shifting from state 0 to\ 3120c8de5b0SBaptiste Daroussin state %d\n", YYPREFIX, YYFINAL); 3130c8de5b0SBaptiste Daroussin#endif 3140c8de5b0SBaptiste Daroussin yystate = YYFINAL; 3150c8de5b0SBaptiste Daroussin *++yystack.s_mark = YYFINAL; 3160c8de5b0SBaptiste Daroussin *++yystack.l_mark = yyval; 3170c8de5b0SBaptiste Daroussin if (yychar < 0) 3180c8de5b0SBaptiste Daroussin { 319c5b5d71aSJung-uk Kim yychar = YYLEX; 320c5b5d71aSJung-uk Kim if (yychar < 0) yychar = YYEOF; 3210c8de5b0SBaptiste Daroussin#if YYDEBUG 3220c8de5b0SBaptiste Daroussin if (yydebug) 3230c8de5b0SBaptiste Daroussin { 324c5b5d71aSJung-uk Kim if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 3250c8de5b0SBaptiste Daroussin printf("%sdebug: state %d, reading %d (%s)\n", 3260c8de5b0SBaptiste Daroussin YYPREFIX, YYFINAL, yychar, yys); 3270c8de5b0SBaptiste Daroussin } 3280c8de5b0SBaptiste Daroussin#endif 3290c8de5b0SBaptiste Daroussin } 3300c8de5b0SBaptiste Daroussin if (yychar == YYEOF) goto yyaccept; 3310c8de5b0SBaptiste Daroussin goto yyloop; 3320c8de5b0SBaptiste Daroussin } 333c5b5d71aSJung-uk Kim if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 334c5b5d71aSJung-uk Kim yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 3350c8de5b0SBaptiste Daroussin yystate = yytable[yyn]; 3360c8de5b0SBaptiste Daroussin else 3370c8de5b0SBaptiste Daroussin yystate = yydgoto[yym]; 3380c8de5b0SBaptiste Daroussin#if YYDEBUG 3390c8de5b0SBaptiste Daroussin if (yydebug) 3400c8de5b0SBaptiste Daroussin printf("%sdebug: after reduction, shifting from state %d \ 3410c8de5b0SBaptiste Daroussinto state %d\n", YYPREFIX, *yystack.s_mark, yystate); 3420c8de5b0SBaptiste Daroussin#endif 343c5b5d71aSJung-uk Kim if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 3440c8de5b0SBaptiste Daroussin *++yystack.s_mark = (YYINT) yystate; 3450c8de5b0SBaptiste Daroussin *++yystack.l_mark = yyval; 3460c8de5b0SBaptiste Daroussin goto yyloop; 3470c8de5b0SBaptiste Daroussin 3480c8de5b0SBaptiste Daroussinyyoverflow: 3490c8de5b0SBaptiste Daroussin YYERROR_CALL("yacc stack overflow"); 3500c8de5b0SBaptiste Daroussin 3510c8de5b0SBaptiste Daroussinyyabort: 3520c8de5b0SBaptiste Daroussin yyfreestack(&yystack); 3530c8de5b0SBaptiste Daroussin return (1); 3540c8de5b0SBaptiste Daroussin 3550c8de5b0SBaptiste Daroussinyyaccept: 3560c8de5b0SBaptiste Daroussin yyfreestack(&yystack); 3570c8de5b0SBaptiste Daroussin return (0); 3580c8de5b0SBaptiste Daroussin} 359