Path: blob/main/contrib/byacc/test/btyacc/calc_code_default.tab.c
48081 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 calc_code_default_parse21#endif /* yyparse */2223#ifndef yylex24#define yylex calc_code_default_lex25#endif /* yylex */2627#ifndef yyerror28#define yyerror calc_code_default_error29#endif /* yyerror */3031#ifndef yychar32#define yychar calc_code_default_char33#endif /* yychar */3435#ifndef yyval36#define yyval calc_code_default_val37#endif /* yyval */3839#ifndef yylval40#define yylval calc_code_default_lval41#endif /* yylval */4243#ifndef yydebug44#define yydebug calc_code_default_debug45#endif /* yydebug */4647#ifndef yynerrs48#define yynerrs calc_code_default_nerrs49#endif /* yynerrs */5051#ifndef yyerrflag52#define yyerrflag calc_code_default_errflag53#endif /* yyerrflag */5455#ifndef yylhs56#define yylhs calc_code_default_lhs57#endif /* yylhs */5859#ifndef yylen60#define yylen calc_code_default_len61#endif /* yylen */6263#ifndef yydefred64#define yydefred calc_code_default_defred65#endif /* yydefred */6667#ifndef yystos68#define yystos calc_code_default_stos69#endif /* yystos */7071#ifndef yydgoto72#define yydgoto calc_code_default_dgoto73#endif /* yydgoto */7475#ifndef yysindex76#define yysindex calc_code_default_sindex77#endif /* yysindex */7879#ifndef yyrindex80#define yyrindex calc_code_default_rindex81#endif /* yyrindex */8283#ifndef yygindex84#define yygindex calc_code_default_gindex85#endif /* yygindex */8687#ifndef yytable88#define yytable calc_code_default_table89#endif /* yytable */9091#ifndef yycheck92#define yycheck calc_code_default_check93#endif /* yycheck */9495#ifndef yyname96#define yyname calc_code_default_name97#endif /* yyname */9899#ifndef yyrule100#define yyrule calc_code_default_rule101#endif /* yyrule */102103#if YYBTYACC104105#ifndef yycindex106#define yycindex calc_code_default_cindex107#endif /* yycindex */108109#ifndef yyctable110#define yyctable calc_code_default_ctable111#endif /* yyctable */112113#endif /* YYBTYACC */114115#define YYPREFIX "calc_code_default_"116117#define YYPURE 0118119#line 5 "calc_code_default.y"120# include <stdio.h>121# include <ctype.h>122123int regs[26];124int base;125126extern int yylex(void);127static void yyerror(const char *s);128129#line 131 "calc_code_default.tab.c"130131#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)132/* Default: YYSTYPE is the semantic value type. */133typedef int YYSTYPE;134# define YYSTYPE_IS_DECLARED 1135#endif136137/* compatibility with bison */138#ifdef YYPARSE_PARAM139/* compatibility with FreeBSD */140# ifdef YYPARSE_PARAM_TYPE141# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)142# else143# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)144# endif145#else146# define YYPARSE_DECL() yyparse(void)147#endif148149/* Parameters sent to lex. */150#ifdef YYLEX_PARAM151# define YYLEX_DECL() yylex(void *YYLEX_PARAM)152# define YYLEX yylex(YYLEX_PARAM)153#else154# define YYLEX_DECL() yylex(void)155# define YYLEX yylex()156#endif157158/* Parameters sent to yyerror. */159#ifndef YYERROR_DECL160#define YYERROR_DECL() yyerror(const char *s)161#endif162#ifndef YYERROR_CALL163#define YYERROR_CALL(msg) yyerror(msg)164#endif165166extern int YYPARSE_DECL();167168#define DIGIT 257169#define LETTER 258170#define UMINUS 259171#define YYERRCODE 256172typedef int YYINT;173static const YYINT calc_code_default_lhs[] = { -1,1740, 0, 0, 1, 1, 2, 2, 2, 2, 2,1752, 2, 2, 2, 2, 2, 3, 3,176};177static const YYINT calc_code_default_len[] = { 2,1780, 3, 3, 1, 3, 3, 3, 3, 3, 3,1793, 3, 3, 2, 1, 1, 1, 2,180};181static const YYINT calc_code_default_defred[] = { 1,1820, 0, 17, 0, 0, 0, 0, 0, 0, 3,1830, 15, 14, 0, 2, 0, 0, 0, 0, 0,1840, 0, 18, 0, 6, 0, 0, 0, 0, 9,18510, 11,186};187#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)188static const YYINT calc_code_default_stos[] = { 0,189261, 256, 257, 258, 45, 40, 262, 263, 264, 10,19061, 258, 263, 263, 10, 124, 38, 43, 45, 42,19147, 37, 257, 263, 41, 263, 263, 263, 263, 263,192263, 263,193};194#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */195static const YYINT calc_code_default_dgoto[] = { 1,1967, 8, 9,197};198static const YYINT calc_code_default_sindex[] = { 0,199-40, -7, 0, -55, -38, -38, 1, -29, -247, 0,200-38, 0, 0, 22, 0, -38, -38, -38, -38, -38,201-38, -38, 0, -29, 0, 51, 60, -20, -20, 0,2020, 0,203};204static const YYINT calc_code_default_rindex[] = { 0,2050, 0, 0, 2, 0, 0, 0, 9, -9, 0,2060, 0, 0, 0, 0, 0, 0, 0, 0, 0,2070, 0, 0, 10, 0, -6, 14, 5, 13, 0,2080, 0,209};210#if YYBTYACC211static const YYINT calc_code_default_cindex[] = { 0,2120, 0, 0, 0, 0, 0, 0, 0, 0, 0,2130, 0, 0, 0, 0, 0, 0, 0, 0, 0,2140, 0, 0, 0, 0, 0, 0, 0, 0, 0,2150, 0,216};217#endif218static const YYINT calc_code_default_gindex[] = { 0,2190, 65, 0,220};221#define YYTABLESIZE 220222static const YYINT calc_code_default_table[] = { 6,22316, 6, 10, 13, 5, 11, 5, 22, 17, 23,22415, 15, 20, 18, 7, 19, 22, 21, 4, 5,2250, 20, 8, 12, 0, 0, 21, 16, 16, 0,2260, 16, 16, 16, 13, 16, 0, 16, 15, 15,2270, 0, 7, 15, 15, 7, 15, 7, 15, 7,2288, 12, 0, 8, 12, 8, 0, 8, 22, 17,2290, 0, 25, 20, 18, 0, 19, 0, 21, 13,23014, 0, 0, 0, 0, 24, 0, 0, 0, 0,23126, 27, 28, 29, 30, 31, 32, 22, 17, 0,2320, 0, 20, 18, 16, 19, 22, 21, 0, 0,2330, 20, 18, 0, 19, 0, 21, 0, 0, 0,2340, 0, 0, 0, 16, 0, 0, 13, 0, 0,2350, 0, 0, 0, 0, 15, 0, 0, 7, 0,2360, 0, 0, 0, 0, 0, 8, 12, 0, 0,2370, 0, 0, 0, 0, 16, 0, 0, 0, 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, 0, 0, 0, 0,2410, 0, 0, 0, 0, 0, 0, 0, 0, 0,2420, 0, 0, 0, 0, 0, 0, 0, 0, 0,2430, 0, 0, 0, 0, 0, 0, 0, 0, 0,2440, 0, 0, 0, 0, 2, 3, 4, 3, 12,245};246static const YYINT calc_code_default_check[] = { 40,24710, 40, 10, 10, 45, 61, 45, 37, 38, 257,24810, 10, 42, 43, 10, 45, 37, 47, 10, 10,249-1, 42, 10, 10, -1, -1, 47, 37, 38, -1,250-1, 41, 42, 43, 41, 45, -1, 47, 37, 38,251-1, -1, 38, 42, 43, 41, 45, 43, 47, 45,25238, 38, -1, 41, 41, 43, -1, 45, 37, 38,253-1, -1, 41, 42, 43, -1, 45, -1, 47, 5,2546, -1, -1, -1, -1, 11, -1, -1, -1, -1,25516, 17, 18, 19, 20, 21, 22, 37, 38, -1,256-1, -1, 42, 43, 124, 45, 37, 47, -1, -1,257-1, 42, 43, -1, 45, -1, 47, -1, -1, -1,258-1, -1, -1, -1, 124, -1, -1, 124, -1, -1,259-1, -1, -1, -1, -1, 124, -1, -1, 124, -1,260-1, -1, -1, -1, -1, -1, 124, 124, -1, -1,261-1, -1, -1, -1, -1, 124, -1, -1, -1, -1,262-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,263-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,264-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,265-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,266-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,267-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,268-1, -1, -1, -1, -1, 256, 257, 258, 257, 258,269};270#if YYBTYACC271static const YYINT calc_code_default_ctable[] = { -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, -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,294};295#endif296#define YYFINAL 1297#ifndef YYDEBUG298#define YYDEBUG 0299#endif300#define YYMAXTOKEN 259301#define YYUNDFTOKEN 265302#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))303#if YYDEBUG304static const char *const calc_code_default_name[] = {305306"$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,3070,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,3080,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,3090,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,3100,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,3110,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,3120,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,3130,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number",314"illegal-symbol",315};316static const char *const calc_code_default_rule[] = {317"$accept : list",318"list :",319"list : list stat '\\n'",320"list : list error '\\n'",321"stat : expr",322"stat : LETTER '=' expr",323"expr : '(' expr ')'",324"expr : expr '+' expr",325"expr : expr '-' expr",326"expr : expr '*' expr",327"expr : expr '/' expr",328"expr : expr '%' expr",329"expr : expr '&' expr",330"expr : expr '|' expr",331"expr : '-' expr",332"expr : LETTER",333"expr : number",334"number : DIGIT",335"number : number DIGIT",336337};338#endif339340#if YYDEBUG341int yydebug;342#endif343344int yyerrflag;345int yychar;346YYSTYPE yyval;347YYSTYPE yylval;348int yynerrs;349350#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)351YYLTYPE yyloc; /* position returned by actions */352YYLTYPE yylloc; /* position from the lexer */353#endif354355#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)356#ifndef YYLLOC_DEFAULT357#define YYLLOC_DEFAULT(loc, rhs, n) \358do \359{ \360if (n == 0) \361{ \362(loc).first_line = YYRHSLOC(rhs, 0).last_line; \363(loc).first_column = YYRHSLOC(rhs, 0).last_column; \364(loc).last_line = YYRHSLOC(rhs, 0).last_line; \365(loc).last_column = YYRHSLOC(rhs, 0).last_column; \366} \367else \368{ \369(loc).first_line = YYRHSLOC(rhs, 1).first_line; \370(loc).first_column = YYRHSLOC(rhs, 1).first_column; \371(loc).last_line = YYRHSLOC(rhs, n).last_line; \372(loc).last_column = YYRHSLOC(rhs, n).last_column; \373} \374} while (0)375#endif /* YYLLOC_DEFAULT */376#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */377#if YYBTYACC378379#ifndef YYLVQUEUEGROWTH380#define YYLVQUEUEGROWTH 32381#endif382#endif /* YYBTYACC */383384/* define the initial stack-sizes */385#ifdef YYSTACKSIZE386#undef YYMAXDEPTH387#define YYMAXDEPTH YYSTACKSIZE388#else389#ifdef YYMAXDEPTH390#define YYSTACKSIZE YYMAXDEPTH391#else392#define YYSTACKSIZE 10000393#define YYMAXDEPTH 10000394#endif395#endif396397#ifndef YYINITSTACKSIZE398#define YYINITSTACKSIZE 200399#endif400401typedef struct {402unsigned stacksize;403YYINT *s_base;404YYINT *s_mark;405YYINT *s_last;406YYSTYPE *l_base;407YYSTYPE *l_mark;408#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)409YYLTYPE *p_base;410YYLTYPE *p_mark;411#endif412} YYSTACKDATA;413#if YYBTYACC414415struct YYParseState_s416{417struct YYParseState_s *save; /* Previously saved parser state */418YYSTACKDATA yystack; /* saved parser stack */419int state; /* saved parser state */420int errflag; /* saved error recovery status */421int lexeme; /* saved index of the conflict lexeme in the lexical queue */422YYINT ctry; /* saved index in yyctable[] for this conflict */423};424typedef struct YYParseState_s YYParseState;425#endif /* YYBTYACC */426/* variables for the parser stack */427static YYSTACKDATA yystack;428#if YYBTYACC429430/* Current parser state */431static YYParseState *yyps = 0;432433/* yypath != NULL: do the full parse, starting at *yypath parser state. */434static YYParseState *yypath = 0;435436/* Base of the lexical value queue */437static YYSTYPE *yylvals = 0;438439/* Current position at lexical value queue */440static YYSTYPE *yylvp = 0;441442/* End position of lexical value queue */443static YYSTYPE *yylve = 0;444445/* The last allocated position at the lexical value queue */446static YYSTYPE *yylvlim = 0;447448#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)449/* Base of the lexical position queue */450static YYLTYPE *yylpsns = 0;451452/* Current position at lexical position queue */453static YYLTYPE *yylpp = 0;454455/* End position of lexical position queue */456static YYLTYPE *yylpe = 0;457458/* The last allocated position at the lexical position queue */459static YYLTYPE *yylplim = 0;460#endif461462/* Current position at lexical token queue */463static YYINT *yylexp = 0;464465static YYINT *yylexemes = 0;466#endif /* YYBTYACC */467468/* %code "" block start */469#line 1 "calc_code_default.y"470/* CODE-DEFAULT */471#line 2 "calc_code_default.y"472/* CODE-DEFAULT2 */473/* %code "" block end */474#line 476 "calc_code_default.tab.c"475#line 69 "calc_code_default.y"476/* start of programs */477478int479main (void)480{481while(!feof(stdin)) {482yyparse();483}484return 0;485}486487static void488yyerror(const char *s)489{490fprintf(stderr, "%s\n", s);491}492493int494yylex(void)495{496/* lexical analysis routine */497/* returns LETTER for a lower case letter, yylval = 0 through 25 */498/* return DIGIT for a digit, yylval = 0 through 9 */499/* all other characters are returned immediately */500501int c;502503while( (c=getchar()) == ' ' ) { /* skip blanks */ }504505/* c is now nonblank */506507if( islower( c )) {508yylval = c - 'a';509return ( LETTER );510}511if( isdigit( c )) {512yylval = c - '0';513return ( DIGIT );514}515return( c );516}517#line 519 "calc_code_default.tab.c"518519/* For use in generated program */520#define yydepth (int)(yystack.s_mark - yystack.s_base)521#if YYBTYACC522#define yytrial (yyps->save)523#endif /* YYBTYACC */524525#if YYDEBUG526#include <stdio.h> /* needed for printf */527#endif528529#include <stdlib.h> /* needed for malloc, etc */530#include <string.h> /* needed for memset */531532/* allocate initial stack or double stack size, up to YYMAXDEPTH */533static int yygrowstack(YYSTACKDATA *data)534{535int i;536unsigned newsize;537YYINT *newss;538YYSTYPE *newvs;539#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)540YYLTYPE *newps;541#endif542543if ((newsize = data->stacksize) == 0)544newsize = YYINITSTACKSIZE;545else if (newsize >= YYMAXDEPTH)546return YYENOMEM;547else if ((newsize *= 2) > YYMAXDEPTH)548newsize = YYMAXDEPTH;549550i = (int) (data->s_mark - data->s_base);551newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));552if (newss == NULL)553return YYENOMEM;554555data->s_base = newss;556data->s_mark = newss + i;557558newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));559if (newvs == NULL)560return YYENOMEM;561562data->l_base = newvs;563data->l_mark = newvs + i;564565#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)566newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));567if (newps == NULL)568return YYENOMEM;569570data->p_base = newps;571data->p_mark = newps + i;572#endif573574data->stacksize = newsize;575data->s_last = data->s_base + newsize - 1;576577#if YYDEBUG578if (yydebug)579fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);580#endif581return 0;582}583584#if YYPURE || defined(YY_NO_LEAKS)585static void yyfreestack(YYSTACKDATA *data)586{587free(data->s_base);588free(data->l_base);589#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)590free(data->p_base);591#endif592memset(data, 0, sizeof(*data));593}594#else595#define yyfreestack(data) /* nothing */596#endif /* YYPURE || defined(YY_NO_LEAKS) */597#if YYBTYACC598599static YYParseState *600yyNewState(unsigned size)601{602YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));603if (p == NULL) return NULL;604605p->yystack.stacksize = size;606if (size == 0)607{608p->yystack.s_base = NULL;609p->yystack.l_base = NULL;610#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)611p->yystack.p_base = NULL;612#endif613return p;614}615p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT));616if (p->yystack.s_base == NULL) return NULL;617p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));618if (p->yystack.l_base == NULL) return NULL;619memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));620#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)621p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));622if (p->yystack.p_base == NULL) return NULL;623memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));624#endif625626return p;627}628629static void630yyFreeState(YYParseState *p)631{632yyfreestack(&p->yystack);633free(p);634}635#endif /* YYBTYACC */636637#define YYABORT goto yyabort638#define YYREJECT goto yyabort639#define YYACCEPT goto yyaccept640#define YYERROR goto yyerrlab641#if YYBTYACC642#define YYVALID do { if (yyps->save) goto yyvalid; } while(0)643#define YYVALID_NESTED do { if (yyps->save && \644yyps->save->save == 0) goto yyvalid; } while(0)645#endif /* YYBTYACC */646647int648YYPARSE_DECL()649{650int yym, yyn, yystate, yyresult;651#if YYBTYACC652int yynewerrflag;653YYParseState *yyerrctx = NULL;654#endif /* YYBTYACC */655#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)656YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */657#endif658#if YYDEBUG659const char *yys;660661if ((yys = getenv("YYDEBUG")) != NULL)662{663yyn = *yys;664if (yyn >= '0' && yyn <= '9')665yydebug = yyn - '0';666}667if (yydebug)668fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);669#endif670#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)671memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));672#endif673674#if YYBTYACC675yyps = yyNewState(0); if (yyps == 0) goto yyenomem;676yyps->save = 0;677#endif /* YYBTYACC */678yym = 0;679/* yyn is set below */680yynerrs = 0;681yyerrflag = 0;682yychar = YYEMPTY;683yystate = 0;684685#if YYPURE686memset(&yystack, 0, sizeof(yystack));687#endif688689if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;690yystack.s_mark = yystack.s_base;691yystack.l_mark = yystack.l_base;692#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)693yystack.p_mark = yystack.p_base;694#endif695yystate = 0;696*yystack.s_mark = 0;697698yyloop:699if ((yyn = yydefred[yystate]) != 0) goto yyreduce;700if (yychar < 0)701{702#if YYBTYACC703do {704if (yylvp < yylve)705{706/* we're currently re-reading tokens */707yylval = *yylvp++;708#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)709yylloc = *yylpp++;710#endif711yychar = *yylexp++;712break;713}714if (yyps->save)715{716/* in trial mode; save scanner results for future parse attempts */717if (yylvp == yylvlim)718{ /* Enlarge lexical value queue */719size_t p = (size_t) (yylvp - yylvals);720size_t s = (size_t) (yylvlim - yylvals);721722s += YYLVQUEUEGROWTH;723if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;724if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;725#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)726if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;727#endif728yylvp = yylve = yylvals + p;729yylvlim = yylvals + s;730#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)731yylpp = yylpe = yylpsns + p;732yylplim = yylpsns + s;733#endif734yylexp = yylexemes + p;735}736*yylexp = (YYINT) YYLEX;737*yylvp++ = yylval;738yylve++;739#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)740*yylpp++ = yylloc;741yylpe++;742#endif743yychar = *yylexp++;744break;745}746/* normal operation, no conflict encountered */747#endif /* YYBTYACC */748yychar = YYLEX;749#if YYBTYACC750} while (0);751#endif /* YYBTYACC */752if (yychar < 0) yychar = YYEOF;753#if YYDEBUG754if (yydebug)755{756if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];757fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",758YYDEBUGSTR, yydepth, yystate, yychar, yys);759#ifdef YYSTYPE_TOSTRING760#if YYBTYACC761if (!yytrial)762#endif /* YYBTYACC */763fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));764#endif765fputc('\n', stderr);766}767#endif768}769#if YYBTYACC770771/* Do we have a conflict? */772if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&773yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)774{775YYINT ctry;776777if (yypath)778{779YYParseState *save;780#if YYDEBUG781if (yydebug)782fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",783YYDEBUGSTR, yydepth, yystate);784#endif785/* Switch to the next conflict context */786save = yypath;787yypath = save->save;788save->save = NULL;789ctry = save->ctry;790if (save->state != yystate) YYABORT;791yyFreeState(save);792793}794else795{796797/* Unresolved conflict - start/continue trial parse */798YYParseState *save;799#if YYDEBUG800if (yydebug)801{802fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);803if (yyps->save)804fputs("ALREADY in conflict, continuing trial parse.\n", stderr);805else806fputs("Starting trial parse.\n", stderr);807}808#endif809save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));810if (save == NULL) goto yyenomem;811save->save = yyps->save;812save->state = yystate;813save->errflag = yyerrflag;814save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);815memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));816save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);817memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));818#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)819save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);820memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));821#endif822ctry = yytable[yyn];823if (yyctable[ctry] == -1)824{825#if YYDEBUG826if (yydebug && yychar >= YYEOF)827fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);828#endif829ctry++;830}831save->ctry = ctry;832if (yyps->save == NULL)833{834/* If this is a first conflict in the stack, start saving lexemes */835if (!yylexemes)836{837yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));838if (yylexemes == NULL) goto yyenomem;839yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));840if (yylvals == NULL) goto yyenomem;841yylvlim = yylvals + YYLVQUEUEGROWTH;842#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)843yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));844if (yylpsns == NULL) goto yyenomem;845yylplim = yylpsns + YYLVQUEUEGROWTH;846#endif847}848if (yylvp == yylve)849{850yylvp = yylve = yylvals;851#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)852yylpp = yylpe = yylpsns;853#endif854yylexp = yylexemes;855if (yychar >= YYEOF)856{857*yylve++ = yylval;858#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)859*yylpe++ = yylloc;860#endif861*yylexp = (YYINT) yychar;862yychar = YYEMPTY;863}864}865}866if (yychar >= YYEOF)867{868yylvp--;869#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)870yylpp--;871#endif872yylexp--;873yychar = YYEMPTY;874}875save->lexeme = (int) (yylvp - yylvals);876yyps->save = save;877}878if (yytable[yyn] == ctry)879{880#if YYDEBUG881if (yydebug)882fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",883YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);884#endif885if (yychar < 0)886{887yylvp++;888#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)889yylpp++;890#endif891yylexp++;892}893if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)894goto yyoverflow;895yystate = yyctable[ctry];896*++yystack.s_mark = (YYINT) yystate;897*++yystack.l_mark = yylval;898#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)899*++yystack.p_mark = yylloc;900#endif901yychar = YYEMPTY;902if (yyerrflag > 0) --yyerrflag;903goto yyloop;904}905else906{907yyn = yyctable[ctry];908goto yyreduce;909}910} /* End of code dealing with conflicts */911#endif /* YYBTYACC */912if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&913yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)914{915#if YYDEBUG916if (yydebug)917fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",918YYDEBUGSTR, yydepth, yystate, yytable[yyn]);919#endif920if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;921yystate = yytable[yyn];922*++yystack.s_mark = yytable[yyn];923*++yystack.l_mark = yylval;924#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)925*++yystack.p_mark = yylloc;926#endif927yychar = YYEMPTY;928if (yyerrflag > 0) --yyerrflag;929goto yyloop;930}931if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&932yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)933{934yyn = yytable[yyn];935goto yyreduce;936}937if (yyerrflag != 0) goto yyinrecovery;938#if YYBTYACC939940yynewerrflag = 1;941goto yyerrhandler;942goto yyerrlab; /* redundant goto avoids 'unused label' warning */943944yyerrlab:945/* explicit YYERROR from an action -- pop the rhs of the rule reduced946* before looking for error recovery */947yystack.s_mark -= yym;948yystate = *yystack.s_mark;949yystack.l_mark -= yym;950#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)951yystack.p_mark -= yym;952#endif953954yynewerrflag = 0;955yyerrhandler:956while (yyps->save)957{958int ctry;959YYParseState *save = yyps->save;960#if YYDEBUG961if (yydebug)962fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",963YYDEBUGSTR, yydepth, yystate, yyps->save->state,964(int)(yylvp - yylvals - yyps->save->lexeme));965#endif966/* Memorize most forward-looking error state in case it's really an error. */967if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)968{969/* Free old saved error context state */970if (yyerrctx) yyFreeState(yyerrctx);971/* Create and fill out new saved error context state */972yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));973if (yyerrctx == NULL) goto yyenomem;974yyerrctx->save = yyps->save;975yyerrctx->state = yystate;976yyerrctx->errflag = yyerrflag;977yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);978memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));979yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);980memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));981#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)982yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);983memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));984#endif985yyerrctx->lexeme = (int) (yylvp - yylvals);986}987yylvp = yylvals + save->lexeme;988#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)989yylpp = yylpsns + save->lexeme;990#endif991yylexp = yylexemes + save->lexeme;992yychar = YYEMPTY;993yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);994memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));995yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);996memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));997#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)998yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);999memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1000#endif1001ctry = ++save->ctry;1002yystate = save->state;1003/* We tried shift, try reduce now */1004if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;1005yyps->save = save->save;1006save->save = NULL;1007yyFreeState(save);10081009/* Nothing left on the stack -- error */1010if (!yyps->save)1011{1012#if YYDEBUG1013if (yydebug)1014fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",1015YYPREFIX, yydepth);1016#endif1017/* Restore state as it was in the most forward-advanced error */1018yylvp = yylvals + yyerrctx->lexeme;1019#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1020yylpp = yylpsns + yyerrctx->lexeme;1021#endif1022yylexp = yylexemes + yyerrctx->lexeme;1023yychar = yylexp[-1];1024yylval = yylvp[-1];1025#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1026yylloc = yylpp[-1];1027#endif1028yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);1029memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1030yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);1031memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1032#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1033yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);1034memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1035#endif1036yystate = yyerrctx->state;1037yyFreeState(yyerrctx);1038yyerrctx = NULL;1039}1040yynewerrflag = 1;1041}1042if (yynewerrflag == 0) goto yyinrecovery;1043#endif /* YYBTYACC */10441045YYERROR_CALL("syntax error");1046#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1047yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */1048#endif10491050#if !YYBTYACC1051goto yyerrlab; /* redundant goto avoids 'unused label' warning */1052yyerrlab:1053#endif1054++yynerrs;10551056yyinrecovery:1057if (yyerrflag < 3)1058{1059yyerrflag = 3;1060for (;;)1061{1062if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&1063yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)1064{1065#if YYDEBUG1066if (yydebug)1067fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",1068YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);1069#endif1070if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1071yystate = yytable[yyn];1072*++yystack.s_mark = yytable[yyn];1073*++yystack.l_mark = yylval;1074#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1075/* lookahead position is error end position */1076yyerror_loc_range[2] = yylloc;1077YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */1078*++yystack.p_mark = yyloc;1079#endif1080goto yyloop;1081}1082else1083{1084#if YYDEBUG1085if (yydebug)1086fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",1087YYDEBUGSTR, yydepth, *yystack.s_mark);1088#endif1089if (yystack.s_mark <= yystack.s_base) goto yyabort;1090#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1091/* the current TOS position is the error start position */1092yyerror_loc_range[1] = *yystack.p_mark;1093#endif1094#if defined(YYDESTRUCT_CALL)1095#if YYBTYACC1096if (!yytrial)1097#endif /* YYBTYACC */1098#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1099YYDESTRUCT_CALL("error: discarding state",1100yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);1101#else1102YYDESTRUCT_CALL("error: discarding state",1103yystos[*yystack.s_mark], yystack.l_mark);1104#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1105#endif /* defined(YYDESTRUCT_CALL) */1106--yystack.s_mark;1107--yystack.l_mark;1108#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1109--yystack.p_mark;1110#endif1111}1112}1113}1114else1115{1116if (yychar == YYEOF) goto yyabort;1117#if YYDEBUG1118if (yydebug)1119{1120if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1121fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",1122YYDEBUGSTR, yydepth, yystate, yychar, yys);1123}1124#endif1125#if defined(YYDESTRUCT_CALL)1126#if YYBTYACC1127if (!yytrial)1128#endif /* YYBTYACC */1129#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1130YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);1131#else1132YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);1133#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1134#endif /* defined(YYDESTRUCT_CALL) */1135yychar = YYEMPTY;1136goto yyloop;1137}11381139yyreduce:1140yym = yylen[yyn];1141#if YYDEBUG1142if (yydebug)1143{1144fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",1145YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);1146#ifdef YYSTYPE_TOSTRING1147#if YYBTYACC1148if (!yytrial)1149#endif /* YYBTYACC */1150if (yym > 0)1151{1152int i;1153fputc('<', stderr);1154for (i = yym; i > 0; i--)1155{1156if (i != yym) fputs(", ", stderr);1157fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],1158yystack.l_mark[1-i]), stderr);1159}1160fputc('>', stderr);1161}1162#endif1163fputc('\n', stderr);1164}1165#endif1166if (yym > 0)1167yyval = yystack.l_mark[1-yym];1168else1169memset(&yyval, 0, sizeof yyval);1170#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)11711172/* Perform position reduction */1173memset(&yyloc, 0, sizeof(yyloc));1174#if YYBTYACC1175if (!yytrial)1176#endif /* YYBTYACC */1177{1178YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);1179/* just in case YYERROR is invoked within the action, save1180the start of the rhs as the error start position */1181yyerror_loc_range[1] = yystack.p_mark[1-yym];1182}1183#endif11841185switch (yyn)1186{1187case 3:1188#line 31 "calc_code_default.y"1189{ yyerrok ; }1190#line 1192 "calc_code_default.tab.c"1191break;1192case 4:1193#line 35 "calc_code_default.y"1194{ printf("%d\n",yystack.l_mark[0]);}1195#line 1197 "calc_code_default.tab.c"1196break;1197case 5:1198#line 37 "calc_code_default.y"1199{ regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }1200#line 1202 "calc_code_default.tab.c"1201break;1202case 6:1203#line 41 "calc_code_default.y"1204{ yyval = yystack.l_mark[-1]; }1205#line 1207 "calc_code_default.tab.c"1206break;1207case 7:1208#line 43 "calc_code_default.y"1209{ yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }1210#line 1212 "calc_code_default.tab.c"1211break;1212case 8:1213#line 45 "calc_code_default.y"1214{ yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }1215#line 1217 "calc_code_default.tab.c"1216break;1217case 9:1218#line 47 "calc_code_default.y"1219{ yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }1220#line 1222 "calc_code_default.tab.c"1221break;1222case 10:1223#line 49 "calc_code_default.y"1224{ yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }1225#line 1227 "calc_code_default.tab.c"1226break;1227case 11:1228#line 51 "calc_code_default.y"1229{ yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }1230#line 1232 "calc_code_default.tab.c"1231break;1232case 12:1233#line 53 "calc_code_default.y"1234{ yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }1235#line 1237 "calc_code_default.tab.c"1236break;1237case 13:1238#line 55 "calc_code_default.y"1239{ yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }1240#line 1242 "calc_code_default.tab.c"1241break;1242case 14:1243#line 57 "calc_code_default.y"1244{ yyval = - yystack.l_mark[0]; }1245#line 1247 "calc_code_default.tab.c"1246break;1247case 15:1248#line 59 "calc_code_default.y"1249{ yyval = regs[yystack.l_mark[0]]; }1250#line 1252 "calc_code_default.tab.c"1251break;1252case 17:1253#line 64 "calc_code_default.y"1254{ yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }1255#line 1257 "calc_code_default.tab.c"1256break;1257case 18:1258#line 66 "calc_code_default.y"1259{ yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }1260#line 1262 "calc_code_default.tab.c"1261break;1262#line 1264 "calc_code_default.tab.c"1263default:1264break;1265}1266yystack.s_mark -= yym;1267yystate = *yystack.s_mark;1268yystack.l_mark -= yym;1269#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1270yystack.p_mark -= yym;1271#endif1272yym = yylhs[yyn];1273if (yystate == 0 && yym == 0)1274{1275#if YYDEBUG1276if (yydebug)1277{1278fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1279#ifdef YYSTYPE_TOSTRING1280#if YYBTYACC1281if (!yytrial)1282#endif /* YYBTYACC */1283fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));1284#endif1285fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);1286}1287#endif1288yystate = YYFINAL;1289*++yystack.s_mark = YYFINAL;1290*++yystack.l_mark = yyval;1291#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1292*++yystack.p_mark = yyloc;1293#endif1294if (yychar < 0)1295{1296#if YYBTYACC1297do {1298if (yylvp < yylve)1299{1300/* we're currently re-reading tokens */1301yylval = *yylvp++;1302#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1303yylloc = *yylpp++;1304#endif1305yychar = *yylexp++;1306break;1307}1308if (yyps->save)1309{1310/* in trial mode; save scanner results for future parse attempts */1311if (yylvp == yylvlim)1312{ /* Enlarge lexical value queue */1313size_t p = (size_t) (yylvp - yylvals);1314size_t s = (size_t) (yylvlim - yylvals);13151316s += YYLVQUEUEGROWTH;1317if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)1318goto yyenomem;1319if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)1320goto yyenomem;1321#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1322if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)1323goto yyenomem;1324#endif1325yylvp = yylve = yylvals + p;1326yylvlim = yylvals + s;1327#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1328yylpp = yylpe = yylpsns + p;1329yylplim = yylpsns + s;1330#endif1331yylexp = yylexemes + p;1332}1333*yylexp = (YYINT) YYLEX;1334*yylvp++ = yylval;1335yylve++;1336#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1337*yylpp++ = yylloc;1338yylpe++;1339#endif1340yychar = *yylexp++;1341break;1342}1343/* normal operation, no conflict encountered */1344#endif /* YYBTYACC */1345yychar = YYLEX;1346#if YYBTYACC1347} while (0);1348#endif /* YYBTYACC */1349if (yychar < 0) yychar = YYEOF;1350#if YYDEBUG1351if (yydebug)1352{1353if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1354fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",1355YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);1356}1357#endif1358}1359if (yychar == YYEOF) goto yyaccept;1360goto yyloop;1361}1362if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&1363yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)1364yystate = yytable[yyn];1365else1366yystate = yydgoto[yym];1367#if YYDEBUG1368if (yydebug)1369{1370fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1371#ifdef YYSTYPE_TOSTRING1372#if YYBTYACC1373if (!yytrial)1374#endif /* YYBTYACC */1375fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));1376#endif1377fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);1378}1379#endif1380if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1381*++yystack.s_mark = (YYINT) yystate;1382*++yystack.l_mark = yyval;1383#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1384*++yystack.p_mark = yyloc;1385#endif1386goto yyloop;1387#if YYBTYACC13881389/* Reduction declares that this path is valid. Set yypath and do a full parse */1390yyvalid:1391if (yypath) YYABORT;1392while (yyps->save)1393{1394YYParseState *save = yyps->save;1395yyps->save = save->save;1396save->save = yypath;1397yypath = save;1398}1399#if YYDEBUG1400if (yydebug)1401fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",1402YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));1403#endif1404if (yyerrctx)1405{1406yyFreeState(yyerrctx);1407yyerrctx = NULL;1408}1409yylvp = yylvals + yypath->lexeme;1410#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1411yylpp = yylpsns + yypath->lexeme;1412#endif1413yylexp = yylexemes + yypath->lexeme;1414yychar = YYEMPTY;1415yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);1416memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1417yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);1418memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1419#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1420yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);1421memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1422#endif1423yystate = yypath->state;1424goto yyloop;1425#endif /* YYBTYACC */14261427yyoverflow:1428YYERROR_CALL("yacc stack overflow");1429#if YYBTYACC1430goto yyabort_nomem;1431yyenomem:1432YYERROR_CALL("memory exhausted");1433yyabort_nomem:1434#endif /* YYBTYACC */1435yyresult = 2;1436goto yyreturn;14371438yyabort:1439yyresult = 1;1440goto yyreturn;14411442yyaccept:1443#if YYBTYACC1444if (yyps->save) goto yyvalid;1445#endif /* YYBTYACC */1446yyresult = 0;14471448yyreturn:1449#if defined(YYDESTRUCT_CALL)1450if (yychar != YYEOF && yychar != YYEMPTY)1451#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1452YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);1453#else1454YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);1455#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */14561457{1458YYSTYPE *pv;1459#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1460YYLTYPE *pp;14611462for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)1463YYDESTRUCT_CALL("cleanup: discarding state",1464yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);1465#else1466for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)1467YYDESTRUCT_CALL("cleanup: discarding state",1468yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);1469#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1470}1471#endif /* defined(YYDESTRUCT_CALL) */14721473#if YYBTYACC1474if (yyerrctx)1475{1476yyFreeState(yyerrctx);1477yyerrctx = NULL;1478}1479while (yyps)1480{1481YYParseState *save = yyps;1482yyps = save->save;1483save->save = NULL;1484yyFreeState(save);1485}1486while (yypath)1487{1488YYParseState *save = yypath;1489yypath = save->save;1490save->save = NULL;1491yyFreeState(save);1492}1493#endif /* YYBTYACC */1494yyfreestack(&yystack);1495return (yyresult);1496}149714981499