1264790Sbapt/* original parser id follows */ 2264790Sbapt/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 3264790Sbapt/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 4264790Sbapt 5264790Sbapt#define YYBYACC 1 6264790Sbapt#define YYMAJOR 1 7264790Sbapt#define YYMINOR 9 8264790Sbapt#define YYCHECK "yyyymmdd" 9264790Sbapt 10264790Sbapt#define YYEMPTY (-1) 11264790Sbapt#define yyclearin (yychar = YYEMPTY) 12264790Sbapt#define yyerrok (yyerrflag = 0) 13264790Sbapt#define YYRECOVERING() (yyerrflag != 0) 14264790Sbapt#define YYENOMEM (-2) 15264790Sbapt#define YYEOF 0 16264790Sbapt 17264790Sbapt#ifndef yyparse 18264790Sbapt#define yyparse calc_parse 19264790Sbapt#endif /* yyparse */ 20264790Sbapt 21264790Sbapt#ifndef yylex 22264790Sbapt#define yylex calc_lex 23264790Sbapt#endif /* yylex */ 24264790Sbapt 25264790Sbapt#ifndef yyerror 26264790Sbapt#define yyerror calc_error 27264790Sbapt#endif /* yyerror */ 28264790Sbapt 29264790Sbapt#ifndef yychar 30264790Sbapt#define yychar calc_char 31264790Sbapt#endif /* yychar */ 32264790Sbapt 33264790Sbapt#ifndef yyval 34264790Sbapt#define yyval calc_val 35264790Sbapt#endif /* yyval */ 36264790Sbapt 37264790Sbapt#ifndef yylval 38264790Sbapt#define yylval calc_lval 39264790Sbapt#endif /* yylval */ 40264790Sbapt 41264790Sbapt#ifndef yydebug 42264790Sbapt#define yydebug calc_debug 43264790Sbapt#endif /* yydebug */ 44264790Sbapt 45264790Sbapt#ifndef yynerrs 46264790Sbapt#define yynerrs calc_nerrs 47264790Sbapt#endif /* yynerrs */ 48264790Sbapt 49264790Sbapt#ifndef yyerrflag 50264790Sbapt#define yyerrflag calc_errflag 51264790Sbapt#endif /* yyerrflag */ 52264790Sbapt 53264790Sbapt#ifndef yylhs 54264790Sbapt#define yylhs calc_lhs 55264790Sbapt#endif /* yylhs */ 56264790Sbapt 57264790Sbapt#ifndef yylen 58264790Sbapt#define yylen calc_len 59264790Sbapt#endif /* yylen */ 60264790Sbapt 61264790Sbapt#ifndef yydefred 62264790Sbapt#define yydefred calc_defred 63264790Sbapt#endif /* yydefred */ 64264790Sbapt 65264790Sbapt#ifndef yydgoto 66264790Sbapt#define yydgoto calc_dgoto 67264790Sbapt#endif /* yydgoto */ 68264790Sbapt 69264790Sbapt#ifndef yysindex 70264790Sbapt#define yysindex calc_sindex 71264790Sbapt#endif /* yysindex */ 72264790Sbapt 73264790Sbapt#ifndef yyrindex 74264790Sbapt#define yyrindex calc_rindex 75264790Sbapt#endif /* yyrindex */ 76264790Sbapt 77264790Sbapt#ifndef yygindex 78264790Sbapt#define yygindex calc_gindex 79264790Sbapt#endif /* yygindex */ 80264790Sbapt 81264790Sbapt#ifndef yytable 82264790Sbapt#define yytable calc_table 83264790Sbapt#endif /* yytable */ 84264790Sbapt 85264790Sbapt#ifndef yycheck 86264790Sbapt#define yycheck calc_check 87264790Sbapt#endif /* yycheck */ 88264790Sbapt 89264790Sbapt#ifndef yyname 90264790Sbapt#define yyname calc_name 91264790Sbapt#endif /* yyname */ 92264790Sbapt 93264790Sbapt#ifndef yyrule 94264790Sbapt#define yyrule calc_rule 95264790Sbapt#endif /* yyrule */ 96264790Sbapt#define YYPREFIX "calc_" 97264790Sbapt 98264790Sbapt#define YYPURE 0 99264790Sbapt 100264790Sbapt#line 2 "code_calc.y" 101264790Sbapt# include <stdio.h> 102264790Sbapt# include <ctype.h> 103264790Sbapt 104264790Sbaptint regs[26]; 105264790Sbaptint base; 106264790Sbapt 107264790Sbapt#ifdef YYBISON 108264790Sbaptint yylex(void); 109264790Sbaptstatic void yyerror(const char *s); 110264790Sbapt#endif 111264790Sbapt 112264790Sbapt#line 113 "code_calc.code.c" 113264790Sbapt 114264790Sbapt#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 115264790Sbapt/* Default: YYSTYPE is the semantic value type. */ 116264790Sbapttypedef int YYSTYPE; 117264790Sbapt# define YYSTYPE_IS_DECLARED 1 118264790Sbapt#endif 119264790Sbapt 120264790Sbapt/* compatibility with bison */ 121264790Sbapt#ifdef YYPARSE_PARAM 122264790Sbapt/* compatibility with FreeBSD */ 123264790Sbapt# ifdef YYPARSE_PARAM_TYPE 124264790Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 125264790Sbapt# else 126264790Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 127264790Sbapt# endif 128264790Sbapt#else 129264790Sbapt# define YYPARSE_DECL() yyparse(void) 130264790Sbapt#endif 131264790Sbapt 132264790Sbapt/* Parameters sent to lex. */ 133264790Sbapt#ifdef YYLEX_PARAM 134264790Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM) 135264790Sbapt# define YYLEX yylex(YYLEX_PARAM) 136264790Sbapt#else 137264790Sbapt# define YYLEX_DECL() yylex(void) 138264790Sbapt# define YYLEX yylex() 139264790Sbapt#endif 140264790Sbapt 141264790Sbapt/* Parameters sent to yyerror. */ 142264790Sbapt#ifndef YYERROR_DECL 143264790Sbapt#define YYERROR_DECL() yyerror(const char *s) 144264790Sbapt#endif 145264790Sbapt#ifndef YYERROR_CALL 146264790Sbapt#define YYERROR_CALL(msg) yyerror(msg) 147264790Sbapt#endif 148264790Sbapt 149264790Sbapt#define DIGIT 257 150264790Sbapt#define LETTER 258 151264790Sbapt#define UMINUS 259 152264790Sbapt#define YYERRCODE 256 153264790Sbapt#define YYTABLESIZE 220 154264790Sbapt#define YYFINAL 1 155264790Sbapt#ifndef YYDEBUG 156264790Sbapt#define YYDEBUG 0 157264790Sbapt#endif 158264790Sbapt#define YYMAXTOKEN 259 159264790Sbapt#define YYUNDFTOKEN 265 160264790Sbapt#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 161264790Sbapt 162264790Sbaptextern int YYPARSE_DECL(); 163264790Sbapttypedef short YYINT; 164264790Sbaptextern YYINT yylhs[]; 165264790Sbaptextern YYINT yylen[]; 166264790Sbaptextern YYINT yydefred[]; 167264790Sbaptextern YYINT yydgoto[]; 168264790Sbaptextern YYINT yysindex[]; 169264790Sbaptextern YYINT yyrindex[]; 170264790Sbaptextern YYINT yygindex[]; 171264790Sbaptextern YYINT yytable[]; 172264790Sbaptextern YYINT yycheck[]; 173264790Sbapt 174264790Sbapt#if YYDEBUG 175264790Sbaptextern char *yyname[]; 176264790Sbaptextern char *yyrule[]; 177264790Sbapt#endif 178264790Sbapt 179264790Sbaptint yydebug; 180264790Sbaptint yynerrs; 181264790Sbapt 182264790Sbaptint yyerrflag; 183264790Sbaptint yychar; 184264790SbaptYYSTYPE yyval; 185264790SbaptYYSTYPE yylval; 186264790Sbapt 187264790Sbapt/* define the initial stack-sizes */ 188264790Sbapt#ifdef YYSTACKSIZE 189264790Sbapt#undef YYMAXDEPTH 190264790Sbapt#define YYMAXDEPTH YYSTACKSIZE 191264790Sbapt#else 192264790Sbapt#ifdef YYMAXDEPTH 193264790Sbapt#define YYSTACKSIZE YYMAXDEPTH 194264790Sbapt#else 195264790Sbapt#define YYSTACKSIZE 10000 196264790Sbapt#define YYMAXDEPTH 10000 197264790Sbapt#endif 198264790Sbapt#endif 199264790Sbapt 200264790Sbapt#define YYINITSTACKSIZE 200 201264790Sbapt 202264790Sbapttypedef struct { 203264790Sbapt unsigned stacksize; 204264790Sbapt YYINT *s_base; 205264790Sbapt YYINT *s_mark; 206264790Sbapt YYINT *s_last; 207264790Sbapt YYSTYPE *l_base; 208264790Sbapt YYSTYPE *l_mark; 209264790Sbapt} YYSTACKDATA; 210264790Sbapt/* variables for the parser stack */ 211264790Sbaptstatic YYSTACKDATA yystack; 212264790Sbapt#line 68 "code_calc.y" 213264790Sbapt /* start of programs */ 214264790Sbapt 215264790Sbapt#ifdef YYBYACC 216264790Sbaptextern int YYLEX_DECL(); 217264790Sbapt#endif 218264790Sbapt 219264790Sbaptint 220264790Sbaptmain (void) 221264790Sbapt{ 222264790Sbapt while(!feof(stdin)) { 223264790Sbapt yyparse(); 224264790Sbapt } 225264790Sbapt return 0; 226264790Sbapt} 227264790Sbapt 228264790Sbaptstatic void 229264790Sbaptyyerror(const char *s) 230264790Sbapt{ 231264790Sbapt fprintf(stderr, "%s\n", s); 232264790Sbapt} 233264790Sbapt 234264790Sbaptint 235264790Sbaptyylex(void) 236264790Sbapt{ 237264790Sbapt /* lexical analysis routine */ 238264790Sbapt /* returns LETTER for a lower case letter, yylval = 0 through 25 */ 239264790Sbapt /* return DIGIT for a digit, yylval = 0 through 9 */ 240264790Sbapt /* all other characters are returned immediately */ 241264790Sbapt 242264790Sbapt int c; 243264790Sbapt 244264790Sbapt while( (c=getchar()) == ' ' ) { /* skip blanks */ } 245264790Sbapt 246264790Sbapt /* c is now nonblank */ 247264790Sbapt 248264790Sbapt if( islower( c )) { 249264790Sbapt yylval = c - 'a'; 250264790Sbapt return ( LETTER ); 251264790Sbapt } 252264790Sbapt if( isdigit( c )) { 253264790Sbapt yylval = c - '0'; 254264790Sbapt return ( DIGIT ); 255264790Sbapt } 256264790Sbapt return( c ); 257264790Sbapt} 258264790Sbapt#line 259 "code_calc.code.c" 259264790Sbapt 260264790Sbapt#if YYDEBUG 261264790Sbapt#include <stdio.h> /* needed for printf */ 262264790Sbapt#endif 263264790Sbapt 264264790Sbapt#include <stdlib.h> /* needed for malloc, etc */ 265264790Sbapt#include <string.h> /* needed for memset */ 266264790Sbapt 267264790Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 268264790Sbaptstatic int yygrowstack(YYSTACKDATA *data) 269264790Sbapt{ 270264790Sbapt int i; 271264790Sbapt unsigned newsize; 272264790Sbapt YYINT *newss; 273264790Sbapt YYSTYPE *newvs; 274264790Sbapt 275264790Sbapt if ((newsize = data->stacksize) == 0) 276264790Sbapt newsize = YYINITSTACKSIZE; 277264790Sbapt else if (newsize >= YYMAXDEPTH) 278264790Sbapt return YYENOMEM; 279264790Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 280264790Sbapt newsize = YYMAXDEPTH; 281264790Sbapt 282264790Sbapt i = (int) (data->s_mark - data->s_base); 283264790Sbapt newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 284264790Sbapt if (newss == 0) 285264790Sbapt return YYENOMEM; 286264790Sbapt 287264790Sbapt data->s_base = newss; 288264790Sbapt data->s_mark = newss + i; 289264790Sbapt 290264790Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 291264790Sbapt if (newvs == 0) 292264790Sbapt return YYENOMEM; 293264790Sbapt 294264790Sbapt data->l_base = newvs; 295264790Sbapt data->l_mark = newvs + i; 296264790Sbapt 297264790Sbapt data->stacksize = newsize; 298264790Sbapt data->s_last = data->s_base + newsize - 1; 299264790Sbapt return 0; 300264790Sbapt} 301264790Sbapt 302264790Sbapt#if YYPURE || defined(YY_NO_LEAKS) 303264790Sbaptstatic void yyfreestack(YYSTACKDATA *data) 304264790Sbapt{ 305264790Sbapt free(data->s_base); 306264790Sbapt free(data->l_base); 307264790Sbapt memset(data, 0, sizeof(*data)); 308264790Sbapt} 309264790Sbapt#else 310264790Sbapt#define yyfreestack(data) /* nothing */ 311264790Sbapt#endif 312264790Sbapt 313264790Sbapt#define YYABORT goto yyabort 314264790Sbapt#define YYREJECT goto yyabort 315264790Sbapt#define YYACCEPT goto yyaccept 316264790Sbapt#define YYERROR goto yyerrlab 317264790Sbapt 318264790Sbaptint 319264790SbaptYYPARSE_DECL() 320264790Sbapt{ 321264790Sbapt int yym, yyn, yystate; 322264790Sbapt#if YYDEBUG 323264790Sbapt const char *yys; 324264790Sbapt 325264790Sbapt if ((yys = getenv("YYDEBUG")) != 0) 326264790Sbapt { 327264790Sbapt yyn = *yys; 328264790Sbapt if (yyn >= '0' && yyn <= '9') 329264790Sbapt yydebug = yyn - '0'; 330264790Sbapt } 331264790Sbapt#endif 332264790Sbapt 333264790Sbapt yynerrs = 0; 334264790Sbapt yyerrflag = 0; 335264790Sbapt yychar = YYEMPTY; 336264790Sbapt yystate = 0; 337264790Sbapt 338264790Sbapt#if YYPURE 339264790Sbapt memset(&yystack, 0, sizeof(yystack)); 340264790Sbapt#endif 341264790Sbapt 342264790Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 343264790Sbapt yystack.s_mark = yystack.s_base; 344264790Sbapt yystack.l_mark = yystack.l_base; 345264790Sbapt yystate = 0; 346264790Sbapt *yystack.s_mark = 0; 347264790Sbapt 348264790Sbaptyyloop: 349264790Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 350264790Sbapt if (yychar < 0) 351264790Sbapt { 352264790Sbapt if ((yychar = YYLEX) < 0) yychar = YYEOF; 353264790Sbapt#if YYDEBUG 354264790Sbapt if (yydebug) 355264790Sbapt { 356264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 357264790Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 358264790Sbapt YYPREFIX, yystate, yychar, yys); 359264790Sbapt } 360264790Sbapt#endif 361264790Sbapt } 362264790Sbapt if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 363264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 364264790Sbapt { 365264790Sbapt#if YYDEBUG 366264790Sbapt if (yydebug) 367264790Sbapt printf("%sdebug: state %d, shifting to state %d\n", 368264790Sbapt YYPREFIX, yystate, yytable[yyn]); 369264790Sbapt#endif 370264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 371264790Sbapt { 372264790Sbapt goto yyoverflow; 373264790Sbapt } 374264790Sbapt yystate = yytable[yyn]; 375264790Sbapt *++yystack.s_mark = yytable[yyn]; 376264790Sbapt *++yystack.l_mark = yylval; 377264790Sbapt yychar = YYEMPTY; 378264790Sbapt if (yyerrflag > 0) --yyerrflag; 379264790Sbapt goto yyloop; 380264790Sbapt } 381264790Sbapt if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 382264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 383264790Sbapt { 384264790Sbapt yyn = yytable[yyn]; 385264790Sbapt goto yyreduce; 386264790Sbapt } 387264790Sbapt if (yyerrflag) goto yyinrecovery; 388264790Sbapt 389264790Sbapt YYERROR_CALL("syntax error"); 390264790Sbapt 391264790Sbapt goto yyerrlab; 392264790Sbapt 393264790Sbaptyyerrlab: 394264790Sbapt ++yynerrs; 395264790Sbapt 396264790Sbaptyyinrecovery: 397264790Sbapt if (yyerrflag < 3) 398264790Sbapt { 399264790Sbapt yyerrflag = 3; 400264790Sbapt for (;;) 401264790Sbapt { 402264790Sbapt if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && 403264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 404264790Sbapt { 405264790Sbapt#if YYDEBUG 406264790Sbapt if (yydebug) 407264790Sbapt printf("%sdebug: state %d, error recovery shifting\ 408264790Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 409264790Sbapt#endif 410264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 411264790Sbapt { 412264790Sbapt goto yyoverflow; 413264790Sbapt } 414264790Sbapt yystate = yytable[yyn]; 415264790Sbapt *++yystack.s_mark = yytable[yyn]; 416264790Sbapt *++yystack.l_mark = yylval; 417264790Sbapt goto yyloop; 418264790Sbapt } 419264790Sbapt else 420264790Sbapt { 421264790Sbapt#if YYDEBUG 422264790Sbapt if (yydebug) 423264790Sbapt printf("%sdebug: error recovery discarding state %d\n", 424264790Sbapt YYPREFIX, *yystack.s_mark); 425264790Sbapt#endif 426264790Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 427264790Sbapt --yystack.s_mark; 428264790Sbapt --yystack.l_mark; 429264790Sbapt } 430264790Sbapt } 431264790Sbapt } 432264790Sbapt else 433264790Sbapt { 434264790Sbapt if (yychar == YYEOF) goto yyabort; 435264790Sbapt#if YYDEBUG 436264790Sbapt if (yydebug) 437264790Sbapt { 438264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 439264790Sbapt printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 440264790Sbapt YYPREFIX, yystate, yychar, yys); 441264790Sbapt } 442264790Sbapt#endif 443264790Sbapt yychar = YYEMPTY; 444264790Sbapt goto yyloop; 445264790Sbapt } 446264790Sbapt 447264790Sbaptyyreduce: 448264790Sbapt#if YYDEBUG 449264790Sbapt if (yydebug) 450264790Sbapt printf("%sdebug: state %d, reducing by rule %d (%s)\n", 451264790Sbapt YYPREFIX, yystate, yyn, yyrule[yyn]); 452264790Sbapt#endif 453264790Sbapt yym = yylen[yyn]; 454264790Sbapt if (yym) 455264790Sbapt yyval = yystack.l_mark[1-yym]; 456264790Sbapt else 457264790Sbapt memset(&yyval, 0, sizeof yyval); 458264790Sbapt switch (yyn) 459264790Sbapt { 460264790Sbaptcase 3: 461264790Sbapt#line 30 "code_calc.y" 462264790Sbapt { yyerrok ; } 463264790Sbaptbreak; 464264790Sbaptcase 4: 465264790Sbapt#line 34 "code_calc.y" 466264790Sbapt { printf("%d\n",yystack.l_mark[0]);} 467264790Sbaptbreak; 468264790Sbaptcase 5: 469264790Sbapt#line 36 "code_calc.y" 470264790Sbapt { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } 471264790Sbaptbreak; 472264790Sbaptcase 6: 473264790Sbapt#line 40 "code_calc.y" 474264790Sbapt { yyval = yystack.l_mark[-1]; } 475264790Sbaptbreak; 476264790Sbaptcase 7: 477264790Sbapt#line 42 "code_calc.y" 478264790Sbapt { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } 479264790Sbaptbreak; 480264790Sbaptcase 8: 481264790Sbapt#line 44 "code_calc.y" 482264790Sbapt { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } 483264790Sbaptbreak; 484264790Sbaptcase 9: 485264790Sbapt#line 46 "code_calc.y" 486264790Sbapt { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } 487264790Sbaptbreak; 488264790Sbaptcase 10: 489264790Sbapt#line 48 "code_calc.y" 490264790Sbapt { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } 491264790Sbaptbreak; 492264790Sbaptcase 11: 493264790Sbapt#line 50 "code_calc.y" 494264790Sbapt { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } 495264790Sbaptbreak; 496264790Sbaptcase 12: 497264790Sbapt#line 52 "code_calc.y" 498264790Sbapt { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } 499264790Sbaptbreak; 500264790Sbaptcase 13: 501264790Sbapt#line 54 "code_calc.y" 502264790Sbapt { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } 503264790Sbaptbreak; 504264790Sbaptcase 14: 505264790Sbapt#line 56 "code_calc.y" 506264790Sbapt { yyval = - yystack.l_mark[0]; } 507264790Sbaptbreak; 508264790Sbaptcase 15: 509264790Sbapt#line 58 "code_calc.y" 510264790Sbapt { yyval = regs[yystack.l_mark[0]]; } 511264790Sbaptbreak; 512264790Sbaptcase 17: 513264790Sbapt#line 63 "code_calc.y" 514264790Sbapt { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } 515264790Sbaptbreak; 516264790Sbaptcase 18: 517264790Sbapt#line 65 "code_calc.y" 518264790Sbapt { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } 519264790Sbaptbreak; 520264790Sbapt#line 521 "code_calc.code.c" 521264790Sbapt } 522264790Sbapt yystack.s_mark -= yym; 523264790Sbapt yystate = *yystack.s_mark; 524264790Sbapt yystack.l_mark -= yym; 525264790Sbapt yym = yylhs[yyn]; 526264790Sbapt if (yystate == 0 && yym == 0) 527264790Sbapt { 528264790Sbapt#if YYDEBUG 529264790Sbapt if (yydebug) 530264790Sbapt printf("%sdebug: after reduction, shifting from state 0 to\ 531264790Sbapt state %d\n", YYPREFIX, YYFINAL); 532264790Sbapt#endif 533264790Sbapt yystate = YYFINAL; 534264790Sbapt *++yystack.s_mark = YYFINAL; 535264790Sbapt *++yystack.l_mark = yyval; 536264790Sbapt if (yychar < 0) 537264790Sbapt { 538264790Sbapt if ((yychar = YYLEX) < 0) yychar = YYEOF; 539264790Sbapt#if YYDEBUG 540264790Sbapt if (yydebug) 541264790Sbapt { 542264790Sbapt yys = yyname[YYTRANSLATE(yychar)]; 543264790Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 544264790Sbapt YYPREFIX, YYFINAL, yychar, yys); 545264790Sbapt } 546264790Sbapt#endif 547264790Sbapt } 548264790Sbapt if (yychar == YYEOF) goto yyaccept; 549264790Sbapt goto yyloop; 550264790Sbapt } 551264790Sbapt if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 552264790Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 553264790Sbapt yystate = yytable[yyn]; 554264790Sbapt else 555264790Sbapt yystate = yydgoto[yym]; 556264790Sbapt#if YYDEBUG 557264790Sbapt if (yydebug) 558264790Sbapt printf("%sdebug: after reduction, shifting from state %d \ 559264790Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate); 560264790Sbapt#endif 561264790Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 562264790Sbapt { 563264790Sbapt goto yyoverflow; 564264790Sbapt } 565264790Sbapt *++yystack.s_mark = (YYINT) yystate; 566264790Sbapt *++yystack.l_mark = yyval; 567264790Sbapt goto yyloop; 568264790Sbapt 569264790Sbaptyyoverflow: 570264790Sbapt YYERROR_CALL("yacc stack overflow"); 571264790Sbapt 572264790Sbaptyyabort: 573264790Sbapt yyfreestack(&yystack); 574264790Sbapt return (1); 575264790Sbapt 576264790Sbaptyyaccept: 577264790Sbapt yyfreestack(&yystack); 578264790Sbapt return (0); 579264790Sbapt} 580