Path: blob/main/contrib/byacc/test/btyacc/calc_code_all.tab.c
48083 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 01516/* %code "top" block start */17#line 5 "calc_code_all.y"18/* CODE-TOP */19/* %code "top" block end */20#line 22 "calc_code_all.tab.c"21#undef YYBTYACC22#define YYBTYACC 023#define YYDEBUGSTR YYPREFIX "debug"2425#ifndef yyparse26#define yyparse calc_code_all_parse27#endif /* yyparse */2829#ifndef yylex30#define yylex calc_code_all_lex31#endif /* yylex */3233#ifndef yyerror34#define yyerror calc_code_all_error35#endif /* yyerror */3637#ifndef yychar38#define yychar calc_code_all_char39#endif /* yychar */4041#ifndef yyval42#define yyval calc_code_all_val43#endif /* yyval */4445#ifndef yylval46#define yylval calc_code_all_lval47#endif /* yylval */4849#ifndef yydebug50#define yydebug calc_code_all_debug51#endif /* yydebug */5253#ifndef yynerrs54#define yynerrs calc_code_all_nerrs55#endif /* yynerrs */5657#ifndef yyerrflag58#define yyerrflag calc_code_all_errflag59#endif /* yyerrflag */6061#ifndef yylhs62#define yylhs calc_code_all_lhs63#endif /* yylhs */6465#ifndef yylen66#define yylen calc_code_all_len67#endif /* yylen */6869#ifndef yydefred70#define yydefred calc_code_all_defred71#endif /* yydefred */7273#ifndef yystos74#define yystos calc_code_all_stos75#endif /* yystos */7677#ifndef yydgoto78#define yydgoto calc_code_all_dgoto79#endif /* yydgoto */8081#ifndef yysindex82#define yysindex calc_code_all_sindex83#endif /* yysindex */8485#ifndef yyrindex86#define yyrindex calc_code_all_rindex87#endif /* yyrindex */8889#ifndef yygindex90#define yygindex calc_code_all_gindex91#endif /* yygindex */9293#ifndef yytable94#define yytable calc_code_all_table95#endif /* yytable */9697#ifndef yycheck98#define yycheck calc_code_all_check99#endif /* yycheck */100101#ifndef yyname102#define yyname calc_code_all_name103#endif /* yyname */104105#ifndef yyrule106#define yyrule calc_code_all_rule107#endif /* yyrule */108109#if YYBTYACC110111#ifndef yycindex112#define yycindex calc_code_all_cindex113#endif /* yycindex */114115#ifndef yyctable116#define yyctable calc_code_all_ctable117#endif /* yyctable */118119#endif /* YYBTYACC */120121#define YYPREFIX "calc_code_all_"122123#define YYPURE 0124125#line 9 "calc_code_all.y"126# include <stdio.h>127# include <ctype.h>128129int regs[26];130int base;131132extern int yylex(void);133static void yyerror(const char *s);134135#line 137 "calc_code_all.tab.c"136137#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)138/* Default: YYSTYPE is the semantic value type. */139typedef int YYSTYPE;140# define YYSTYPE_IS_DECLARED 1141#endif142143/* compatibility with bison */144#ifdef YYPARSE_PARAM145/* compatibility with FreeBSD */146# ifdef YYPARSE_PARAM_TYPE147# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)148# else149# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)150# endif151#else152# define YYPARSE_DECL() yyparse(void)153#endif154155/* Parameters sent to lex. */156#ifdef YYLEX_PARAM157# define YYLEX_DECL() yylex(void *YYLEX_PARAM)158# define YYLEX yylex(YYLEX_PARAM)159#else160# define YYLEX_DECL() yylex(void)161# define YYLEX yylex()162#endif163164/* Parameters sent to yyerror. */165#ifndef YYERROR_DECL166#define YYERROR_DECL() yyerror(const char *s)167#endif168#ifndef YYERROR_CALL169#define YYERROR_CALL(msg) yyerror(msg)170#endif171172extern int YYPARSE_DECL();173174#define DIGIT 257175#define LETTER 258176#define UMINUS 259177#define YYERRCODE 256178typedef int YYINT;179static const YYINT calc_code_all_lhs[] = { -1,1800, 0, 0, 1, 1, 2, 2, 2, 2, 2,1812, 2, 2, 2, 2, 2, 3, 3,182};183static const YYINT calc_code_all_len[] = { 2,1840, 3, 3, 1, 3, 3, 3, 3, 3, 3,1853, 3, 3, 2, 1, 1, 1, 2,186};187static const YYINT calc_code_all_defred[] = { 1,1880, 0, 17, 0, 0, 0, 0, 0, 0, 3,1890, 15, 14, 0, 2, 0, 0, 0, 0, 0,1900, 0, 18, 0, 6, 0, 0, 0, 0, 9,19110, 11,192};193#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)194static const YYINT calc_code_all_stos[] = { 0,195261, 256, 257, 258, 45, 40, 262, 263, 264, 10,19661, 258, 263, 263, 10, 124, 38, 43, 45, 42,19747, 37, 257, 263, 41, 263, 263, 263, 263, 263,198263, 263,199};200#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */201static const YYINT calc_code_all_dgoto[] = { 1,2027, 8, 9,203};204static const YYINT calc_code_all_sindex[] = { 0,205-40, -7, 0, -55, -38, -38, 1, -29, -247, 0,206-38, 0, 0, 22, 0, -38, -38, -38, -38, -38,207-38, -38, 0, -29, 0, 51, 60, -20, -20, 0,2080, 0,209};210static const YYINT calc_code_all_rindex[] = { 0,2110, 0, 0, 2, 0, 0, 0, 9, -9, 0,2120, 0, 0, 0, 0, 0, 0, 0, 0, 0,2130, 0, 0, 10, 0, -6, 14, 5, 13, 0,2140, 0,215};216#if YYBTYACC217static const YYINT calc_code_all_cindex[] = { 0,2180, 0, 0, 0, 0, 0, 0, 0, 0, 0,2190, 0, 0, 0, 0, 0, 0, 0, 0, 0,2200, 0, 0, 0, 0, 0, 0, 0, 0, 0,2210, 0,222};223#endif224static const YYINT calc_code_all_gindex[] = { 0,2250, 65, 0,226};227#define YYTABLESIZE 220228static const YYINT calc_code_all_table[] = { 6,22916, 6, 10, 13, 5, 11, 5, 22, 17, 23,23015, 15, 20, 18, 7, 19, 22, 21, 4, 5,2310, 20, 8, 12, 0, 0, 21, 16, 16, 0,2320, 16, 16, 16, 13, 16, 0, 16, 15, 15,2330, 0, 7, 15, 15, 7, 15, 7, 15, 7,2348, 12, 0, 8, 12, 8, 0, 8, 22, 17,2350, 0, 25, 20, 18, 0, 19, 0, 21, 13,23614, 0, 0, 0, 0, 24, 0, 0, 0, 0,23726, 27, 28, 29, 30, 31, 32, 22, 17, 0,2380, 0, 20, 18, 16, 19, 22, 21, 0, 0,2390, 20, 18, 0, 19, 0, 21, 0, 0, 0,2400, 0, 0, 0, 16, 0, 0, 13, 0, 0,2410, 0, 0, 0, 0, 15, 0, 0, 7, 0,2420, 0, 0, 0, 0, 0, 8, 12, 0, 0,2430, 0, 0, 0, 0, 16, 0, 0, 0, 0,2440, 0, 0, 0, 0, 0, 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, 2, 3, 4, 3, 12,251};252static const YYINT calc_code_all_check[] = { 40,25310, 40, 10, 10, 45, 61, 45, 37, 38, 257,25410, 10, 42, 43, 10, 45, 37, 47, 10, 10,255-1, 42, 10, 10, -1, -1, 47, 37, 38, -1,256-1, 41, 42, 43, 41, 45, -1, 47, 37, 38,257-1, -1, 38, 42, 43, 41, 45, 43, 47, 45,25838, 38, -1, 41, 41, 43, -1, 45, 37, 38,259-1, -1, 41, 42, 43, -1, 45, -1, 47, 5,2606, -1, -1, -1, -1, 11, -1, -1, -1, -1,26116, 17, 18, 19, 20, 21, 22, 37, 38, -1,262-1, -1, 42, 43, 124, 45, 37, 47, -1, -1,263-1, 42, 43, -1, 45, -1, 47, -1, -1, -1,264-1, -1, -1, -1, 124, -1, -1, 124, -1, -1,265-1, -1, -1, -1, -1, 124, -1, -1, 124, -1,266-1, -1, -1, -1, -1, -1, 124, 124, -1, -1,267-1, -1, -1, -1, -1, 124, -1, -1, -1, -1,268-1, -1, -1, -1, -1, -1, -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, 256, 257, 258, 257, 258,275};276#if YYBTYACC277static const YYINT calc_code_all_ctable[] = { -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,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,300};301#endif302#define YYFINAL 1303#ifndef YYDEBUG304#define YYDEBUG 0305#endif306#define YYMAXTOKEN 259307#define YYUNDFTOKEN 265308#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))309#if YYDEBUG310static const char *const calc_code_all_name[] = {311312"$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,3130,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,0,0,0,0,0,0,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,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,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number",320"illegal-symbol",321};322static const char *const calc_code_all_rule[] = {323"$accept : list",324"list :",325"list : list stat '\\n'",326"list : list error '\\n'",327"stat : expr",328"stat : LETTER '=' expr",329"expr : '(' expr ')'",330"expr : 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",338"expr : LETTER",339"expr : number",340"number : DIGIT",341"number : number DIGIT",342343};344#endif345346#if YYDEBUG347int yydebug;348#endif349350int yyerrflag;351int yychar;352YYSTYPE yyval;353YYSTYPE yylval;354int yynerrs;355356#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)357YYLTYPE yyloc; /* position returned by actions */358YYLTYPE yylloc; /* position from the lexer */359#endif360361/* %code "requires" block start */362#line 3 "calc_code_all.y"363/* CODE-REQUIRES */364/* %code "requires" block end */365#line 367 "calc_code_all.tab.c"366367#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)368#ifndef YYLLOC_DEFAULT369#define YYLLOC_DEFAULT(loc, rhs, n) \370do \371{ \372if (n == 0) \373{ \374(loc).first_line = YYRHSLOC(rhs, 0).last_line; \375(loc).first_column = YYRHSLOC(rhs, 0).last_column; \376(loc).last_line = YYRHSLOC(rhs, 0).last_line; \377(loc).last_column = YYRHSLOC(rhs, 0).last_column; \378} \379else \380{ \381(loc).first_line = YYRHSLOC(rhs, 1).first_line; \382(loc).first_column = YYRHSLOC(rhs, 1).first_column; \383(loc).last_line = YYRHSLOC(rhs, n).last_line; \384(loc).last_column = YYRHSLOC(rhs, n).last_column; \385} \386} while (0)387#endif /* YYLLOC_DEFAULT */388#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */389#if YYBTYACC390391#ifndef YYLVQUEUEGROWTH392#define YYLVQUEUEGROWTH 32393#endif394#endif /* YYBTYACC */395396/* define the initial stack-sizes */397#ifdef YYSTACKSIZE398#undef YYMAXDEPTH399#define YYMAXDEPTH YYSTACKSIZE400#else401#ifdef YYMAXDEPTH402#define YYSTACKSIZE YYMAXDEPTH403#else404#define YYSTACKSIZE 10000405#define YYMAXDEPTH 10000406#endif407#endif408409#ifndef YYINITSTACKSIZE410#define YYINITSTACKSIZE 200411#endif412413typedef struct {414unsigned stacksize;415YYINT *s_base;416YYINT *s_mark;417YYINT *s_last;418YYSTYPE *l_base;419YYSTYPE *l_mark;420#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)421YYLTYPE *p_base;422YYLTYPE *p_mark;423#endif424} YYSTACKDATA;425#if YYBTYACC426427struct YYParseState_s428{429struct YYParseState_s *save; /* Previously saved parser state */430YYSTACKDATA yystack; /* saved parser stack */431int state; /* saved parser state */432int errflag; /* saved error recovery status */433int lexeme; /* saved index of the conflict lexeme in the lexical queue */434YYINT ctry; /* saved index in yyctable[] for this conflict */435};436typedef struct YYParseState_s YYParseState;437#endif /* YYBTYACC */438/* variables for the parser stack */439static YYSTACKDATA yystack;440#if YYBTYACC441442/* Current parser state */443static YYParseState *yyps = 0;444445/* yypath != NULL: do the full parse, starting at *yypath parser state. */446static YYParseState *yypath = 0;447448/* Base of the lexical value queue */449static YYSTYPE *yylvals = 0;450451/* Current position at lexical value queue */452static YYSTYPE *yylvp = 0;453454/* End position of lexical value queue */455static YYSTYPE *yylve = 0;456457/* The last allocated position at the lexical value queue */458static YYSTYPE *yylvlim = 0;459460#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)461/* Base of the lexical position queue */462static YYLTYPE *yylpsns = 0;463464/* Current position at lexical position queue */465static YYLTYPE *yylpp = 0;466467/* End position of lexical position queue */468static YYLTYPE *yylpe = 0;469470/* The last allocated position at the lexical position queue */471static YYLTYPE *yylplim = 0;472#endif473474/* Current position at lexical token queue */475static YYINT *yylexp = 0;476477static YYINT *yylexemes = 0;478#endif /* YYBTYACC */479480/* %code "provides" block start */481#line 4 "calc_code_all.y"482/* CODE-PROVIDES */483#line 6 "calc_code_all.y"484/* CODE-PROVIDES2 */485/* %code "provides" block end */486#line 488 "calc_code_all.tab.c"487488/* %code "" block start */489#line 1 "calc_code_all.y"490/* CODE-DEFAULT2 */491#line 2 "calc_code_all.y"492/* CODE-DEFAULT */493/* %code "" block end */494#line 496 "calc_code_all.tab.c"495#line 73 "calc_code_all.y"496/* start of programs */497498int499main (void)500{501while(!feof(stdin)) {502yyparse();503}504return 0;505}506507static void508yyerror(const char *s)509{510fprintf(stderr, "%s\n", s);511}512513int514yylex(void)515{516/* lexical analysis routine */517/* returns LETTER for a lower case letter, yylval = 0 through 25 */518/* return DIGIT for a digit, yylval = 0 through 9 */519/* all other characters are returned immediately */520521int c;522523while( (c=getchar()) == ' ' ) { /* skip blanks */ }524525/* c is now nonblank */526527if( islower( c )) {528yylval = c - 'a';529return ( LETTER );530}531if( isdigit( c )) {532yylval = c - '0';533return ( DIGIT );534}535return( c );536}537#line 539 "calc_code_all.tab.c"538539/* For use in generated program */540#define yydepth (int)(yystack.s_mark - yystack.s_base)541#if YYBTYACC542#define yytrial (yyps->save)543#endif /* YYBTYACC */544545#if YYDEBUG546#include <stdio.h> /* needed for printf */547#endif548549#include <stdlib.h> /* needed for malloc, etc */550#include <string.h> /* needed for memset */551552/* allocate initial stack or double stack size, up to YYMAXDEPTH */553static int yygrowstack(YYSTACKDATA *data)554{555int i;556unsigned newsize;557YYINT *newss;558YYSTYPE *newvs;559#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)560YYLTYPE *newps;561#endif562563if ((newsize = data->stacksize) == 0)564newsize = YYINITSTACKSIZE;565else if (newsize >= YYMAXDEPTH)566return YYENOMEM;567else if ((newsize *= 2) > YYMAXDEPTH)568newsize = YYMAXDEPTH;569570i = (int) (data->s_mark - data->s_base);571newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));572if (newss == NULL)573return YYENOMEM;574575data->s_base = newss;576data->s_mark = newss + i;577578newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));579if (newvs == NULL)580return YYENOMEM;581582data->l_base = newvs;583data->l_mark = newvs + i;584585#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)586newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));587if (newps == NULL)588return YYENOMEM;589590data->p_base = newps;591data->p_mark = newps + i;592#endif593594data->stacksize = newsize;595data->s_last = data->s_base + newsize - 1;596597#if YYDEBUG598if (yydebug)599fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);600#endif601return 0;602}603604#if YYPURE || defined(YY_NO_LEAKS)605static void yyfreestack(YYSTACKDATA *data)606{607free(data->s_base);608free(data->l_base);609#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)610free(data->p_base);611#endif612memset(data, 0, sizeof(*data));613}614#else615#define yyfreestack(data) /* nothing */616#endif /* YYPURE || defined(YY_NO_LEAKS) */617#if YYBTYACC618619static YYParseState *620yyNewState(unsigned size)621{622YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));623if (p == NULL) return NULL;624625p->yystack.stacksize = size;626if (size == 0)627{628p->yystack.s_base = NULL;629p->yystack.l_base = NULL;630#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)631p->yystack.p_base = NULL;632#endif633return p;634}635p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT));636if (p->yystack.s_base == NULL) return NULL;637p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));638if (p->yystack.l_base == NULL) return NULL;639memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));640#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)641p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));642if (p->yystack.p_base == NULL) return NULL;643memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));644#endif645646return p;647}648649static void650yyFreeState(YYParseState *p)651{652yyfreestack(&p->yystack);653free(p);654}655#endif /* YYBTYACC */656657#define YYABORT goto yyabort658#define YYREJECT goto yyabort659#define YYACCEPT goto yyaccept660#define YYERROR goto yyerrlab661#if YYBTYACC662#define YYVALID do { if (yyps->save) goto yyvalid; } while(0)663#define YYVALID_NESTED do { if (yyps->save && \664yyps->save->save == 0) goto yyvalid; } while(0)665#endif /* YYBTYACC */666667int668YYPARSE_DECL()669{670int yym, yyn, yystate, yyresult;671#if YYBTYACC672int yynewerrflag;673YYParseState *yyerrctx = NULL;674#endif /* YYBTYACC */675#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)676YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */677#endif678#if YYDEBUG679const char *yys;680681if ((yys = getenv("YYDEBUG")) != NULL)682{683yyn = *yys;684if (yyn >= '0' && yyn <= '9')685yydebug = yyn - '0';686}687if (yydebug)688fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);689#endif690#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)691memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));692#endif693694#if YYBTYACC695yyps = yyNewState(0); if (yyps == 0) goto yyenomem;696yyps->save = 0;697#endif /* YYBTYACC */698yym = 0;699/* yyn is set below */700yynerrs = 0;701yyerrflag = 0;702yychar = YYEMPTY;703yystate = 0;704705#if YYPURE706memset(&yystack, 0, sizeof(yystack));707#endif708709if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;710yystack.s_mark = yystack.s_base;711yystack.l_mark = yystack.l_base;712#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)713yystack.p_mark = yystack.p_base;714#endif715yystate = 0;716*yystack.s_mark = 0;717718yyloop:719if ((yyn = yydefred[yystate]) != 0) goto yyreduce;720if (yychar < 0)721{722#if YYBTYACC723do {724if (yylvp < yylve)725{726/* we're currently re-reading tokens */727yylval = *yylvp++;728#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)729yylloc = *yylpp++;730#endif731yychar = *yylexp++;732break;733}734if (yyps->save)735{736/* in trial mode; save scanner results for future parse attempts */737if (yylvp == yylvlim)738{ /* Enlarge lexical value queue */739size_t p = (size_t) (yylvp - yylvals);740size_t s = (size_t) (yylvlim - yylvals);741742s += YYLVQUEUEGROWTH;743if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;744if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;745#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)746if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;747#endif748yylvp = yylve = yylvals + p;749yylvlim = yylvals + s;750#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)751yylpp = yylpe = yylpsns + p;752yylplim = yylpsns + s;753#endif754yylexp = yylexemes + p;755}756*yylexp = (YYINT) YYLEX;757*yylvp++ = yylval;758yylve++;759#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)760*yylpp++ = yylloc;761yylpe++;762#endif763yychar = *yylexp++;764break;765}766/* normal operation, no conflict encountered */767#endif /* YYBTYACC */768yychar = YYLEX;769#if YYBTYACC770} while (0);771#endif /* YYBTYACC */772if (yychar < 0) yychar = YYEOF;773#if YYDEBUG774if (yydebug)775{776if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];777fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",778YYDEBUGSTR, yydepth, yystate, yychar, yys);779#ifdef YYSTYPE_TOSTRING780#if YYBTYACC781if (!yytrial)782#endif /* YYBTYACC */783fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));784#endif785fputc('\n', stderr);786}787#endif788}789#if YYBTYACC790791/* Do we have a conflict? */792if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&793yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)794{795YYINT ctry;796797if (yypath)798{799YYParseState *save;800#if YYDEBUG801if (yydebug)802fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",803YYDEBUGSTR, yydepth, yystate);804#endif805/* Switch to the next conflict context */806save = yypath;807yypath = save->save;808save->save = NULL;809ctry = save->ctry;810if (save->state != yystate) YYABORT;811yyFreeState(save);812813}814else815{816817/* Unresolved conflict - start/continue trial parse */818YYParseState *save;819#if YYDEBUG820if (yydebug)821{822fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);823if (yyps->save)824fputs("ALREADY in conflict, continuing trial parse.\n", stderr);825else826fputs("Starting trial parse.\n", stderr);827}828#endif829save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));830if (save == NULL) goto yyenomem;831save->save = yyps->save;832save->state = yystate;833save->errflag = yyerrflag;834save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);835memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));836save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);837memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));838#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)839save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);840memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));841#endif842ctry = yytable[yyn];843if (yyctable[ctry] == -1)844{845#if YYDEBUG846if (yydebug && yychar >= YYEOF)847fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);848#endif849ctry++;850}851save->ctry = ctry;852if (yyps->save == NULL)853{854/* If this is a first conflict in the stack, start saving lexemes */855if (!yylexemes)856{857yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));858if (yylexemes == NULL) goto yyenomem;859yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));860if (yylvals == NULL) goto yyenomem;861yylvlim = yylvals + YYLVQUEUEGROWTH;862#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)863yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));864if (yylpsns == NULL) goto yyenomem;865yylplim = yylpsns + YYLVQUEUEGROWTH;866#endif867}868if (yylvp == yylve)869{870yylvp = yylve = yylvals;871#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)872yylpp = yylpe = yylpsns;873#endif874yylexp = yylexemes;875if (yychar >= YYEOF)876{877*yylve++ = yylval;878#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)879*yylpe++ = yylloc;880#endif881*yylexp = (YYINT) yychar;882yychar = YYEMPTY;883}884}885}886if (yychar >= YYEOF)887{888yylvp--;889#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)890yylpp--;891#endif892yylexp--;893yychar = YYEMPTY;894}895save->lexeme = (int) (yylvp - yylvals);896yyps->save = save;897}898if (yytable[yyn] == ctry)899{900#if YYDEBUG901if (yydebug)902fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",903YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);904#endif905if (yychar < 0)906{907yylvp++;908#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)909yylpp++;910#endif911yylexp++;912}913if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)914goto yyoverflow;915yystate = yyctable[ctry];916*++yystack.s_mark = (YYINT) yystate;917*++yystack.l_mark = yylval;918#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)919*++yystack.p_mark = yylloc;920#endif921yychar = YYEMPTY;922if (yyerrflag > 0) --yyerrflag;923goto yyloop;924}925else926{927yyn = yyctable[ctry];928goto yyreduce;929}930} /* End of code dealing with conflicts */931#endif /* YYBTYACC */932if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&933yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)934{935#if YYDEBUG936if (yydebug)937fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",938YYDEBUGSTR, yydepth, yystate, yytable[yyn]);939#endif940if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;941yystate = yytable[yyn];942*++yystack.s_mark = yytable[yyn];943*++yystack.l_mark = yylval;944#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)945*++yystack.p_mark = yylloc;946#endif947yychar = YYEMPTY;948if (yyerrflag > 0) --yyerrflag;949goto yyloop;950}951if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&952yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)953{954yyn = yytable[yyn];955goto yyreduce;956}957if (yyerrflag != 0) goto yyinrecovery;958#if YYBTYACC959960yynewerrflag = 1;961goto yyerrhandler;962goto yyerrlab; /* redundant goto avoids 'unused label' warning */963964yyerrlab:965/* explicit YYERROR from an action -- pop the rhs of the rule reduced966* before looking for error recovery */967yystack.s_mark -= yym;968yystate = *yystack.s_mark;969yystack.l_mark -= yym;970#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)971yystack.p_mark -= yym;972#endif973974yynewerrflag = 0;975yyerrhandler:976while (yyps->save)977{978int ctry;979YYParseState *save = yyps->save;980#if YYDEBUG981if (yydebug)982fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",983YYDEBUGSTR, yydepth, yystate, yyps->save->state,984(int)(yylvp - yylvals - yyps->save->lexeme));985#endif986/* Memorize most forward-looking error state in case it's really an error. */987if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)988{989/* Free old saved error context state */990if (yyerrctx) yyFreeState(yyerrctx);991/* Create and fill out new saved error context state */992yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));993if (yyerrctx == NULL) goto yyenomem;994yyerrctx->save = yyps->save;995yyerrctx->state = yystate;996yyerrctx->errflag = yyerrflag;997yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);998memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));999yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);1000memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1001#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1002yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);1003memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1004#endif1005yyerrctx->lexeme = (int) (yylvp - yylvals);1006}1007yylvp = yylvals + save->lexeme;1008#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1009yylpp = yylpsns + save->lexeme;1010#endif1011yylexp = yylexemes + save->lexeme;1012yychar = YYEMPTY;1013yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);1014memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1015yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);1016memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1017#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1018yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);1019memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1020#endif1021ctry = ++save->ctry;1022yystate = save->state;1023/* We tried shift, try reduce now */1024if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;1025yyps->save = save->save;1026save->save = NULL;1027yyFreeState(save);10281029/* Nothing left on the stack -- error */1030if (!yyps->save)1031{1032#if YYDEBUG1033if (yydebug)1034fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",1035YYPREFIX, yydepth);1036#endif1037/* Restore state as it was in the most forward-advanced error */1038yylvp = yylvals + yyerrctx->lexeme;1039#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1040yylpp = yylpsns + yyerrctx->lexeme;1041#endif1042yylexp = yylexemes + yyerrctx->lexeme;1043yychar = yylexp[-1];1044yylval = yylvp[-1];1045#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1046yylloc = yylpp[-1];1047#endif1048yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);1049memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1050yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);1051memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1052#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1053yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);1054memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1055#endif1056yystate = yyerrctx->state;1057yyFreeState(yyerrctx);1058yyerrctx = NULL;1059}1060yynewerrflag = 1;1061}1062if (yynewerrflag == 0) goto yyinrecovery;1063#endif /* YYBTYACC */10641065YYERROR_CALL("syntax error");1066#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1067yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */1068#endif10691070#if !YYBTYACC1071goto yyerrlab; /* redundant goto avoids 'unused label' warning */1072yyerrlab:1073#endif1074++yynerrs;10751076yyinrecovery:1077if (yyerrflag < 3)1078{1079yyerrflag = 3;1080for (;;)1081{1082if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&1083yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)1084{1085#if YYDEBUG1086if (yydebug)1087fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",1088YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);1089#endif1090if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1091yystate = yytable[yyn];1092*++yystack.s_mark = yytable[yyn];1093*++yystack.l_mark = yylval;1094#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1095/* lookahead position is error end position */1096yyerror_loc_range[2] = yylloc;1097YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */1098*++yystack.p_mark = yyloc;1099#endif1100goto yyloop;1101}1102else1103{1104#if YYDEBUG1105if (yydebug)1106fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",1107YYDEBUGSTR, yydepth, *yystack.s_mark);1108#endif1109if (yystack.s_mark <= yystack.s_base) goto yyabort;1110#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1111/* the current TOS position is the error start position */1112yyerror_loc_range[1] = *yystack.p_mark;1113#endif1114#if defined(YYDESTRUCT_CALL)1115#if YYBTYACC1116if (!yytrial)1117#endif /* YYBTYACC */1118#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1119YYDESTRUCT_CALL("error: discarding state",1120yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);1121#else1122YYDESTRUCT_CALL("error: discarding state",1123yystos[*yystack.s_mark], yystack.l_mark);1124#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1125#endif /* defined(YYDESTRUCT_CALL) */1126--yystack.s_mark;1127--yystack.l_mark;1128#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1129--yystack.p_mark;1130#endif1131}1132}1133}1134else1135{1136if (yychar == YYEOF) goto yyabort;1137#if YYDEBUG1138if (yydebug)1139{1140if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1141fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",1142YYDEBUGSTR, yydepth, yystate, yychar, yys);1143}1144#endif1145#if defined(YYDESTRUCT_CALL)1146#if YYBTYACC1147if (!yytrial)1148#endif /* YYBTYACC */1149#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1150YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);1151#else1152YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);1153#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1154#endif /* defined(YYDESTRUCT_CALL) */1155yychar = YYEMPTY;1156goto yyloop;1157}11581159yyreduce:1160yym = yylen[yyn];1161#if YYDEBUG1162if (yydebug)1163{1164fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",1165YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);1166#ifdef YYSTYPE_TOSTRING1167#if YYBTYACC1168if (!yytrial)1169#endif /* YYBTYACC */1170if (yym > 0)1171{1172int i;1173fputc('<', stderr);1174for (i = yym; i > 0; i--)1175{1176if (i != yym) fputs(", ", stderr);1177fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],1178yystack.l_mark[1-i]), stderr);1179}1180fputc('>', stderr);1181}1182#endif1183fputc('\n', stderr);1184}1185#endif1186if (yym > 0)1187yyval = yystack.l_mark[1-yym];1188else1189memset(&yyval, 0, sizeof yyval);1190#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)11911192/* Perform position reduction */1193memset(&yyloc, 0, sizeof(yyloc));1194#if YYBTYACC1195if (!yytrial)1196#endif /* YYBTYACC */1197{1198YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);1199/* just in case YYERROR is invoked within the action, save1200the start of the rhs as the error start position */1201yyerror_loc_range[1] = yystack.p_mark[1-yym];1202}1203#endif12041205switch (yyn)1206{1207case 3:1208#line 35 "calc_code_all.y"1209{ yyerrok ; }1210#line 1212 "calc_code_all.tab.c"1211break;1212case 4:1213#line 39 "calc_code_all.y"1214{ printf("%d\n",yystack.l_mark[0]);}1215#line 1217 "calc_code_all.tab.c"1216break;1217case 5:1218#line 41 "calc_code_all.y"1219{ regs[yystack.l_mark[-2]] = yystack.l_mark[0]; }1220#line 1222 "calc_code_all.tab.c"1221break;1222case 6:1223#line 45 "calc_code_all.y"1224{ yyval = yystack.l_mark[-1]; }1225#line 1227 "calc_code_all.tab.c"1226break;1227case 7:1228#line 47 "calc_code_all.y"1229{ yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }1230#line 1232 "calc_code_all.tab.c"1231break;1232case 8:1233#line 49 "calc_code_all.y"1234{ yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }1235#line 1237 "calc_code_all.tab.c"1236break;1237case 9:1238#line 51 "calc_code_all.y"1239{ yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }1240#line 1242 "calc_code_all.tab.c"1241break;1242case 10:1243#line 53 "calc_code_all.y"1244{ yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }1245#line 1247 "calc_code_all.tab.c"1246break;1247case 11:1248#line 55 "calc_code_all.y"1249{ yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }1250#line 1252 "calc_code_all.tab.c"1251break;1252case 12:1253#line 57 "calc_code_all.y"1254{ yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }1255#line 1257 "calc_code_all.tab.c"1256break;1257case 13:1258#line 59 "calc_code_all.y"1259{ yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }1260#line 1262 "calc_code_all.tab.c"1261break;1262case 14:1263#line 61 "calc_code_all.y"1264{ yyval = - yystack.l_mark[0]; }1265#line 1267 "calc_code_all.tab.c"1266break;1267case 15:1268#line 63 "calc_code_all.y"1269{ yyval = regs[yystack.l_mark[0]]; }1270#line 1272 "calc_code_all.tab.c"1271break;1272case 17:1273#line 68 "calc_code_all.y"1274{ yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; }1275#line 1277 "calc_code_all.tab.c"1276break;1277case 18:1278#line 70 "calc_code_all.y"1279{ yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; }1280#line 1282 "calc_code_all.tab.c"1281break;1282#line 1284 "calc_code_all.tab.c"1283default:1284break;1285}1286yystack.s_mark -= yym;1287yystate = *yystack.s_mark;1288yystack.l_mark -= yym;1289#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1290yystack.p_mark -= yym;1291#endif1292yym = yylhs[yyn];1293if (yystate == 0 && yym == 0)1294{1295#if YYDEBUG1296if (yydebug)1297{1298fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1299#ifdef YYSTYPE_TOSTRING1300#if YYBTYACC1301if (!yytrial)1302#endif /* YYBTYACC */1303fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));1304#endif1305fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);1306}1307#endif1308yystate = YYFINAL;1309*++yystack.s_mark = YYFINAL;1310*++yystack.l_mark = yyval;1311#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1312*++yystack.p_mark = yyloc;1313#endif1314if (yychar < 0)1315{1316#if YYBTYACC1317do {1318if (yylvp < yylve)1319{1320/* we're currently re-reading tokens */1321yylval = *yylvp++;1322#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1323yylloc = *yylpp++;1324#endif1325yychar = *yylexp++;1326break;1327}1328if (yyps->save)1329{1330/* in trial mode; save scanner results for future parse attempts */1331if (yylvp == yylvlim)1332{ /* Enlarge lexical value queue */1333size_t p = (size_t) (yylvp - yylvals);1334size_t s = (size_t) (yylvlim - yylvals);13351336s += YYLVQUEUEGROWTH;1337if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)1338goto yyenomem;1339if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)1340goto yyenomem;1341#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1342if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)1343goto yyenomem;1344#endif1345yylvp = yylve = yylvals + p;1346yylvlim = yylvals + s;1347#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1348yylpp = yylpe = yylpsns + p;1349yylplim = yylpsns + s;1350#endif1351yylexp = yylexemes + p;1352}1353*yylexp = (YYINT) YYLEX;1354*yylvp++ = yylval;1355yylve++;1356#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1357*yylpp++ = yylloc;1358yylpe++;1359#endif1360yychar = *yylexp++;1361break;1362}1363/* normal operation, no conflict encountered */1364#endif /* YYBTYACC */1365yychar = YYLEX;1366#if YYBTYACC1367} while (0);1368#endif /* YYBTYACC */1369if (yychar < 0) yychar = YYEOF;1370#if YYDEBUG1371if (yydebug)1372{1373if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];1374fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",1375YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);1376}1377#endif1378}1379if (yychar == YYEOF) goto yyaccept;1380goto yyloop;1381}1382if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&1383yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)1384yystate = yytable[yyn];1385else1386yystate = yydgoto[yym];1387#if YYDEBUG1388if (yydebug)1389{1390fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);1391#ifdef YYSTYPE_TOSTRING1392#if YYBTYACC1393if (!yytrial)1394#endif /* YYBTYACC */1395fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));1396#endif1397fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);1398}1399#endif1400if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;1401*++yystack.s_mark = (YYINT) yystate;1402*++yystack.l_mark = yyval;1403#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1404*++yystack.p_mark = yyloc;1405#endif1406goto yyloop;1407#if YYBTYACC14081409/* Reduction declares that this path is valid. Set yypath and do a full parse */1410yyvalid:1411if (yypath) YYABORT;1412while (yyps->save)1413{1414YYParseState *save = yyps->save;1415yyps->save = save->save;1416save->save = yypath;1417yypath = save;1418}1419#if YYDEBUG1420if (yydebug)1421fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",1422YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));1423#endif1424if (yyerrctx)1425{1426yyFreeState(yyerrctx);1427yyerrctx = NULL;1428}1429yylvp = yylvals + yypath->lexeme;1430#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1431yylpp = yylpsns + yypath->lexeme;1432#endif1433yylexp = yylexemes + yypath->lexeme;1434yychar = YYEMPTY;1435yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);1436memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));1437yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);1438memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));1439#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1440yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);1441memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));1442#endif1443yystate = yypath->state;1444goto yyloop;1445#endif /* YYBTYACC */14461447yyoverflow:1448YYERROR_CALL("yacc stack overflow");1449#if YYBTYACC1450goto yyabort_nomem;1451yyenomem:1452YYERROR_CALL("memory exhausted");1453yyabort_nomem:1454#endif /* YYBTYACC */1455yyresult = 2;1456goto yyreturn;14571458yyabort:1459yyresult = 1;1460goto yyreturn;14611462yyaccept:1463#if YYBTYACC1464if (yyps->save) goto yyvalid;1465#endif /* YYBTYACC */1466yyresult = 0;14671468yyreturn:1469#if defined(YYDESTRUCT_CALL)1470if (yychar != YYEOF && yychar != YYEMPTY)1471#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1472YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);1473#else1474YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);1475#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */14761477{1478YYSTYPE *pv;1479#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)1480YYLTYPE *pp;14811482for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)1483YYDESTRUCT_CALL("cleanup: discarding state",1484yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);1485#else1486for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)1487YYDESTRUCT_CALL("cleanup: discarding state",1488yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);1489#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */1490}1491#endif /* defined(YYDESTRUCT_CALL) */14921493#if YYBTYACC1494if (yyerrctx)1495{1496yyFreeState(yyerrctx);1497yyerrctx = NULL;1498}1499while (yyps)1500{1501YYParseState *save = yyps;1502yyps = save->save;1503save->save = NULL;1504yyFreeState(save);1505}1506while (yypath)1507{1508YYParseState *save = yypath;1509yypath = save->save;1510save->save = NULL;1511yyFreeState(save);1512}1513#endif /* YYBTYACC */1514yyfreestack(&yystack);1515return (yyresult);1516}151715181519