Path: blob/main/contrib/byacc/test/btyacc/calc3.tab.c
48082 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 017#define YYDEBUGSTR YYPREFIX "debug"1819#ifndef yyparse20#define yyparse calc3_parse21#endif /* yyparse */2223#ifndef yylex24#define yylex calc3_lex25#endif /* yylex */2627#ifndef yyerror28#define yyerror calc3_error29#endif /* yyerror */3031#ifndef yychar32#define yychar calc3_char33#endif /* yychar */3435#ifndef yyval36#define yyval calc3_val37#endif /* yyval */3839#ifndef yylval40#define yylval calc3_lval41#endif /* yylval */4243#ifndef yydebug44#define yydebug calc3_debug45#endif /* yydebug */4647#ifndef yynerrs48#define yynerrs calc3_nerrs49#endif /* yynerrs */5051#ifndef yyerrflag52#define yyerrflag calc3_errflag53#endif /* yyerrflag */5455#ifndef yylhs56#define yylhs calc3_lhs57#endif /* yylhs */5859#ifndef yylen60#define yylen calc3_len61#endif /* yylen */6263#ifndef yydefred64#define yydefred calc3_defred65#endif /* yydefred */6667#ifndef yystos68#define yystos calc3_stos69#endif /* yystos */7071#ifndef yydgoto72#define yydgoto calc3_dgoto73#endif /* yydgoto */7475#ifndef yysindex76#define yysindex calc3_sindex77#endif /* yysindex */7879#ifndef yyrindex80#define yyrindex calc3_rindex81#endif /* yyrindex */8283#ifndef yygindex84#define yygindex calc3_gindex85#endif /* yygindex */8687#ifndef yytable88#define yytable calc3_table89#endif /* yytable */9091#ifndef yycheck92#define yycheck calc3_check93#endif /* yycheck */9495#ifndef yyname96#define yyname calc3_name97#endif /* yyname */9899#ifndef yyrule100#define yyrule calc3_rule101#endif /* yyrule */102103#if YYBTYACC104105#ifndef yycindex106#define yycindex calc3_cindex107#endif /* yycindex */108109#ifndef yyctable110#define yyctable calc3_ctable111#endif /* yyctable */112113#endif /* YYBTYACC */114115#define YYPREFIX "calc3_"116117#define YYPURE 1118119#line 9 "calc3.y"120# include <stdio.h>121# include <ctype.h>122123#ifdef YYBISON124#define YYSTYPE int125#define YYLEX_PARAM base126#define YYLEX_DECL() yylex(YYSTYPE *yylval, int *YYLEX_PARAM)127#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)128int YYLEX_DECL();129static void YYERROR_DECL();130#endif131132#line 134 "calc3.tab.c"133134#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)135/* Default: YYSTYPE is the semantic value type. */136typedef int YYSTYPE;137# define YYSTYPE_IS_DECLARED 1138#endif139140/* compatibility with bison */141#ifdef YYPARSE_PARAM142/* compatibility with FreeBSD */143# ifdef YYPARSE_PARAM_TYPE144# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)145# else146# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)147# endif148#else149# define YYPARSE_DECL() yyparse(int regs[26], int *base)150#endif151152/* Parameters sent to lex. */153#ifdef YYLEX_PARAM154# ifdef YYLEX_PARAM_TYPE155# define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)156# else157# define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)158# endif159# define YYLEX yylex(&yylval, YYLEX_PARAM)160#else161# define YYLEX_DECL() yylex(YYSTYPE *yylval, int *base)162# define YYLEX yylex(&yylval, base)163#endif164165/* Parameters sent to yyerror. */166#ifndef YYERROR_DECL167#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)168#endif169#ifndef YYERROR_CALL170#define YYERROR_CALL(msg) yyerror(regs, base, msg)171#endif172173extern int YYPARSE_DECL();174175#define DIGIT 257176#define LETTER 258177#define UMINUS 259178#define YYERRCODE 256179typedef int YYINT;180static const YYINT calc3_lhs[] = { -1,1810, 0, 0, 1, 1, 2, 2, 2, 2, 2,1822, 2, 2, 2, 2, 2, 3, 3,183};184static const YYINT calc3_len[] = { 2,1850, 3, 3, 1, 3, 3, 3, 3, 3, 3,1863, 3, 3, 2, 1, 1, 1, 2,187};188static const YYINT calc3_defred[] = { 1,1890, 0, 17, 0, 0, 0, 0, 0, 0, 3,1900, 15, 14, 0, 2, 0, 0, 0, 0, 0,1910, 0, 18, 0, 6, 0, 0, 0, 0, 9,19210, 11,193};194#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)195static const YYINT calc3_stos[] = { 0,196261, 256, 257, 258, 45, 40, 262, 263, 264, 10,19761, 258, 263, 263, 10, 124, 38, 43, 45, 42,19847, 37, 257, 263, 41, 263, 263, 263, 263, 263,199263, 263,200};201#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */202static const YYINT calc3_dgoto[] = { 1,2037, 8, 9,204};205static const YYINT calc3_sindex[] = { 0,206-40, -7, 0, -55, -38, -38, 1, -29, -247, 0,207-38, 0, 0, 22, 0, -38, -38, -38, -38, -38,208-38, -38, 0, -29, 0, 51, 60, -20, -20, 0,2090, 0,210};211static const YYINT calc3_rindex[] = { 0,2120, 0, 0, 2, 0, 0, 0, 9, -9, 0,2130, 0, 0, 0, 0, 0, 0, 0, 0, 0,2140, 0, 0, 10, 0, -6, 14, 5, 13, 0,2150, 0,216};217#if YYBTYACC218static const YYINT calc3_cindex[] = { 0,2190, 0, 0, 0, 0, 0, 0, 0, 0, 0,2200, 0, 0, 0, 0, 0, 0, 0, 0, 0,2210, 0, 0, 0, 0, 0, 0, 0, 0, 0,2220, 0,223};224#endif225static const YYINT calc3_gindex[] = { 0,2260, 65, 0,227};228#define YYTABLESIZE 220229static const YYINT calc3_table[] = { 6,23016, 6, 10, 13, 5, 11, 5, 22, 17, 23,23115, 15, 20, 18, 7, 19, 22, 21, 4, 5,2320, 20, 8, 12, 0, 0, 21, 16, 16, 0,2330, 16, 16, 16, 13, 16, 0, 16, 15, 15,2340, 0, 7, 15, 15, 7, 15, 7, 15, 7,2358, 12, 0, 8, 12, 8, 0, 8, 22, 17,2360, 0, 25, 20, 18, 0, 19, 0, 21, 13,23714, 0, 0, 0, 0, 24, 0, 0, 0, 0,23826, 27, 28, 29, 30, 31, 32, 22, 17, 0,2390, 0, 20, 18, 16, 19, 22, 21, 0, 0,2400, 20, 18, 0, 19, 0, 21, 0, 0, 0,2410, 0, 0, 0, 16, 0, 0, 13, 0, 0,2420, 0, 0, 0, 0, 15, 0, 0, 7, 0,2430, 0, 0, 0, 0, 0, 8, 12, 0, 0,2440, 0, 0, 0, 0, 16, 0, 0, 0, 0,2450, 0, 0, 0, 0, 0, 0, 0, 0, 0,2460, 0, 0, 0, 0, 0, 0, 0, 0, 0,2470, 0, 0, 0, 0, 0, 0, 0, 0, 0,2480, 0, 0, 0, 0, 0, 0, 0, 0, 0,2490, 0, 0, 0, 0, 0, 0, 0, 0, 0,2500, 0, 0, 0, 0, 0, 0, 0, 0, 0,2510, 0, 0, 0, 0, 2, 3, 4, 3, 12,252};253static const YYINT calc3_check[] = { 40,25410, 40, 10, 10, 45, 61, 45, 37, 38, 257,25510, 10, 42, 43, 10, 45, 37, 47, 10, 10,256-1, 42, 10, 10, -1, -1, 47, 37, 38, -1,257-1, 41, 42, 43, 41, 45, -1, 47, 37, 38,258-1, -1, 38, 42, 43, 41, 45, 43, 47, 45,25938, 38, -1, 41, 41, 43, -1, 45, 37, 38,260-1, -1, 41, 42, 43, -1, 45, -1, 47, 5,2616, -1, -1, -1, -1, 11, -1, -1, -1, -1,26216, 17, 18, 19, 20, 21, 22, 37, 38, -1,263-1, -1, 42, 43, 124, 45, 37, 47, -1, -1,264-1, 42, 43, -1, 45, -1, 47, -1, -1, -1,265-1, -1, -1, -1, 124, -1, -1, 124, -1, -1,266-1, -1, -1, -1, -1, 124, -1, -1, 124, -1,267-1, -1, -1, -1, -1, -1, 124, 124, -1, -1,268-1, -1, -1, -1, -1, 124, -1, -1, -1, -1,269-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,270-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,271-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,272-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,273-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,274-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,275-1, -1, -1, -1, -1, 256, 257, 258, 257, 258,276};277#if YYBTYACC278static const YYINT calc3_ctable[] = { -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,295-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,296-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,297-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,298-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,299-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,300-1, -1, -1, -1, -1, -1, -1, -1, -1,301};302#endif303#define YYFINAL 1304#ifndef YYDEBUG305#define YYDEBUG 0306#endif307#define YYMAXTOKEN 259308#define YYUNDFTOKEN 265309#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))310#if YYDEBUG311static const char *const calc3_name[] = {312313"$end",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3140,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,3150,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,3160,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,3170,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,3180,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,3190,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,3200,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number",321"illegal-symbol",322};323static const char *const calc3_rule[] = {324"$accept : list",325"list :",326"list : list stat '\\n'",327"list : list error '\\n'",328"stat : expr",329"stat : LETTER '=' expr",330"expr : '(' expr ')'",331"expr : expr '+' expr",332"expr : expr '-' expr",333"expr : expr '*' expr",334"expr : expr '/' expr",335"expr : expr '%' expr",336"expr : expr '&' expr",337"expr : expr '|' expr",338"expr : '-' expr",339"expr : LETTER",340"expr : number",341"number : DIGIT",342"number : number DIGIT",343344};345#endif346347#if YYDEBUG348int yydebug;349#endif350351#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)352#ifndef YYLLOC_DEFAULT353#define YYLLOC_DEFAULT(loc, rhs, n) \354do \355{ \356if (n == 0) \357{ \358(loc).first_line = YYRHSLOC(rhs, 0).last_line; \359(loc).first_column = YYRHSLOC(rhs, 0).last_column; \360(loc).last_line = YYRHSLOC(rhs, 0).last_line; \361(loc).last_column = YYRHSLOC(rhs, 0).last_column; \362} \363else \364{ \365(loc).first_line = YYRHSLOC(rhs, 1).first_line; \366(loc).first_column = YYRHSLOC(rhs, 1).first_column; \367(loc).last_line = YYRHSLOC(rhs, n).last_line; \368(loc).last_column = YYRHSLOC(rhs, n).last_column; \369} \370} while (0)371#endif /* YYLLOC_DEFAULT */372#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */373#if YYBTYACC374375#ifndef YYLVQUEUEGROWTH376#define YYLVQUEUEGROWTH 32377#endif378#endif /* YYBTYACC */379380/* define the initial stack-sizes */381#ifdef YYSTACKSIZE382#undef YYMAXDEPTH383#define YYMAXDEPTH YYSTACKSIZE384#else385#ifdef YYMAXDEPTH386#define YYSTACKSIZE YYMAXDEPTH387#else388#define YYSTACKSIZE 10000389#define YYMAXDEPTH 10000390#endif391#endif392393#ifndef YYINITSTACKSIZE394#define YYINITSTACKSIZE 200395#endif396397typedef struct {398unsigned stacksize;399YYINT *s_base;400YYINT *s_mark;401YYINT *s_last;402YYSTYPE *l_base;403YYSTYPE *l_mark;404#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)405YYLTYPE *p_base;406YYLTYPE *p_mark;407#endif408} YYSTACKDATA;409#if YYBTYACC410411struct YYParseState_s412{413struct YYParseState_s *save; /* Previously saved parser state */414YYSTACKDATA yystack; /* saved parser stack */415int state; /* saved parser state */416int errflag; /* saved error recovery status */417int lexeme; /* saved index of the conflict lexeme in the lexical queue */418YYINT ctry; /* saved index in yyctable[] for this conflict */419};420typedef struct YYParseState_s YYParseState;421#endif /* YYBTYACC */422#line 76 "calc3.y"423/* start of programs */424425#ifdef YYBYACC426extern int YYLEX_DECL();427#endif428429int430main (void)431{432int regs[26];433int base = 10;434435while(!feof(stdin)) {436yyparse(regs, &base);437}438return 0;439}440441#define UNUSED(x) ((void)(x))442443static void444YYERROR_DECL()445{446UNUSED(regs); /* %parse-param regs is not actually used here */447UNUSED(base); /* %parse-param base is not actually used here */448fprintf(stderr, "%s\n", s);449}450451int452YYLEX_DECL()453{454/* lexical analysis routine */455/* returns LETTER for a lower case letter, yylval = 0 through 25 */456/* return DIGIT for a digit, yylval = 0 through 9 */457/* all other characters are returned immediately */458459int c;460461while( (c=getchar()) == ' ' ) { /* skip blanks */ }462463/* c is now nonblank */464465if( islower( c )) {466*yylval = (c - 'a');467return ( LETTER );468}469if( isdigit( c )) {470*yylval = (c - '0') % (*base);471return ( DIGIT );472}473return( c );474}475#line 477 "calc3.tab.c"476477/* For use in generated program */478#define yydepth (int)(yystack.s_mark - yystack.s_base)479#if YYBTYACC480#define yytrial (yyps->save)481#endif /* YYBTYACC */482483#if YYDEBUG484#include <stdio.h> /* needed for printf */485#endif486487#include <stdlib.h> /* needed for malloc, etc */488#include <string.h> /* needed for memset */489490/* allocate initial stack or double stack size, up to YYMAXDEPTH */491static int yygrowstack(YYSTACKDATA *data)492{493int i;494unsigned newsize;495YYINT *newss;496YYSTYPE *newvs;497#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)498YYLTYPE *newps;499#endif500501if ((newsize = data->stacksize) == 0)502newsize = YYINITSTACKSIZE;503else if (newsize >= YYMAXDEPTH)504return YYENOMEM;505else if ((newsize *= 2) > YYMAXDEPTH)506newsize = YYMAXDEPTH;507508i = (int) (data->s_mark - data->s_base);509newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));510if (newss == NULL)511return YYENOMEM;512513data->s_base = newss;514data->s_mark = newss + i;515516newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));517if (newvs == NULL)518return YYENOMEM;519520data->l_base = newvs;521data->l_mark = newvs + i;522523#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)524newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));525if (newps == NULL)526return YYENOMEM;527528data->p_base = newps;529data->p_mark = newps + i;530#endif531532data->stacksize = newsize;533data->s_last = data->s_base + newsize - 1;534535#if YYDEBUG536if (yydebug)537fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);538#endif539return 0;540}541542#if YYPURE || defined(YY_NO_LEAKS)543static void yyfreestack(YYSTACKDATA *data)544{545free(data->s_base);546free(data->l_base);547#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)548free(data->p_base);549#endif550memset(data, 0, sizeof(*data));551}552#else553#define yyfreestack(data) /* nothing */554#endif /* YYPURE || defined(YY_NO_LEAKS) */555#if YYBTYACC556557static YYParseState *558yyNewState(unsigned size)559{560YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));561if (p == NULL) return NULL;562563p->yystack.stacksize = size;564if (size == 0)565{566p->yystack.s_base = NULL;567p->yystack.l_base = NULL;568#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)569p->yystack.p_base = NULL;570#endif571return p;572}573p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT));574if (p->yystack.s_base == NULL) return NULL;575p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));576if (p->yystack.l_base == NULL) return NULL;577memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));578#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)579p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));580if (p->yystack.p_base == NULL) return NULL;581memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));582#endif583584return p;585}586587static void588yyFreeState(YYParseState *p)589{590yyfreestack(&p->yystack);591free(p);592}593#endif /* YYBTYACC */594595#define YYABORT goto yyabort596#define YYREJECT goto yyabort597#define YYACCEPT goto yyaccept598#define YYERROR goto yyerrlab599#if YYBTYACC600#define YYVALID do { if (yyps->save) goto yyvalid; } while(0)601#define YYVALID_NESTED do { if (yyps->save && \602yyps->save->save == 0) goto yyvalid; } while(0)603#endif /* YYBTYACC */604605int606YYPARSE_DECL()607{608int yyerrflag;609int yychar;610YYSTYPE yyval;611YYSTYPE yylval;612int yynerrs;613614#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)615YYLTYPE yyloc; /* position returned by actions */616YYLTYPE yylloc; /* position from the lexer */617#endif618619/* variables for the parser stack */620YYSTACKDATA yystack;621#if YYBTYACC622623/* Current parser state */624static YYParseState *yyps = 0;625626/* yypath != NULL: do the full parse, starting at *yypath parser state. */627static YYParseState *yypath = 0;628629/* Base of the lexical value queue */630static YYSTYPE *yylvals = 0;631632/* Current position at lexical value queue */633static YYSTYPE *yylvp = 0;634635/* End position of lexical value queue */636static YYSTYPE *yylve = 0;637638/* The last allocated position at the lexical value queue */639static YYSTYPE *yylvlim = 0;640641#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)642/* Base of the lexical position queue */643static YYLTYPE *yylpsns = 0;644645/* Current position at lexical position queue */646static YYLTYPE *yylpp = 0;647648/* End position of lexical position queue */649static YYLTYPE *yylpe = 0;650651/* The last allocated position at the lexical position queue */652static YYLTYPE *yylplim = 0;653#endif654655/* Current position at lexical token queue */656static YYINT *yylexp = 0;657658static YYINT *yylexemes = 0;659#endif /* YYBTYACC */660int yym, yyn, yystate, yyresult;661#if YYBTYACC662int yynewerrflag;663YYParseState *yyerrctx = NULL;664#endif /* YYBTYACC */665#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)666YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */667#endif668#if YYDEBUG669const char *yys;670671if ((yys = getenv("YYDEBUG")) != NULL)672{673yyn = *yys;674if (yyn >= '0' && yyn <= '9')675yydebug = yyn - '0';676}677if (yydebug)678fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);679#endif680#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)681memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));682#endif683684yyerrflag = 0;685yychar = 0;686memset(&yyval, 0, sizeof(yyval));687memset(&yylval, 0, sizeof(yylval));688#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)689memset(&yyloc, 0, sizeof(yyloc));690memset(&yylloc, 0, sizeof(yylloc));691#endif692693#if YYBTYACC694yyps = yyNewState(0); if (yyps == 0) goto yyenomem;695yyps->save = 0;696#endif /* YYBTYACC */697yym = 0;698/* yyn is set below */699yynerrs = 0;700yyerrflag = 0;701yychar = YYEMPTY;702yystate = 0;703704#if YYPURE705memset(&yystack, 0, sizeof(yystack));706#endif707708if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;709yystack.s_mark = yystack.s_base;710yystack.l_mark = yystack.l_base;711#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)712yystack.p_mark = yystack.p_base;713#endif714yystate = 0;715*yystack.s_mark = 0;716717yyloop:718if ((yyn = yydefred[yystate]) != 0) goto yyreduce;719if (yychar < 0)720{721#if YYBTYACC722do {723if (yylvp < yylve)724{725/* we're currently re-reading tokens */726yylval = *yylvp++;727#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)728yylloc = *yylpp++;729#endif730yychar = *yylexp++;731break;732}733if (yyps->save)734{735/* in trial mode; save scanner results for future parse attempts */736if (yylvp == yylvlim)737{ /* Enlarge lexical value queue */738size_t p = (size_t) (yylvp - yylvals);739size_t s = (size_t) (yylvlim - yylvals);740741s += YYLVQUEUEGROWTH;742if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;743if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;744#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)745if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;746#endif747yylvp = yylve = yylvals + p;748yylvlim = yylvals + s;749#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)750yylpp = yylpe = yylpsns + p;751yylplim = yylpsns + s;752#endif753yylexp = yylexemes + p;754}755*yylexp = (YYINT) YYLEX;756*yylvp++ = yylval;757yylve++;758#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)759*yylpp++ = yylloc;760yylpe++;761#endif762yychar = *yylexp++;763break;764}765/* normal operation, no conflict encountered */766#endif /* YYBTYACC */767yychar = YYLEX;768#if YYBTYACC769} while (0);770#endif /* YYBTYACC */771if (yychar < 0) yychar = YYEOF;772#if YYDEBUG773if (yydebug)774{775if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];776fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",777YYDEBUGSTR, yydepth, yystate, yychar, yys);778#ifdef YYSTYPE_TOSTRING779#if YYBTYACC780if (!yytrial)781#endif /* YYBTYACC */782fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));783#endif784fputc('\n', stderr);785}786#endif787}788#if YYBTYACC789790/* Do we have a conflict? */791if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&792yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)793{794YYINT ctry;795796if (yypath)797{798YYParseState *save;799#if YYDEBUG800if (yydebug)801fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",802YYDEBUGSTR, yydepth, yystate);803#endif804/* Switch to the next conflict context */805save = yypath;806yypath = save->save;807save->save = NULL;808ctry = save->ctry;809if (save->state != yystate) YYABORT;810yyFreeState(save);811812}813else814{815816/* Unresolved conflict - start/continue trial parse */817YYParseState *save;818#if YYDEBUG819if (yydebug)820{821fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);822if (yyps->save)823fputs("ALREADY in conflict, continuing trial parse.\n", stderr);824else825fputs("Starting trial parse.\n", stderr);826}827#endif828save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));829if (save == NULL) goto yyenomem;830save->save = yyps->save;831save->state = yystate;832save->errflag = yyerrflag;833save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);834memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));835save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);836memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));837#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)838save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);839memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));840#endif841ctry = yytable[yyn];842if (yyctable[ctry] == -1)843{844#if YYDEBUG845if (yydebug && yychar >= YYEOF)846fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);847#endif848ctry++;849}850save->ctry = ctry;851if (yyps->save == NULL)852{853/* If this is a first conflict in the stack, start saving lexemes */854if (!yylexemes)855{856yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));857if (yylexemes == NULL) goto yyenomem;858yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));859if (yylvals == NULL) goto yyenomem;860yylvlim = yylvals + YYLVQUEUEGROWTH;861#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)862yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));863if (yylpsns == NULL) goto yyenomem;864yylplim = yylpsns + YYLVQUEUEGROWTH;865#endif866}867if (yylvp == yylve)868{869yylvp = yylve = yylvals;870#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)871yylpp = yylpe = yylpsns;872#endif873yylexp = yylexemes;874if (yychar >= YYEOF)875{876*yylve++ = yylval;877#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)878*yylpe++ = yylloc;879#endif880*yylexp = (YYINT) yychar;881yychar = YYEMPTY;882}883}884}885if (yychar >= YYEOF)886{887yylvp--;888#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)889yylpp--;890#endif891yylexp--;892yychar = YYEMPTY;893}894save->lexeme = (int) (yylvp - yylvals);895yyps->save = save;896}897if (yytable[yyn] == ctry)898{899#if YYDEBUG900if (yydebug)901fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",902YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);903#endif904if (yychar < 0)905{906yylvp++;907#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)908yylpp++;909#endif910yylexp++;911}912if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)913goto yyoverflow;914yystate = yyctable[ctry];915*++yystack.s_mark = (YYINT) yystate;916*++yystack.l_mark = yylval;917#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)918*++yystack.p_mark = yylloc;919#endif920yychar = YYEMPTY;921if (yyerrflag > 0) --yyerrflag;922goto yyloop;923}924else925{926yyn = yyctable[ctry];927goto yyreduce;928}929} /* End of code dealing with conflicts */930#endif /* YYBTYACC */931if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&932yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)933{934#if YYDEBUG935if (yydebug)936fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",937YYDEBUGSTR, yydepth, yystate, yytable[yyn]);938#endif939if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;940yystate = yytable[yyn];941*++yystack.s_mark = yytable[yyn];942*++yystack.l_mark = yylval;943#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)944*++yystack.p_mark = yylloc;945#endif946yychar = YYEMPTY;947if (yyerrflag > 0) --yyerrflag;948goto yyloop;949}950if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&951yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)952{953yyn = yytable[yyn];954goto yyreduce;955}956if (yyerrflag != 0) goto yyinrecovery;957#if YYBTYACC958959yynewerrflag = 1;960goto yyerrhandler;961goto yyerrlab; /* redundant goto avoids 'unused label' warning */962963yyerrlab:964/* explicit YYERROR from an action -- pop the rhs of the rule reduced965* before looking for error recovery */966yystack.s_mark -= yym;967yystate = *yystack.s_mark;968yystack.l_mark -= yym;969#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)970yystack.p_mark -= yym;971#endif972973yynewerrflag = 0;974yyerrhandler:975while (yyps->save)976{977int ctry;978YYParseState *save = yyps->save;979#if YYDEBUG980if (yydebug)981fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",982YYDEBUGSTR, yydepth, yystate, yyps->save->state,983(int)(yylvp - yylvals - yyps->save->lexeme));984#endif985/* Memorize most forward-looking error state in case it's really an error. */986if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)987{988/* Free old saved error context state */989if (yyerrctx) yyFreeState(yyerrctx);990/* Create and fill out new saved error context state */991yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));992if (yyerrctx == NULL) goto yyenomem;993yyerrctx->save = yyps->save;994yyerrctx->state = yystate;995yyerrctx->errflag = yyerrflag;996yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);997memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));998yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);999memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1000#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1001yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);1002memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1003#endif1004yyerrctx->lexeme = (int) (yylvp - yylvals);1005}1006yylvp = yylvals + save->lexeme;1007#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1008yylpp = yylpsns + save->lexeme;1009#endif1010yylexp = yylexemes + save->lexeme;1011yychar = YYEMPTY;1012yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);1013memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1014yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);1015memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1016#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1017yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);1018memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1019#endif1020ctry = ++save->ctry;1021yystate = save->state;1022/* We tried shift, try reduce now */1023if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;1024yyps->save = save->save;1025save->save = NULL;1026yyFreeState(save);10271028/* Nothing left on the stack -- error */1029if (!yyps->save)1030{1031#if YYDEBUG1032if (yydebug)1033fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",1034YYPREFIX, yydepth);1035#endif1036/* Restore state as it was in the most forward-advanced error */1037yylvp = yylvals + yyerrctx->lexeme;1038#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1039yylpp = yylpsns + yyerrctx->lexeme;1040#endif1041yylexp = yylexemes + yyerrctx->lexeme;1042yychar = yylexp[-1];1043yylval = yylvp[-1];1044#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1045yylloc = yylpp[-1];1046#endif1047yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);1048memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1049yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);1050memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1051#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1052yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);1053memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1054#endif1055yystate = yyerrctx->state;1056yyFreeState(yyerrctx);1057yyerrctx = NULL;1058}1059yynewerrflag = 1;1060}1061if (yynewerrflag == 0) goto yyinrecovery;1062#endif /* YYBTYACC */10631064YYERROR_CALL("syntax error");1065#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1066yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */1067#endif10681069#if !YYBTYACC1070goto yyerrlab; /* redundant goto avoids 'unused label' warning */1071yyerrlab:1072#endif1073++yynerrs;10741075yyinrecovery:1076if (yyerrflag < 3)1077{1078yyerrflag = 3;1079for (;;)1080{1081if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&1082yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)1083{1084#if YYDEBUG1085if (yydebug)1086fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",1087YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);1088#endif1089if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1090yystate = yytable[yyn];1091*++yystack.s_mark = yytable[yyn];1092*++yystack.l_mark = yylval;1093#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1094/* lookahead position is error end position */1095yyerror_loc_range[2] = yylloc;1096YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */1097*++yystack.p_mark = yyloc;1098#endif1099goto yyloop;1100}1101else1102{1103#if YYDEBUG1104if (yydebug)1105fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",1106YYDEBUGSTR, yydepth, *yystack.s_mark);1107#endif1108if (yystack.s_mark <= yystack.s_base) goto yyabort;1109#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1110/* the current TOS position is the error start position */1111yyerror_loc_range[1] = *yystack.p_mark;1112#endif1113#if defined(YYDESTRUCT_CALL)1114#if YYBTYACC1115if (!yytrial)1116#endif /* YYBTYACC */1117#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1118YYDESTRUCT_CALL("error: discarding state",1119yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);1120#else1121YYDESTRUCT_CALL("error: discarding state",1122yystos[*yystack.s_mark], yystack.l_mark);1123#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1124#endif /* defined(YYDESTRUCT_CALL) */1125--yystack.s_mark;1126--yystack.l_mark;1127#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1128--yystack.p_mark;1129#endif1130}1131}1132}1133else1134{1135if (yychar == YYEOF) goto yyabort;1136#if YYDEBUG1137if (yydebug)1138{1139if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1140fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",1141YYDEBUGSTR, yydepth, yystate, yychar, yys);1142}1143#endif1144#if defined(YYDESTRUCT_CALL)1145#if YYBTYACC1146if (!yytrial)1147#endif /* YYBTYACC */1148#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1149YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);1150#else1151YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);1152#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1153#endif /* defined(YYDESTRUCT_CALL) */1154yychar = YYEMPTY;1155goto yyloop;1156}11571158yyreduce:1159yym = yylen[yyn];1160#if YYDEBUG1161if (yydebug)1162{1163fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",1164YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);1165#ifdef YYSTYPE_TOSTRING1166#if YYBTYACC1167if (!yytrial)1168#endif /* YYBTYACC */1169if (yym > 0)1170{1171int i;1172fputc('<', stderr);1173for (i = yym; i > 0; i--)1174{1175if (i != yym) fputs(", ", stderr);1176fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],1177yystack.l_mark[1-i]), stderr);1178}1179fputc('>', stderr);1180}1181#endif1182fputc('\n', stderr);1183}1184#endif1185if (yym > 0)1186yyval = yystack.l_mark[1-yym];1187else1188memset(&yyval, 0, sizeof yyval);1189#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)11901191/* Perform position reduction */1192memset(&yyloc, 0, sizeof(yyloc));1193#if YYBTYACC1194if (!yytrial)1195#endif /* YYBTYACC */1196{1197YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);1198/* just in case YYERROR is invoked within the action, save1199the start of the rhs as the error start position */1200yyerror_loc_range[1] = yystack.p_mark[1-yym];1201}1202#endif12031204switch (yyn)1205{1206case 3:1207#line 38 "calc3.y"1208{ yyerrok ; }1209#line 1211 "calc3.tab.c"1210break;1211case 4:1212#line 42 "calc3.y"1213{ printf("%d\n",yystack.l_mark[0]);}1214#line 1216 "calc3.tab.c"1215break;1216case 5:1217#line 44 "calc3.y"1218{ regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }1219#line 1221 "calc3.tab.c"1220break;1221case 6:1222#line 48 "calc3.y"1223{ yyval = yystack.l_mark[-1]; }1224#line 1226 "calc3.tab.c"1225break;1226case 7:1227#line 50 "calc3.y"1228{ yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }1229#line 1231 "calc3.tab.c"1230break;1231case 8:1232#line 52 "calc3.y"1233{ yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }1234#line 1236 "calc3.tab.c"1235break;1236case 9:1237#line 54 "calc3.y"1238{ yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }1239#line 1241 "calc3.tab.c"1240break;1241case 10:1242#line 56 "calc3.y"1243{ yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }1244#line 1246 "calc3.tab.c"1245break;1246case 11:1247#line 58 "calc3.y"1248{ yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }1249#line 1251 "calc3.tab.c"1250break;1251case 12:1252#line 60 "calc3.y"1253{ yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }1254#line 1256 "calc3.tab.c"1255break;1256case 13:1257#line 62 "calc3.y"1258{ yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }1259#line 1261 "calc3.tab.c"1260break;1261case 14:1262#line 64 "calc3.y"1263{ yyval = - yystack.l_mark[0]; }1264#line 1266 "calc3.tab.c"1265break;1266case 15:1267#line 66 "calc3.y"1268{ yyval = regs[yystack.l_mark[0]]; }1269#line 1271 "calc3.tab.c"1270break;1271case 17:1272#line 71 "calc3.y"1273{ yyval = yystack.l_mark[0]; (*base) = (yystack.l_mark[0]==0) ? 8 : 10; }1274#line 1276 "calc3.tab.c"1275break;1276case 18:1277#line 73 "calc3.y"1278{ yyval = (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; }1279#line 1281 "calc3.tab.c"1280break;1281#line 1283 "calc3.tab.c"1282default:1283break;1284}1285yystack.s_mark -= yym;1286yystate = *yystack.s_mark;1287yystack.l_mark -= yym;1288#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1289yystack.p_mark -= yym;1290#endif1291yym = yylhs[yyn];1292if (yystate == 0 && yym == 0)1293{1294#if YYDEBUG1295if (yydebug)1296{1297fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1298#ifdef YYSTYPE_TOSTRING1299#if YYBTYACC1300if (!yytrial)1301#endif /* YYBTYACC */1302fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));1303#endif1304fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);1305}1306#endif1307yystate = YYFINAL;1308*++yystack.s_mark = YYFINAL;1309*++yystack.l_mark = yyval;1310#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1311*++yystack.p_mark = yyloc;1312#endif1313if (yychar < 0)1314{1315#if YYBTYACC1316do {1317if (yylvp < yylve)1318{1319/* we're currently re-reading tokens */1320yylval = *yylvp++;1321#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1322yylloc = *yylpp++;1323#endif1324yychar = *yylexp++;1325break;1326}1327if (yyps->save)1328{1329/* in trial mode; save scanner results for future parse attempts */1330if (yylvp == yylvlim)1331{ /* Enlarge lexical value queue */1332size_t p = (size_t) (yylvp - yylvals);1333size_t s = (size_t) (yylvlim - yylvals);13341335s += YYLVQUEUEGROWTH;1336if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)1337goto yyenomem;1338if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)1339goto yyenomem;1340#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1341if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)1342goto yyenomem;1343#endif1344yylvp = yylve = yylvals + p;1345yylvlim = yylvals + s;1346#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1347yylpp = yylpe = yylpsns + p;1348yylplim = yylpsns + s;1349#endif1350yylexp = yylexemes + p;1351}1352*yylexp = (YYINT) YYLEX;1353*yylvp++ = yylval;1354yylve++;1355#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1356*yylpp++ = yylloc;1357yylpe++;1358#endif1359yychar = *yylexp++;1360break;1361}1362/* normal operation, no conflict encountered */1363#endif /* YYBTYACC */1364yychar = YYLEX;1365#if YYBTYACC1366} while (0);1367#endif /* YYBTYACC */1368if (yychar < 0) yychar = YYEOF;1369#if YYDEBUG1370if (yydebug)1371{1372if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1373fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",1374YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);1375}1376#endif1377}1378if (yychar == YYEOF) goto yyaccept;1379goto yyloop;1380}1381if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&1382yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)1383yystate = yytable[yyn];1384else1385yystate = yydgoto[yym];1386#if YYDEBUG1387if (yydebug)1388{1389fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1390#ifdef YYSTYPE_TOSTRING1391#if YYBTYACC1392if (!yytrial)1393#endif /* YYBTYACC */1394fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));1395#endif1396fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);1397}1398#endif1399if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1400*++yystack.s_mark = (YYINT) yystate;1401*++yystack.l_mark = yyval;1402#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1403*++yystack.p_mark = yyloc;1404#endif1405goto yyloop;1406#if YYBTYACC14071408/* Reduction declares that this path is valid. Set yypath and do a full parse */1409yyvalid:1410if (yypath) YYABORT;1411while (yyps->save)1412{1413YYParseState *save = yyps->save;1414yyps->save = save->save;1415save->save = yypath;1416yypath = save;1417}1418#if YYDEBUG1419if (yydebug)1420fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",1421YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));1422#endif1423if (yyerrctx)1424{1425yyFreeState(yyerrctx);1426yyerrctx = NULL;1427}1428yylvp = yylvals + yypath->lexeme;1429#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1430yylpp = yylpsns + yypath->lexeme;1431#endif1432yylexp = yylexemes + yypath->lexeme;1433yychar = YYEMPTY;1434yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);1435memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1436yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);1437memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1438#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1439yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);1440memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1441#endif1442yystate = yypath->state;1443goto yyloop;1444#endif /* YYBTYACC */14451446yyoverflow:1447YYERROR_CALL("yacc stack overflow");1448#if YYBTYACC1449goto yyabort_nomem;1450yyenomem:1451YYERROR_CALL("memory exhausted");1452yyabort_nomem:1453#endif /* YYBTYACC */1454yyresult = 2;1455goto yyreturn;14561457yyabort:1458yyresult = 1;1459goto yyreturn;14601461yyaccept:1462#if YYBTYACC1463if (yyps->save) goto yyvalid;1464#endif /* YYBTYACC */1465yyresult = 0;14661467yyreturn:1468#if defined(YYDESTRUCT_CALL)1469if (yychar != YYEOF && yychar != YYEMPTY)1470#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1471YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);1472#else1473YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);1474#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */14751476{1477YYSTYPE *pv;1478#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1479YYLTYPE *pp;14801481for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)1482YYDESTRUCT_CALL("cleanup: discarding state",1483yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);1484#else1485for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)1486YYDESTRUCT_CALL("cleanup: discarding state",1487yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);1488#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1489}1490#endif /* defined(YYDESTRUCT_CALL) */14911492#if YYBTYACC1493if (yyerrctx)1494{1495yyFreeState(yyerrctx);1496yyerrctx = NULL;1497}1498while (yyps)1499{1500YYParseState *save = yyps;1501yyps = save->save;1502save->save = NULL;1503yyFreeState(save);1504}1505while (yypath)1506{1507YYParseState *save = yypath;1508yypath = save->save;1509save->save = NULL;1510yyFreeState(save);1511}1512#endif /* YYBTYACC */1513yyfreestack(&yystack);1514return (yyresult);1515}151615171518