Path: blob/main/contrib/byacc/test/btyacc/btyacc_destroy2.tab.c
109421 views
/* original parser id follows */1/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */2/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */34#define YYBYACC 15#define YYMAJOR 26#define YYMINOR 07#define YYCHECK "yyyymmdd"89#define YYEMPTY (-1)10#define yyclearin (yychar = YYEMPTY)11#define yyerrok (yyerrflag = 0)12#define YYRECOVERING() (yyerrflag != 0)13#define YYENOMEM (-2)14#define YYEOF 015#undef YYBTYACC16#define YYBTYACC 117#define YYDEBUGSTR (yytrial ? YYPREFIX "debug(trial)" : YYPREFIX "debug")1819#ifndef yyparse20#define yyparse destroy2_parse21#endif /* yyparse */2223#ifndef yylex24#define yylex destroy2_lex25#endif /* yylex */2627#ifndef yyerror28#define yyerror destroy2_error29#endif /* yyerror */3031#ifndef yychar32#define yychar destroy2_char33#endif /* yychar */3435#ifndef yyval36#define yyval destroy2_val37#endif /* yyval */3839#ifndef yylval40#define yylval destroy2_lval41#endif /* yylval */4243#ifndef yydebug44#define yydebug destroy2_debug45#endif /* yydebug */4647#ifndef yynerrs48#define yynerrs destroy2_nerrs49#endif /* yynerrs */5051#ifndef yyerrflag52#define yyerrflag destroy2_errflag53#endif /* yyerrflag */5455#ifndef yylhs56#define yylhs destroy2_lhs57#endif /* yylhs */5859#ifndef yylen60#define yylen destroy2_len61#endif /* yylen */6263#ifndef yydefred64#define yydefred destroy2_defred65#endif /* yydefred */6667#ifndef yystos68#define yystos destroy2_stos69#endif /* yystos */7071#ifndef yydgoto72#define yydgoto destroy2_dgoto73#endif /* yydgoto */7475#ifndef yysindex76#define yysindex destroy2_sindex77#endif /* yysindex */7879#ifndef yyrindex80#define yyrindex destroy2_rindex81#endif /* yyrindex */8283#ifndef yygindex84#define yygindex destroy2_gindex85#endif /* yygindex */8687#ifndef yytable88#define yytable destroy2_table89#endif /* yytable */9091#ifndef yycheck92#define yycheck destroy2_check93#endif /* yycheck */9495#ifndef yyname96#define yyname destroy2_name97#endif /* yyname */9899#ifndef yyrule100#define yyrule destroy2_rule101#endif /* yyrule */102103#if YYBTYACC104105#ifndef yycindex106#define yycindex destroy2_cindex107#endif /* yycindex */108109#ifndef yyctable110#define yyctable destroy2_ctable111#endif /* yyctable */112113#endif /* YYBTYACC */114115#define YYPREFIX "destroy2_"116117#define YYPURE 0118119#line 4 "btyacc_destroy2.y"120#include <stdlib.h>121122typedef enum {cGLOBAL, cLOCAL} class;123typedef enum {tREAL, tINTEGER} type;124typedef char * name;125126struct symbol { class c; type t; name id; };127typedef struct symbol symbol;128129struct namelist { symbol *s; struct namelist *next; };130typedef struct namelist namelist;131132struct parser_param {133int *rtrn;134symbol ss;135};136137extern symbol *mksymbol(type t, class c, name id);138139#ifdef YYBISON140#define YYLEX_DECL() yylex(void)141#define YYERROR_DECL() yyerror(const char *s)142#endif143#ifdef YYSTYPE144#undef YYSTYPE_IS_DECLARED145#define YYSTYPE_IS_DECLARED 1146#endif147#ifndef YYSTYPE_IS_DECLARED148#define YYSTYPE_IS_DECLARED 1149#line 50 "btyacc_destroy2.y"150typedef union YYSTYPE151{152class cval;153type tval;154namelist * nlist;155name id;156} YYSTYPE;157#endif /* !YYSTYPE_IS_DECLARED */158#line 160 "btyacc_destroy2.tab.c"159160/* compatibility with bison */161#ifdef YYPARSE_PARAM162/* compatibility with FreeBSD */163# ifdef YYPARSE_PARAM_TYPE164# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)165# else166# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)167# endif168#else169# define YYPARSE_DECL() yyparse(struct parser_param *param, int flag)170#endif171172/* Parameters sent to lex. */173#ifdef YYLEX_PARAM174# define YYLEX_DECL() yylex(void *YYLEX_PARAM)175# define YYLEX yylex(YYLEX_PARAM)176#else177# define YYLEX_DECL() yylex(void)178# define YYLEX yylex()179#endif180181/* Parameters sent to yyerror. */182#ifndef YYERROR_DECL183#define YYERROR_DECL() yyerror(struct parser_param *param, int flag, const char *s)184#endif185#ifndef YYERROR_CALL186#define YYERROR_CALL(msg) yyerror(param, flag, msg)187#endif188189#ifndef YYDESTRUCT_DECL190#define YYDESTRUCT_DECL() yydestruct(const char *msg, int psymb, YYSTYPE *val, struct parser_param *param, int flag)191#endif192#ifndef YYDESTRUCT_CALL193#define YYDESTRUCT_CALL(msg, psymb, val) yydestruct(msg, psymb, val, param, flag)194#endif195196extern int YYPARSE_DECL();197198#define GLOBAL 257199#define LOCAL 258200#define REAL 259201#define INTEGER 260202#define NAME 261203#define YYERRCODE 256204typedef int YYINT;205static const YYINT destroy2_lhs[] = { -1,2060, 0, 2, 2, 3, 3, 4, 4, 1,207};208static const YYINT destroy2_len[] = { 2,2098, 5, 1, 1, 1, 1, 2, 1, 6,210};211static const YYINT destroy2_defred[] = { 0,2123, 4, 5, 6, 0, 0, 0, 0, 8, 0,2130, 0, 0, 7, 0, 0, 0, 0, 0, 2,2140, 0, 0, 0, 9, 1,215};216#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)217static const YYINT destroy2_stos[] = { 0,218257, 258, 259, 260, 263, 265, 266, 266, 261, 264,219267, 267, 40, 261, 40, 40, 265, 258, 265, 41,22044, 44, 266, 266, 41, 41,221};222#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */223static const YYINT destroy2_dgoto[] = { 5,22410, 6, 7, 11,225};226static const YYINT destroy2_sindex[] = { -254,2270, 0, 0, 0, 0, -251, -248, -248, 0, -26,228-40, -39, -246, 0, -243, -246, -25, -24, -23, 0,229-251, -251, -22, -19, 0, 0,230};231static const YYINT destroy2_rindex[] = { 0,2320, 0, 0, 0, 0, 0, 0, 0, 0, 0,2330, 0, 0, 0, 0, 0, 0, 0, 0, 0,2340, 0, 0, 0, 0, 0,235};236#if YYBTYACC237static const YYINT destroy2_cindex[] = { 0,2380, 0, 0, 0, 0, 0, 0, 0, 0, 0,2390, 0, 0, 0, 0, 0, 0, 0, 0, 0,2400, 0, 0, 0, 0, 0,241};242#endif243static const YYINT destroy2_gindex[] = { 0,2440, -6, -4, 15,245};246#define YYTABLESIZE 222247static const YYINT destroy2_table[] = { 15,24816, 8, 1, 2, 3, 4, 17, 3, 4, 19,2491, 2, 9, 13, 18, 20, 23, 24, 25, 21,25022, 26, 12, 0, 0, 0, 0, 0, 0, 0,2510, 0, 0, 0, 0, 0, 0, 0, 0, 0,2520, 0, 0, 0, 0, 0, 0, 0, 0, 0,2530, 0, 0, 0, 0, 0, 0, 0, 0, 0,2540, 0, 0, 0, 0, 0, 0, 0, 0, 0,2550, 0, 0, 0, 0, 0, 0, 0, 0, 0,2560, 0, 0, 0, 0, 0, 0, 0, 0, 0,2570, 0, 0, 0, 0, 0, 0, 0, 0, 0,2580, 0, 0, 0, 0, 0, 0, 0, 0, 0,2590, 0, 0, 0, 0, 0, 0, 0, 0, 0,2600, 0, 0, 0, 0, 0, 0, 0, 0, 0,2610, 0, 0, 0, 0, 0, 0, 0, 0, 0,2620, 0, 0, 0, 0, 0, 0, 0, 0, 0,2630, 0, 0, 0, 0, 0, 0, 0, 0, 0,2640, 0, 0, 0, 0, 0, 0, 0, 0, 0,2650, 0, 0, 0, 0, 0, 0, 0, 0, 0,2660, 0, 0, 0, 0, 0, 0, 0, 0, 0,2670, 0, 0, 0, 0, 0, 0, 0, 0, 0,2680, 0, 0, 0, 0, 0, 0, 0, 0, 0,2690, 0, 0, 0, 0, 0, 0, 0, 0, 0,27014, 14,271};272static const YYINT destroy2_check[] = { 40,27340, 6, 257, 258, 259, 260, 13, 259, 260, 16,274257, 258, 261, 40, 258, 41, 21, 22, 41, 44,27544, 41, 8, -1, -1, -1, -1, -1, -1, -1,276-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,277-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,278-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,279-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,280-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,281-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,282-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,283-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,284-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,285-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,286-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,287-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,288-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,289-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,290-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,291-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,292-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,293-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,294-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,295261, 261,296};297#if YYBTYACC298static const YYINT destroy2_ctable[] = { -1,299-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,300-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,301-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,302-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,303-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,304-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,305-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,306-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,307-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,308-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,309-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,310-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,311-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,312-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,313-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,314-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,315-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,316-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,317-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,318-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,319-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,320-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,321-1,322};323#endif324#define YYFINAL 5325#ifndef YYDEBUG326#define YYDEBUG 0327#endif328#define YYMAXTOKEN 261329#define YYUNDFTOKEN 268330#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))331#if YYDEBUG332static const char *const destroy2_name[] = {333334"$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3350,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3370,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3380,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3390,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL",341"REAL","INTEGER","NAME","$accept","declaration","locnamelist","class","type",342"namelist","illegal-symbol",343};344static const char *const destroy2_rule[] = {345"$accept : declaration",346"declaration : class type namelist '(' class ',' type ')'",347"declaration : type locnamelist '(' class ')'",348"class : GLOBAL",349"class : LOCAL",350"type : REAL",351"type : INTEGER",352"namelist : namelist NAME",353"namelist : NAME",354"locnamelist : namelist '(' LOCAL ',' type ')'",355356};357#endif358359#if YYDEBUG360int yydebug;361#endif362363int yyerrflag;364int yychar;365YYSTYPE yyval;366YYSTYPE yylval;367int yynerrs;368369#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)370YYLTYPE yyloc; /* position returned by actions */371YYLTYPE yylloc; /* position from the lexer */372#endif373374#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)375#ifndef YYLLOC_DEFAULT376#define YYLLOC_DEFAULT(loc, rhs, n) \377do \378{ \379if (n == 0) \380{ \381(loc).first_line = YYRHSLOC(rhs, 0).last_line; \382(loc).first_column = YYRHSLOC(rhs, 0).last_column; \383(loc).last_line = YYRHSLOC(rhs, 0).last_line; \384(loc).last_column = YYRHSLOC(rhs, 0).last_column; \385} \386else \387{ \388(loc).first_line = YYRHSLOC(rhs, 1).first_line; \389(loc).first_column = YYRHSLOC(rhs, 1).first_column; \390(loc).last_line = YYRHSLOC(rhs, n).last_line; \391(loc).last_column = YYRHSLOC(rhs, n).last_column; \392} \393} while (0)394#endif /* YYLLOC_DEFAULT */395#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */396#if YYBTYACC397398#ifndef YYLVQUEUEGROWTH399#define YYLVQUEUEGROWTH 32400#endif401#endif /* YYBTYACC */402403/* define the initial stack-sizes */404#ifdef YYSTACKSIZE405#undef YYMAXDEPTH406#define YYMAXDEPTH YYSTACKSIZE407#else408#ifdef YYMAXDEPTH409#define YYSTACKSIZE YYMAXDEPTH410#else411#define YYSTACKSIZE 10000412#define YYMAXDEPTH 10000413#endif414#endif415416#ifndef YYINITSTACKSIZE417#define YYINITSTACKSIZE 200418#endif419420typedef struct {421unsigned stacksize;422YYINT *s_base;423YYINT *s_mark;424YYINT *s_last;425YYSTYPE *l_base;426YYSTYPE *l_mark;427#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)428YYLTYPE *p_base;429YYLTYPE *p_mark;430#endif431} YYSTACKDATA;432#if YYBTYACC433434struct YYParseState_s435{436struct YYParseState_s *save; /* Previously saved parser state */437YYSTACKDATA yystack; /* saved parser stack */438int state; /* saved parser state */439int errflag; /* saved error recovery status */440int lexeme; /* saved index of the conflict lexeme in the lexical queue */441YYINT ctry; /* saved index in yyctable[] for this conflict */442};443typedef struct YYParseState_s YYParseState;444#endif /* YYBTYACC */445/* variables for the parser stack */446static YYSTACKDATA yystack;447#if YYBTYACC448449/* Current parser state */450static YYParseState *yyps = 0;451452/* yypath != NULL: do the full parse, starting at *yypath parser state. */453static YYParseState *yypath = 0;454455/* Base of the lexical value queue */456static YYSTYPE *yylvals = 0;457458/* Current position at lexical value queue */459static YYSTYPE *yylvp = 0;460461/* End position of lexical value queue */462static YYSTYPE *yylve = 0;463464/* The last allocated position at the lexical value queue */465static YYSTYPE *yylvlim = 0;466467#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)468/* Base of the lexical position queue */469static YYLTYPE *yylpsns = 0;470471/* Current position at lexical position queue */472static YYLTYPE *yylpp = 0;473474/* End position of lexical position queue */475static YYLTYPE *yylpe = 0;476477/* The last allocated position at the lexical position queue */478static YYLTYPE *yylplim = 0;479#endif480481/* Current position at lexical token queue */482static YYINT *yylexp = 0;483484static YYINT *yylexemes = 0;485#endif /* YYBTYACC */486#line 89 "btyacc_destroy2.y"487488extern int YYLEX_DECL();489extern void YYERROR_DECL();490#line 492 "btyacc_destroy2.tab.c"491492/* Release memory associated with symbol. */493#if ! defined YYDESTRUCT_IS_DECLARED494static void495YYDESTRUCT_DECL()496{497switch (psymb)498{499case 263:500#line 41 "btyacc_destroy2.y"501{502namelist *p = (*val).nlist;503while (p != NULL)504{ namelist *pp = p;505p = p->next;506free(pp->s); free(pp);507}508}509#line 511 "btyacc_destroy2.tab.c"510break;511}512}513#define YYDESTRUCT_IS_DECLARED 1514#endif515516/* For use in generated program */517#define yydepth (int)(yystack.s_mark - yystack.s_base)518#if YYBTYACC519#define yytrial (yyps->save)520#endif /* YYBTYACC */521522#if YYDEBUG523#include <stdio.h> /* needed for printf */524#endif525526#include <stdlib.h> /* needed for malloc, etc */527#include <string.h> /* needed for memset */528529/* allocate initial stack or double stack size, up to YYMAXDEPTH */530static int yygrowstack(YYSTACKDATA *data)531{532int i;533unsigned newsize;534YYINT *newss;535YYSTYPE *newvs;536#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)537YYLTYPE *newps;538#endif539540if ((newsize = data->stacksize) == 0)541newsize = YYINITSTACKSIZE;542else if (newsize >= YYMAXDEPTH)543return YYENOMEM;544else if ((newsize *= 2) > YYMAXDEPTH)545newsize = YYMAXDEPTH;546547i = (int) (data->s_mark - data->s_base);548newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));549if (newss == NULL)550return YYENOMEM;551552data->s_base = newss;553data->s_mark = newss + i;554555newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));556if (newvs == NULL)557return YYENOMEM;558559data->l_base = newvs;560data->l_mark = newvs + i;561562#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)563newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));564if (newps == NULL)565return YYENOMEM;566567data->p_base = newps;568data->p_mark = newps + i;569#endif570571data->stacksize = newsize;572data->s_last = data->s_base + newsize - 1;573574#if YYDEBUG575if (yydebug)576fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);577#endif578return 0;579}580581#if YYPURE || defined(YY_NO_LEAKS)582static void yyfreestack(YYSTACKDATA *data)583{584free(data->s_base);585free(data->l_base);586#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)587free(data->p_base);588#endif589memset(data, 0, sizeof(*data));590}591#else592#define yyfreestack(data) /* nothing */593#endif /* YYPURE || defined(YY_NO_LEAKS) */594#if YYBTYACC595596static YYParseState *597yyNewState(unsigned size)598{599YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));600if (p == NULL) return NULL;601602p->yystack.stacksize = size;603if (size == 0)604{605p->yystack.s_base = NULL;606p->yystack.l_base = NULL;607#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)608p->yystack.p_base = NULL;609#endif610return p;611}612p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT));613if (p->yystack.s_base == NULL) return NULL;614p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));615if (p->yystack.l_base == NULL) return NULL;616memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));617#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)618p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));619if (p->yystack.p_base == NULL) return NULL;620memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));621#endif622623return p;624}625626static void627yyFreeState(YYParseState *p)628{629yyfreestack(&p->yystack);630free(p);631}632#endif /* YYBTYACC */633634#define YYABORT goto yyabort635#define YYREJECT goto yyabort636#define YYACCEPT goto yyaccept637#define YYERROR goto yyerrlab638#if YYBTYACC639#define YYVALID do { if (yyps->save) goto yyvalid; } while(0)640#define YYVALID_NESTED do { if (yyps->save && \641yyps->save->save == 0) goto yyvalid; } while(0)642#endif /* YYBTYACC */643644int645YYPARSE_DECL()646{647int yym, yyn, yystate, yyresult;648#if YYBTYACC649int yynewerrflag;650YYParseState *yyerrctx = NULL;651#endif /* YYBTYACC */652#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)653YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */654#endif655#if YYDEBUG656const char *yys;657658if ((yys = getenv("YYDEBUG")) != NULL)659{660yyn = *yys;661if (yyn >= '0' && yyn <= '9')662yydebug = yyn - '0';663}664if (yydebug)665fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);666#endif667#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)668memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));669#endif670671#if YYBTYACC672yyps = yyNewState(0); if (yyps == 0) goto yyenomem;673yyps->save = 0;674#endif /* YYBTYACC */675yym = 0;676/* yyn is set below */677yynerrs = 0;678yyerrflag = 0;679yychar = YYEMPTY;680yystate = 0;681682#if YYPURE683memset(&yystack, 0, sizeof(yystack));684#endif685686if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;687yystack.s_mark = yystack.s_base;688yystack.l_mark = yystack.l_base;689#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)690yystack.p_mark = yystack.p_base;691#endif692yystate = 0;693*yystack.s_mark = 0;694695yyloop:696if ((yyn = yydefred[yystate]) != 0) goto yyreduce;697if (yychar < 0)698{699#if YYBTYACC700do {701if (yylvp < yylve)702{703/* we're currently re-reading tokens */704yylval = *yylvp++;705#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)706yylloc = *yylpp++;707#endif708yychar = *yylexp++;709break;710}711if (yyps->save)712{713/* in trial mode; save scanner results for future parse attempts */714if (yylvp == yylvlim)715{ /* Enlarge lexical value queue */716size_t p = (size_t) (yylvp - yylvals);717size_t s = (size_t) (yylvlim - yylvals);718719s += YYLVQUEUEGROWTH;720if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;721if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;722#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)723if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;724#endif725yylvp = yylve = yylvals + p;726yylvlim = yylvals + s;727#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)728yylpp = yylpe = yylpsns + p;729yylplim = yylpsns + s;730#endif731yylexp = yylexemes + p;732}733*yylexp = (YYINT) YYLEX;734*yylvp++ = yylval;735yylve++;736#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)737*yylpp++ = yylloc;738yylpe++;739#endif740yychar = *yylexp++;741break;742}743/* normal operation, no conflict encountered */744#endif /* YYBTYACC */745yychar = YYLEX;746#if YYBTYACC747} while (0);748#endif /* YYBTYACC */749if (yychar < 0) yychar = YYEOF;750#if YYDEBUG751if (yydebug)752{753if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];754fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",755YYDEBUGSTR, yydepth, yystate, yychar, yys);756#ifdef YYSTYPE_TOSTRING757#if YYBTYACC758if (!yytrial)759#endif /* YYBTYACC */760fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));761#endif762fputc('\n', stderr);763}764#endif765}766#if YYBTYACC767768/* Do we have a conflict? */769if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&770yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)771{772YYINT ctry;773774if (yypath)775{776YYParseState *save;777#if YYDEBUG778if (yydebug)779fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",780YYDEBUGSTR, yydepth, yystate);781#endif782/* Switch to the next conflict context */783save = yypath;784yypath = save->save;785save->save = NULL;786ctry = save->ctry;787if (save->state != yystate) YYABORT;788yyFreeState(save);789790}791else792{793794/* Unresolved conflict - start/continue trial parse */795YYParseState *save;796#if YYDEBUG797if (yydebug)798{799fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);800if (yyps->save)801fputs("ALREADY in conflict, continuing trial parse.\n", stderr);802else803fputs("Starting trial parse.\n", stderr);804}805#endif806save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));807if (save == NULL) goto yyenomem;808save->save = yyps->save;809save->state = yystate;810save->errflag = yyerrflag;811save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);812memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));813save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);814memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));815#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)816save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);817memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));818#endif819ctry = yytable[yyn];820if (yyctable[ctry] == -1)821{822#if YYDEBUG823if (yydebug && yychar >= YYEOF)824fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);825#endif826ctry++;827}828save->ctry = ctry;829if (yyps->save == NULL)830{831/* If this is a first conflict in the stack, start saving lexemes */832if (!yylexemes)833{834yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));835if (yylexemes == NULL) goto yyenomem;836yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));837if (yylvals == NULL) goto yyenomem;838yylvlim = yylvals + YYLVQUEUEGROWTH;839#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)840yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));841if (yylpsns == NULL) goto yyenomem;842yylplim = yylpsns + YYLVQUEUEGROWTH;843#endif844}845if (yylvp == yylve)846{847yylvp = yylve = yylvals;848#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)849yylpp = yylpe = yylpsns;850#endif851yylexp = yylexemes;852if (yychar >= YYEOF)853{854*yylve++ = yylval;855#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)856*yylpe++ = yylloc;857#endif858*yylexp = (YYINT) yychar;859yychar = YYEMPTY;860}861}862}863if (yychar >= YYEOF)864{865yylvp--;866#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)867yylpp--;868#endif869yylexp--;870yychar = YYEMPTY;871}872save->lexeme = (int) (yylvp - yylvals);873yyps->save = save;874}875if (yytable[yyn] == ctry)876{877#if YYDEBUG878if (yydebug)879fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",880YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);881#endif882if (yychar < 0)883{884yylvp++;885#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)886yylpp++;887#endif888yylexp++;889}890if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)891goto yyoverflow;892yystate = yyctable[ctry];893*++yystack.s_mark = (YYINT) yystate;894*++yystack.l_mark = yylval;895#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)896*++yystack.p_mark = yylloc;897#endif898yychar = YYEMPTY;899if (yyerrflag > 0) --yyerrflag;900goto yyloop;901}902else903{904yyn = yyctable[ctry];905goto yyreduce;906}907} /* End of code dealing with conflicts */908#endif /* YYBTYACC */909if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&910yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)911{912#if YYDEBUG913if (yydebug)914fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",915YYDEBUGSTR, yydepth, yystate, yytable[yyn]);916#endif917if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;918yystate = yytable[yyn];919*++yystack.s_mark = yytable[yyn];920*++yystack.l_mark = yylval;921#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)922*++yystack.p_mark = yylloc;923#endif924yychar = YYEMPTY;925if (yyerrflag > 0) --yyerrflag;926goto yyloop;927}928if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&929yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)930{931yyn = yytable[yyn];932goto yyreduce;933}934if (yyerrflag != 0) goto yyinrecovery;935#if YYBTYACC936937yynewerrflag = 1;938goto yyerrhandler;939goto yyerrlab; /* redundant goto avoids 'unused label' warning */940941yyerrlab:942/* explicit YYERROR from an action -- pop the rhs of the rule reduced943* before looking for error recovery */944yystack.s_mark -= yym;945yystate = *yystack.s_mark;946yystack.l_mark -= yym;947#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)948yystack.p_mark -= yym;949#endif950951yynewerrflag = 0;952yyerrhandler:953while (yyps->save)954{955int ctry;956YYParseState *save = yyps->save;957#if YYDEBUG958if (yydebug)959fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",960YYDEBUGSTR, yydepth, yystate, yyps->save->state,961(int)(yylvp - yylvals - yyps->save->lexeme));962#endif963/* Memorize most forward-looking error state in case it's really an error. */964if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)965{966/* Free old saved error context state */967if (yyerrctx) yyFreeState(yyerrctx);968/* Create and fill out new saved error context state */969yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));970if (yyerrctx == NULL) goto yyenomem;971yyerrctx->save = yyps->save;972yyerrctx->state = yystate;973yyerrctx->errflag = yyerrflag;974yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);975memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));976yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);977memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));978#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)979yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);980memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));981#endif982yyerrctx->lexeme = (int) (yylvp - yylvals);983}984yylvp = yylvals + save->lexeme;985#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)986yylpp = yylpsns + save->lexeme;987#endif988yylexp = yylexemes + save->lexeme;989yychar = YYEMPTY;990yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);991memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));992yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);993memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));994#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)995yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);996memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));997#endif998ctry = ++save->ctry;999yystate = save->state;1000/* We tried shift, try reduce now */1001if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;1002yyps->save = save->save;1003save->save = NULL;1004yyFreeState(save);10051006/* Nothing left on the stack -- error */1007if (!yyps->save)1008{1009#if YYDEBUG1010if (yydebug)1011fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",1012YYPREFIX, yydepth);1013#endif1014/* Restore state as it was in the most forward-advanced error */1015yylvp = yylvals + yyerrctx->lexeme;1016#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1017yylpp = yylpsns + yyerrctx->lexeme;1018#endif1019yylexp = yylexemes + yyerrctx->lexeme;1020yychar = yylexp[-1];1021yylval = yylvp[-1];1022#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1023yylloc = yylpp[-1];1024#endif1025yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);1026memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1027yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);1028memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1029#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1030yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);1031memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1032#endif1033yystate = yyerrctx->state;1034yyFreeState(yyerrctx);1035yyerrctx = NULL;1036}1037yynewerrflag = 1;1038}1039if (yynewerrflag == 0) goto yyinrecovery;1040#endif /* YYBTYACC */10411042YYERROR_CALL("syntax error");1043#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1044yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */1045#endif10461047#if !YYBTYACC1048goto yyerrlab; /* redundant goto avoids 'unused label' warning */1049yyerrlab:1050#endif1051++yynerrs;10521053yyinrecovery:1054if (yyerrflag < 3)1055{1056yyerrflag = 3;1057for (;;)1058{1059if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&1060yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)1061{1062#if YYDEBUG1063if (yydebug)1064fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",1065YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);1066#endif1067if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1068yystate = yytable[yyn];1069*++yystack.s_mark = yytable[yyn];1070*++yystack.l_mark = yylval;1071#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1072/* lookahead position is error end position */1073yyerror_loc_range[2] = yylloc;1074YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */1075*++yystack.p_mark = yyloc;1076#endif1077goto yyloop;1078}1079else1080{1081#if YYDEBUG1082if (yydebug)1083fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",1084YYDEBUGSTR, yydepth, *yystack.s_mark);1085#endif1086if (yystack.s_mark <= yystack.s_base) goto yyabort;1087#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1088/* the current TOS position is the error start position */1089yyerror_loc_range[1] = *yystack.p_mark;1090#endif1091#if defined(YYDESTRUCT_CALL)1092#if YYBTYACC1093if (!yytrial)1094#endif /* YYBTYACC */1095#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1096YYDESTRUCT_CALL("error: discarding state",1097yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);1098#else1099YYDESTRUCT_CALL("error: discarding state",1100yystos[*yystack.s_mark], yystack.l_mark);1101#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1102#endif /* defined(YYDESTRUCT_CALL) */1103--yystack.s_mark;1104--yystack.l_mark;1105#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1106--yystack.p_mark;1107#endif1108}1109}1110}1111else1112{1113if (yychar == YYEOF) goto yyabort;1114#if YYDEBUG1115if (yydebug)1116{1117if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1118fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",1119YYDEBUGSTR, yydepth, yystate, yychar, yys);1120}1121#endif1122#if defined(YYDESTRUCT_CALL)1123#if YYBTYACC1124if (!yytrial)1125#endif /* YYBTYACC */1126#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1127YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);1128#else1129YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);1130#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1131#endif /* defined(YYDESTRUCT_CALL) */1132yychar = YYEMPTY;1133goto yyloop;1134}11351136yyreduce:1137yym = yylen[yyn];1138#if YYDEBUG1139if (yydebug)1140{1141fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",1142YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);1143#ifdef YYSTYPE_TOSTRING1144#if YYBTYACC1145if (!yytrial)1146#endif /* YYBTYACC */1147if (yym > 0)1148{1149int i;1150fputc('<', stderr);1151for (i = yym; i > 0; i--)1152{1153if (i != yym) fputs(", ", stderr);1154fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],1155yystack.l_mark[1-i]), stderr);1156}1157fputc('>', stderr);1158}1159#endif1160fputc('\n', stderr);1161}1162#endif1163if (yym > 0)1164yyval = yystack.l_mark[1-yym];1165else1166memset(&yyval, 0, sizeof yyval);1167#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)11681169/* Perform position reduction */1170memset(&yyloc, 0, sizeof(yyloc));1171#if YYBTYACC1172if (!yytrial)1173#endif /* YYBTYACC */1174{1175YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);1176/* just in case YYERROR is invoked within the action, save1177the start of the rhs as the error start position */1178yyerror_loc_range[1] = yystack.p_mark[1-yym];1179}1180#endif11811182switch (yyn)1183{1184case 1:1185if (!yytrial)1186#line 62 "btyacc_destroy2.y"1187{ yyval.nlist = yystack.l_mark[-5].nlist; }1188#line 1190 "btyacc_destroy2.tab.c"1189break;1190case 2:1191if (!yytrial)1192#line 64 "btyacc_destroy2.y"1193{ yyval.nlist = yystack.l_mark[-3].nlist; }1194#line 1196 "btyacc_destroy2.tab.c"1195break;1196case 3:1197if (!yytrial)1198#line 67 "btyacc_destroy2.y"1199{ yyval.cval = cGLOBAL; }1200#line 1202 "btyacc_destroy2.tab.c"1201break;1202case 4:1203if (!yytrial)1204#line 68 "btyacc_destroy2.y"1205{ yyval.cval = cLOCAL; }1206#line 1208 "btyacc_destroy2.tab.c"1207break;1208case 5:1209if (!yytrial)1210#line 71 "btyacc_destroy2.y"1211{ yyval.tval = tREAL; }1212#line 1214 "btyacc_destroy2.tab.c"1213break;1214case 6:1215if (!yytrial)1216#line 72 "btyacc_destroy2.y"1217{ yyval.tval = tINTEGER; }1218#line 1220 "btyacc_destroy2.tab.c"1219break;1220case 7:1221if (!yytrial)1222#line 76 "btyacc_destroy2.y"1223{ yyval.nlist->s = mksymbol(yystack.l_mark[-2].tval, yystack.l_mark[-2].cval, yystack.l_mark[0].id);1224yyval.nlist->next = yystack.l_mark[-1].nlist;1225}1226#line 1228 "btyacc_destroy2.tab.c"1227break;1228case 8:1229if (!yytrial)1230#line 80 "btyacc_destroy2.y"1231{ yyval.nlist->s = mksymbol(0, 0, yystack.l_mark[0].id);1232yyval.nlist->next = NULL;1233}1234#line 1236 "btyacc_destroy2.tab.c"1235break;1236case 9:1237if (!yytrial)1238#line 86 "btyacc_destroy2.y"1239{ yyval.nlist = yystack.l_mark[-5].nlist; }1240#line 1242 "btyacc_destroy2.tab.c"1241break;1242#line 1244 "btyacc_destroy2.tab.c"1243default:1244break;1245}1246yystack.s_mark -= yym;1247yystate = *yystack.s_mark;1248yystack.l_mark -= yym;1249#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1250yystack.p_mark -= yym;1251#endif1252yym = yylhs[yyn];1253if (yystate == 0 && yym == 0)1254{1255#if YYDEBUG1256if (yydebug)1257{1258fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1259#ifdef YYSTYPE_TOSTRING1260#if YYBTYACC1261if (!yytrial)1262#endif /* YYBTYACC */1263fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));1264#endif1265fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);1266}1267#endif1268yystate = YYFINAL;1269*++yystack.s_mark = YYFINAL;1270*++yystack.l_mark = yyval;1271#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1272*++yystack.p_mark = yyloc;1273#endif1274if (yychar < 0)1275{1276#if YYBTYACC1277do {1278if (yylvp < yylve)1279{1280/* we're currently re-reading tokens */1281yylval = *yylvp++;1282#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1283yylloc = *yylpp++;1284#endif1285yychar = *yylexp++;1286break;1287}1288if (yyps->save)1289{1290/* in trial mode; save scanner results for future parse attempts */1291if (yylvp == yylvlim)1292{ /* Enlarge lexical value queue */1293size_t p = (size_t) (yylvp - yylvals);1294size_t s = (size_t) (yylvlim - yylvals);12951296s += YYLVQUEUEGROWTH;1297if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)1298goto yyenomem;1299if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)1300goto yyenomem;1301#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1302if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)1303goto yyenomem;1304#endif1305yylvp = yylve = yylvals + p;1306yylvlim = yylvals + s;1307#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1308yylpp = yylpe = yylpsns + p;1309yylplim = yylpsns + s;1310#endif1311yylexp = yylexemes + p;1312}1313*yylexp = (YYINT) YYLEX;1314*yylvp++ = yylval;1315yylve++;1316#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1317*yylpp++ = yylloc;1318yylpe++;1319#endif1320yychar = *yylexp++;1321break;1322}1323/* normal operation, no conflict encountered */1324#endif /* YYBTYACC */1325yychar = YYLEX;1326#if YYBTYACC1327} while (0);1328#endif /* YYBTYACC */1329if (yychar < 0) yychar = YYEOF;1330#if YYDEBUG1331if (yydebug)1332{1333if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1334fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",1335YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);1336}1337#endif1338}1339if (yychar == YYEOF) goto yyaccept;1340goto yyloop;1341}1342if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&1343yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)1344yystate = yytable[yyn];1345else1346yystate = yydgoto[yym];1347#if YYDEBUG1348if (yydebug)1349{1350fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1351#ifdef YYSTYPE_TOSTRING1352#if YYBTYACC1353if (!yytrial)1354#endif /* YYBTYACC */1355fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));1356#endif1357fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);1358}1359#endif1360if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1361*++yystack.s_mark = (YYINT) yystate;1362*++yystack.l_mark = yyval;1363#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1364*++yystack.p_mark = yyloc;1365#endif1366goto yyloop;1367#if YYBTYACC13681369/* Reduction declares that this path is valid. Set yypath and do a full parse */1370yyvalid:1371if (yypath) YYABORT;1372while (yyps->save)1373{1374YYParseState *save = yyps->save;1375yyps->save = save->save;1376save->save = yypath;1377yypath = save;1378}1379#if YYDEBUG1380if (yydebug)1381fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",1382YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));1383#endif1384if (yyerrctx)1385{1386yyFreeState(yyerrctx);1387yyerrctx = NULL;1388}1389yylvp = yylvals + yypath->lexeme;1390#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1391yylpp = yylpsns + yypath->lexeme;1392#endif1393yylexp = yylexemes + yypath->lexeme;1394yychar = YYEMPTY;1395yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);1396memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1397yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);1398memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1399#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1400yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);1401memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1402#endif1403yystate = yypath->state;1404goto yyloop;1405#endif /* YYBTYACC */14061407yyoverflow:1408YYERROR_CALL("yacc stack overflow");1409#if YYBTYACC1410goto yyabort_nomem;1411yyenomem:1412YYERROR_CALL("memory exhausted");1413yyabort_nomem:1414#endif /* YYBTYACC */1415yyresult = 2;1416goto yyreturn;14171418yyabort:1419yyresult = 1;1420goto yyreturn;14211422yyaccept:1423#if YYBTYACC1424if (yyps->save) goto yyvalid;1425#endif /* YYBTYACC */1426yyresult = 0;14271428yyreturn:1429#if defined(YYDESTRUCT_CALL)1430if (yychar != YYEOF && yychar != YYEMPTY)1431#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1432YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);1433#else1434YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);1435#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */14361437{1438YYSTYPE *pv;1439#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1440YYLTYPE *pp;14411442for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)1443YYDESTRUCT_CALL("cleanup: discarding state",1444yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);1445#else1446for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)1447YYDESTRUCT_CALL("cleanup: discarding state",1448yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);1449#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1450}1451#endif /* defined(YYDESTRUCT_CALL) */14521453#if YYBTYACC1454if (yyerrctx)1455{1456yyFreeState(yyerrctx);1457yyerrctx = NULL;1458}1459while (yyps)1460{1461YYParseState *save = yyps;1462yyps = save->save;1463save->save = NULL;1464yyFreeState(save);1465}1466while (yypath)1467{1468YYParseState *save = yypath;1469yypath = save->save;1470save->save = NULL;1471yyFreeState(save);1472}1473#endif /* YYBTYACC */1474yyfreestack(&yystack);1475return (yyresult);1476}147714781479