1234949Sbapt#ifndef lint 2234949Sbaptstatic const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; 3234949Sbapt#endif 4234949Sbapt 5234949Sbapt#define YYBYACC 1 6234949Sbapt#define YYMAJOR 1 7234949Sbapt#define YYMINOR 9 8234949Sbapt 9234949Sbapt#define YYEMPTY (-1) 10234949Sbapt#define yyclearin (yychar = YYEMPTY) 11234949Sbapt#define yyerrok (yyerrflag = 0) 12234949Sbapt#define YYRECOVERING() (yyerrflag != 0) 13234949Sbapt 14234949Sbapt 15234949Sbapt#define YYPURE 0 16234949Sbapt 17234949Sbapt#line 2 "code_calc.y" 18234949Sbapt# include <stdio.h> 19234949Sbapt# include <ctype.h> 20234949Sbapt 21234949Sbaptint regs[26]; 22234949Sbaptint base; 23234949Sbapt 24234949Sbapt#ifdef YYBISON 25234949Sbaptint yylex(void); 26234949Sbaptstatic void yyerror(const char *s); 27234949Sbapt#endif 28234949Sbapt 29234949Sbapt#line 30 "code_calc.code.c" 30234949Sbapt 31234949Sbapt#ifndef YYSTYPE 32234949Sbapttypedef int YYSTYPE; 33234949Sbapt#endif 34234949Sbapt 35234949Sbapt/* compatibility with bison */ 36234949Sbapt#ifdef YYPARSE_PARAM 37234949Sbapt/* compatibility with FreeBSD */ 38234949Sbapt# ifdef YYPARSE_PARAM_TYPE 39234949Sbapt# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 40234949Sbapt# else 41234949Sbapt# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 42234949Sbapt# endif 43234949Sbapt#else 44234949Sbapt# define YYPARSE_DECL() yyparse(void) 45234949Sbapt#endif 46234949Sbapt 47234949Sbapt/* Parameters sent to lex. */ 48234949Sbapt#ifdef YYLEX_PARAM 49234949Sbapt# define YYLEX_DECL() yylex(void *YYLEX_PARAM) 50234949Sbapt# define YYLEX yylex(YYLEX_PARAM) 51234949Sbapt#else 52234949Sbapt# define YYLEX_DECL() yylex(void) 53234949Sbapt# define YYLEX yylex() 54234949Sbapt#endif 55234949Sbapt 56234949Sbapt/* Parameters sent to yyerror. */ 57234949Sbapt#ifndef YYERROR_DECL 58234949Sbapt#define YYERROR_DECL() yyerror(const char *s) 59234949Sbapt#endif 60234949Sbapt#ifndef YYERROR_CALL 61234949Sbapt#define YYERROR_CALL(msg) yyerror(msg) 62234949Sbapt#endif 63234949Sbapt 64234949Sbaptextern int YYPARSE_DECL(); 65234949Sbapt 66234949Sbapt#define DIGIT 257 67234949Sbapt#define LETTER 258 68234949Sbapt#define UMINUS 259 69234949Sbapt#define YYERRCODE 256 70234949Sbapt#define YYTABLESIZE 220 71234949Sbapt#define YYFINAL 1 72234949Sbapt#ifndef YYDEBUG 73234949Sbapt#define YYDEBUG 0 74234949Sbapt#endif 75234949Sbapt#define YYMAXTOKEN 259 76234949Sbapt 77234949Sbapt#ifndef yyparse 78234949Sbapt#define yyparse calc_parse 79234949Sbapt#endif /* yyparse */ 80234949Sbapt 81234949Sbapt#ifndef yylex 82234949Sbapt#define yylex calc_lex 83234949Sbapt#endif /* yylex */ 84234949Sbapt 85234949Sbapt#ifndef yyerror 86234949Sbapt#define yyerror calc_error 87234949Sbapt#endif /* yyerror */ 88234949Sbapt 89234949Sbapt#ifndef yychar 90234949Sbapt#define yychar calc_char 91234949Sbapt#endif /* yychar */ 92234949Sbapt 93234949Sbapt#ifndef yyval 94234949Sbapt#define yyval calc_val 95234949Sbapt#endif /* yyval */ 96234949Sbapt 97234949Sbapt#ifndef yylval 98234949Sbapt#define yylval calc_lval 99234949Sbapt#endif /* yylval */ 100234949Sbapt 101234949Sbapt#ifndef yydebug 102234949Sbapt#define yydebug calc_debug 103234949Sbapt#endif /* yydebug */ 104234949Sbapt 105234949Sbapt#ifndef yynerrs 106234949Sbapt#define yynerrs calc_nerrs 107234949Sbapt#endif /* yynerrs */ 108234949Sbapt 109234949Sbapt#ifndef yyerrflag 110234949Sbapt#define yyerrflag calc_errflag 111234949Sbapt#endif /* yyerrflag */ 112234949Sbapt 113234949Sbapt#ifndef yylhs 114234949Sbapt#define yylhs calc_lhs 115234949Sbapt#endif /* yylhs */ 116234949Sbapt 117234949Sbapt#ifndef yylen 118234949Sbapt#define yylen calc_len 119234949Sbapt#endif /* yylen */ 120234949Sbapt 121234949Sbapt#ifndef yydefred 122234949Sbapt#define yydefred calc_defred 123234949Sbapt#endif /* yydefred */ 124234949Sbapt 125234949Sbapt#ifndef yydgoto 126234949Sbapt#define yydgoto calc_dgoto 127234949Sbapt#endif /* yydgoto */ 128234949Sbapt 129234949Sbapt#ifndef yysindex 130234949Sbapt#define yysindex calc_sindex 131234949Sbapt#endif /* yysindex */ 132234949Sbapt 133234949Sbapt#ifndef yyrindex 134234949Sbapt#define yyrindex calc_rindex 135234949Sbapt#endif /* yyrindex */ 136234949Sbapt 137234949Sbapt#ifndef yygindex 138234949Sbapt#define yygindex calc_gindex 139234949Sbapt#endif /* yygindex */ 140234949Sbapt 141234949Sbapt#ifndef yytable 142234949Sbapt#define yytable calc_table 143234949Sbapt#endif /* yytable */ 144234949Sbapt 145234949Sbapt#ifndef yycheck 146234949Sbapt#define yycheck calc_check 147234949Sbapt#endif /* yycheck */ 148234949Sbapt 149234949Sbapt#ifndef yyname 150234949Sbapt#define yyname calc_name 151234949Sbapt#endif /* yyname */ 152234949Sbapt 153234949Sbapt#ifndef yyrule 154234949Sbapt#define yyrule calc_rule 155234949Sbapt#endif /* yyrule */ 156234949Sbapt#define YYPREFIX "calc_" 157234949Sbapt 158234949Sbaptextern int YYPARSE_DECL(); 159234949Sbaptextern short yylhs[]; 160234949Sbaptextern short yylen[]; 161234949Sbaptextern short yydefred[]; 162234949Sbaptextern short yydgoto[]; 163234949Sbaptextern short yysindex[]; 164234949Sbaptextern short yyrindex[]; 165234949Sbaptextern short yygindex[]; 166234949Sbaptextern short yytable[]; 167234949Sbaptextern short yycheck[]; 168234949Sbapt 169234949Sbapt#if YYDEBUG 170234949Sbaptextern char *yyname[]; 171234949Sbaptextern char *yyrule[]; 172234949Sbapt#endif 173234949Sbapt 174234949Sbaptint yydebug; 175234949Sbaptint yynerrs; 176234949Sbapt 177234949Sbaptint yyerrflag; 178234949Sbaptint yychar; 179234949SbaptYYSTYPE yyval; 180234949SbaptYYSTYPE yylval; 181234949Sbapt 182234949Sbapt/* define the initial stack-sizes */ 183234949Sbapt#ifdef YYSTACKSIZE 184234949Sbapt#undef YYMAXDEPTH 185234949Sbapt#define YYMAXDEPTH YYSTACKSIZE 186234949Sbapt#else 187234949Sbapt#ifdef YYMAXDEPTH 188234949Sbapt#define YYSTACKSIZE YYMAXDEPTH 189234949Sbapt#else 190234949Sbapt#define YYSTACKSIZE 500 191234949Sbapt#define YYMAXDEPTH 500 192234949Sbapt#endif 193234949Sbapt#endif 194234949Sbapt 195234949Sbapt#define YYINITSTACKSIZE 500 196234949Sbapt 197234949Sbapttypedef struct { 198234949Sbapt unsigned stacksize; 199234949Sbapt short *s_base; 200234949Sbapt short *s_mark; 201234949Sbapt short *s_last; 202234949Sbapt YYSTYPE *l_base; 203234949Sbapt YYSTYPE *l_mark; 204234949Sbapt} YYSTACKDATA; 205234949Sbapt/* variables for the parser stack */ 206234949Sbaptstatic YYSTACKDATA yystack; 207234949Sbapt#line 68 "code_calc.y" 208234949Sbapt /* start of programs */ 209234949Sbapt 210234949Sbapt#ifdef YYBYACC 211234949Sbaptextern int YYLEX_DECL(); 212234949Sbapt#endif 213234949Sbapt 214234949Sbaptint 215234949Sbaptmain (void) 216234949Sbapt{ 217234949Sbapt while(!feof(stdin)) { 218234949Sbapt yyparse(); 219234949Sbapt } 220234949Sbapt return 0; 221234949Sbapt} 222234949Sbapt 223234949Sbaptstatic void 224234949Sbaptyyerror(const char *s) 225234949Sbapt{ 226234949Sbapt fprintf(stderr, "%s\n", s); 227234949Sbapt} 228234949Sbapt 229234949Sbaptint 230234949Sbaptyylex(void) 231234949Sbapt{ 232234949Sbapt /* lexical analysis routine */ 233234949Sbapt /* returns LETTER for a lower case letter, yylval = 0 through 25 */ 234234949Sbapt /* return DIGIT for a digit, yylval = 0 through 9 */ 235234949Sbapt /* all other characters are returned immediately */ 236234949Sbapt 237234949Sbapt int c; 238234949Sbapt 239234949Sbapt while( (c=getchar()) == ' ' ) { /* skip blanks */ } 240234949Sbapt 241234949Sbapt /* c is now nonblank */ 242234949Sbapt 243234949Sbapt if( islower( c )) { 244234949Sbapt yylval = c - 'a'; 245234949Sbapt return ( LETTER ); 246234949Sbapt } 247234949Sbapt if( isdigit( c )) { 248234949Sbapt yylval = c - '0'; 249234949Sbapt return ( DIGIT ); 250234949Sbapt } 251234949Sbapt return( c ); 252234949Sbapt} 253234949Sbapt#line 254 "code_calc.code.c" 254234949Sbapt 255234949Sbapt#if YYDEBUG 256234949Sbapt#include <stdio.h> /* needed for printf */ 257234949Sbapt#endif 258234949Sbapt 259234949Sbapt#include <stdlib.h> /* needed for malloc, etc */ 260234949Sbapt#include <string.h> /* needed for memset */ 261234949Sbapt 262234949Sbapt/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 263234949Sbaptstatic int yygrowstack(YYSTACKDATA *data) 264234949Sbapt{ 265234949Sbapt int i; 266234949Sbapt unsigned newsize; 267234949Sbapt short *newss; 268234949Sbapt YYSTYPE *newvs; 269234949Sbapt 270234949Sbapt if ((newsize = data->stacksize) == 0) 271234949Sbapt newsize = YYINITSTACKSIZE; 272234949Sbapt else if (newsize >= YYMAXDEPTH) 273234949Sbapt return -1; 274234949Sbapt else if ((newsize *= 2) > YYMAXDEPTH) 275234949Sbapt newsize = YYMAXDEPTH; 276234949Sbapt 277251143Sbapt i = (int) (data->s_mark - data->s_base); 278234949Sbapt newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); 279234949Sbapt if (newss == 0) 280234949Sbapt return -1; 281234949Sbapt 282234949Sbapt data->s_base = newss; 283234949Sbapt data->s_mark = newss + i; 284234949Sbapt 285234949Sbapt newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 286234949Sbapt if (newvs == 0) 287234949Sbapt return -1; 288234949Sbapt 289234949Sbapt data->l_base = newvs; 290234949Sbapt data->l_mark = newvs + i; 291234949Sbapt 292234949Sbapt data->stacksize = newsize; 293234949Sbapt data->s_last = data->s_base + newsize - 1; 294234949Sbapt return 0; 295234949Sbapt} 296234949Sbapt 297234949Sbapt#if YYPURE || defined(YY_NO_LEAKS) 298234949Sbaptstatic void yyfreestack(YYSTACKDATA *data) 299234949Sbapt{ 300234949Sbapt free(data->s_base); 301234949Sbapt free(data->l_base); 302234949Sbapt memset(data, 0, sizeof(*data)); 303234949Sbapt} 304234949Sbapt#else 305234949Sbapt#define yyfreestack(data) /* nothing */ 306234949Sbapt#endif 307234949Sbapt 308234949Sbapt#define YYABORT goto yyabort 309234949Sbapt#define YYREJECT goto yyabort 310234949Sbapt#define YYACCEPT goto yyaccept 311234949Sbapt#define YYERROR goto yyerrlab 312234949Sbapt 313234949Sbaptint 314234949SbaptYYPARSE_DECL() 315234949Sbapt{ 316234949Sbapt int yym, yyn, yystate; 317234949Sbapt#if YYDEBUG 318234949Sbapt const char *yys; 319234949Sbapt 320234949Sbapt if ((yys = getenv("YYDEBUG")) != 0) 321234949Sbapt { 322234949Sbapt yyn = *yys; 323234949Sbapt if (yyn >= '0' && yyn <= '9') 324234949Sbapt yydebug = yyn - '0'; 325234949Sbapt } 326234949Sbapt#endif 327234949Sbapt 328234949Sbapt yynerrs = 0; 329234949Sbapt yyerrflag = 0; 330234949Sbapt yychar = YYEMPTY; 331234949Sbapt yystate = 0; 332234949Sbapt 333234949Sbapt#if YYPURE 334234949Sbapt memset(&yystack, 0, sizeof(yystack)); 335234949Sbapt#endif 336234949Sbapt 337234949Sbapt if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow; 338234949Sbapt yystack.s_mark = yystack.s_base; 339234949Sbapt yystack.l_mark = yystack.l_base; 340234949Sbapt yystate = 0; 341234949Sbapt *yystack.s_mark = 0; 342234949Sbapt 343234949Sbaptyyloop: 344234949Sbapt if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 345234949Sbapt if (yychar < 0) 346234949Sbapt { 347234949Sbapt if ((yychar = YYLEX) < 0) yychar = 0; 348234949Sbapt#if YYDEBUG 349234949Sbapt if (yydebug) 350234949Sbapt { 351234949Sbapt yys = 0; 352234949Sbapt if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 353234949Sbapt if (!yys) yys = "illegal-symbol"; 354234949Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 355234949Sbapt YYPREFIX, yystate, yychar, yys); 356234949Sbapt } 357234949Sbapt#endif 358234949Sbapt } 359234949Sbapt if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 360234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 361234949Sbapt { 362234949Sbapt#if YYDEBUG 363234949Sbapt if (yydebug) 364234949Sbapt printf("%sdebug: state %d, shifting to state %d\n", 365234949Sbapt YYPREFIX, yystate, yytable[yyn]); 366234949Sbapt#endif 367234949Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 368234949Sbapt { 369234949Sbapt goto yyoverflow; 370234949Sbapt } 371234949Sbapt yystate = yytable[yyn]; 372234949Sbapt *++yystack.s_mark = yytable[yyn]; 373234949Sbapt *++yystack.l_mark = yylval; 374234949Sbapt yychar = YYEMPTY; 375234949Sbapt if (yyerrflag > 0) --yyerrflag; 376234949Sbapt goto yyloop; 377234949Sbapt } 378234949Sbapt if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 379234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 380234949Sbapt { 381234949Sbapt yyn = yytable[yyn]; 382234949Sbapt goto yyreduce; 383234949Sbapt } 384234949Sbapt if (yyerrflag) goto yyinrecovery; 385234949Sbapt 386234949Sbapt yyerror("syntax error"); 387234949Sbapt 388234949Sbapt goto yyerrlab; 389234949Sbapt 390234949Sbaptyyerrlab: 391234949Sbapt ++yynerrs; 392234949Sbapt 393234949Sbaptyyinrecovery: 394234949Sbapt if (yyerrflag < 3) 395234949Sbapt { 396234949Sbapt yyerrflag = 3; 397234949Sbapt for (;;) 398234949Sbapt { 399234949Sbapt if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && 400234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 401234949Sbapt { 402234949Sbapt#if YYDEBUG 403234949Sbapt if (yydebug) 404234949Sbapt printf("%sdebug: state %d, error recovery shifting\ 405234949Sbapt to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 406234949Sbapt#endif 407234949Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 408234949Sbapt { 409234949Sbapt goto yyoverflow; 410234949Sbapt } 411234949Sbapt yystate = yytable[yyn]; 412234949Sbapt *++yystack.s_mark = yytable[yyn]; 413234949Sbapt *++yystack.l_mark = yylval; 414234949Sbapt goto yyloop; 415234949Sbapt } 416234949Sbapt else 417234949Sbapt { 418234949Sbapt#if YYDEBUG 419234949Sbapt if (yydebug) 420234949Sbapt printf("%sdebug: error recovery discarding state %d\n", 421234949Sbapt YYPREFIX, *yystack.s_mark); 422234949Sbapt#endif 423234949Sbapt if (yystack.s_mark <= yystack.s_base) goto yyabort; 424234949Sbapt --yystack.s_mark; 425234949Sbapt --yystack.l_mark; 426234949Sbapt } 427234949Sbapt } 428234949Sbapt } 429234949Sbapt else 430234949Sbapt { 431234949Sbapt if (yychar == 0) goto yyabort; 432234949Sbapt#if YYDEBUG 433234949Sbapt if (yydebug) 434234949Sbapt { 435234949Sbapt yys = 0; 436234949Sbapt if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 437234949Sbapt if (!yys) yys = "illegal-symbol"; 438234949Sbapt printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 439234949Sbapt YYPREFIX, yystate, yychar, yys); 440234949Sbapt } 441234949Sbapt#endif 442234949Sbapt yychar = YYEMPTY; 443234949Sbapt goto yyloop; 444234949Sbapt } 445234949Sbapt 446234949Sbaptyyreduce: 447234949Sbapt#if YYDEBUG 448234949Sbapt if (yydebug) 449234949Sbapt printf("%sdebug: state %d, reducing by rule %d (%s)\n", 450234949Sbapt YYPREFIX, yystate, yyn, yyrule[yyn]); 451234949Sbapt#endif 452234949Sbapt yym = yylen[yyn]; 453234949Sbapt if (yym) 454234949Sbapt yyval = yystack.l_mark[1-yym]; 455234949Sbapt else 456234949Sbapt memset(&yyval, 0, sizeof yyval); 457234949Sbapt switch (yyn) 458234949Sbapt { 459234949Sbaptcase 3: 460234949Sbapt#line 30 "code_calc.y" 461234949Sbapt { yyerrok ; } 462234949Sbaptbreak; 463234949Sbaptcase 4: 464234949Sbapt#line 34 "code_calc.y" 465234949Sbapt { printf("%d\n",yystack.l_mark[0]);} 466234949Sbaptbreak; 467234949Sbaptcase 5: 468234949Sbapt#line 36 "code_calc.y" 469234949Sbapt { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } 470234949Sbaptbreak; 471234949Sbaptcase 6: 472234949Sbapt#line 40 "code_calc.y" 473234949Sbapt { yyval = yystack.l_mark[-1]; } 474234949Sbaptbreak; 475234949Sbaptcase 7: 476234949Sbapt#line 42 "code_calc.y" 477234949Sbapt { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } 478234949Sbaptbreak; 479234949Sbaptcase 8: 480234949Sbapt#line 44 "code_calc.y" 481234949Sbapt { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } 482234949Sbaptbreak; 483234949Sbaptcase 9: 484234949Sbapt#line 46 "code_calc.y" 485234949Sbapt { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } 486234949Sbaptbreak; 487234949Sbaptcase 10: 488234949Sbapt#line 48 "code_calc.y" 489234949Sbapt { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } 490234949Sbaptbreak; 491234949Sbaptcase 11: 492234949Sbapt#line 50 "code_calc.y" 493234949Sbapt { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } 494234949Sbaptbreak; 495234949Sbaptcase 12: 496234949Sbapt#line 52 "code_calc.y" 497234949Sbapt { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } 498234949Sbaptbreak; 499234949Sbaptcase 13: 500234949Sbapt#line 54 "code_calc.y" 501234949Sbapt { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } 502234949Sbaptbreak; 503234949Sbaptcase 14: 504234949Sbapt#line 56 "code_calc.y" 505234949Sbapt { yyval = - yystack.l_mark[0]; } 506234949Sbaptbreak; 507234949Sbaptcase 15: 508234949Sbapt#line 58 "code_calc.y" 509234949Sbapt { yyval = regs[yystack.l_mark[0]]; } 510234949Sbaptbreak; 511234949Sbaptcase 17: 512234949Sbapt#line 63 "code_calc.y" 513234949Sbapt { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } 514234949Sbaptbreak; 515234949Sbaptcase 18: 516234949Sbapt#line 65 "code_calc.y" 517234949Sbapt { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } 518234949Sbaptbreak; 519234949Sbapt#line 520 "code_calc.code.c" 520234949Sbapt } 521234949Sbapt yystack.s_mark -= yym; 522234949Sbapt yystate = *yystack.s_mark; 523234949Sbapt yystack.l_mark -= yym; 524234949Sbapt yym = yylhs[yyn]; 525234949Sbapt if (yystate == 0 && yym == 0) 526234949Sbapt { 527234949Sbapt#if YYDEBUG 528234949Sbapt if (yydebug) 529234949Sbapt printf("%sdebug: after reduction, shifting from state 0 to\ 530234949Sbapt state %d\n", YYPREFIX, YYFINAL); 531234949Sbapt#endif 532234949Sbapt yystate = YYFINAL; 533234949Sbapt *++yystack.s_mark = YYFINAL; 534234949Sbapt *++yystack.l_mark = yyval; 535234949Sbapt if (yychar < 0) 536234949Sbapt { 537234949Sbapt if ((yychar = YYLEX) < 0) yychar = 0; 538234949Sbapt#if YYDEBUG 539234949Sbapt if (yydebug) 540234949Sbapt { 541234949Sbapt yys = 0; 542234949Sbapt if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 543234949Sbapt if (!yys) yys = "illegal-symbol"; 544234949Sbapt printf("%sdebug: state %d, reading %d (%s)\n", 545234949Sbapt YYPREFIX, YYFINAL, yychar, yys); 546234949Sbapt } 547234949Sbapt#endif 548234949Sbapt } 549234949Sbapt if (yychar == 0) goto yyaccept; 550234949Sbapt goto yyloop; 551234949Sbapt } 552234949Sbapt if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 553234949Sbapt yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 554234949Sbapt yystate = yytable[yyn]; 555234949Sbapt else 556234949Sbapt yystate = yydgoto[yym]; 557234949Sbapt#if YYDEBUG 558234949Sbapt if (yydebug) 559234949Sbapt printf("%sdebug: after reduction, shifting from state %d \ 560234949Sbaptto state %d\n", YYPREFIX, *yystack.s_mark, yystate); 561234949Sbapt#endif 562234949Sbapt if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 563234949Sbapt { 564234949Sbapt goto yyoverflow; 565234949Sbapt } 566234949Sbapt *++yystack.s_mark = (short) yystate; 567234949Sbapt *++yystack.l_mark = yyval; 568234949Sbapt goto yyloop; 569234949Sbapt 570234949Sbaptyyoverflow: 571234949Sbapt yyerror("yacc stack overflow"); 572234949Sbapt 573234949Sbaptyyabort: 574234949Sbapt yyfreestack(&yystack); 575234949Sbapt return (1); 576234949Sbapt 577234949Sbaptyyaccept: 578234949Sbapt yyfreestack(&yystack); 579234949Sbapt return (0); 580234949Sbapt} 581