quote_calc4-s.tab.c revision 1.3
1/* $NetBSD: quote_calc4-s.tab.c,v 1.3 2018/12/23 15:38:54 christos Exp $ */ 2 3/* original parser id follows */ 4/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ 5/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ 6 7#define YYBYACC 1 8#define YYMAJOR 1 9#define YYMINOR 9 10#define YYCHECK "yyyymmdd" 11 12#define YYEMPTY (-1) 13#define yyclearin (yychar = YYEMPTY) 14#define yyerrok (yyerrflag = 0) 15#define YYRECOVERING() (yyerrflag != 0) 16#define YYENOMEM (-2) 17#define YYEOF 0 18 19#ifndef yyparse 20#define yyparse quote_calc4_parse 21#endif /* yyparse */ 22 23#ifndef yylex 24#define yylex quote_calc4_lex 25#endif /* yylex */ 26 27#ifndef yyerror 28#define yyerror quote_calc4_error 29#endif /* yyerror */ 30 31#ifndef yychar 32#define yychar quote_calc4_char 33#endif /* yychar */ 34 35#ifndef yyval 36#define yyval quote_calc4_val 37#endif /* yyval */ 38 39#ifndef yylval 40#define yylval quote_calc4_lval 41#endif /* yylval */ 42 43#ifndef yydebug 44#define yydebug quote_calc4_debug 45#endif /* yydebug */ 46 47#ifndef yynerrs 48#define yynerrs quote_calc4_nerrs 49#endif /* yynerrs */ 50 51#ifndef yyerrflag 52#define yyerrflag quote_calc4_errflag 53#endif /* yyerrflag */ 54 55#ifndef yylhs 56#define yylhs quote_calc4_lhs 57#endif /* yylhs */ 58 59#ifndef yylen 60#define yylen quote_calc4_len 61#endif /* yylen */ 62 63#ifndef yydefred 64#define yydefred quote_calc4_defred 65#endif /* yydefred */ 66 67#ifndef yydgoto 68#define yydgoto quote_calc4_dgoto 69#endif /* yydgoto */ 70 71#ifndef yysindex 72#define yysindex quote_calc4_sindex 73#endif /* yysindex */ 74 75#ifndef yyrindex 76#define yyrindex quote_calc4_rindex 77#endif /* yyrindex */ 78 79#ifndef yygindex 80#define yygindex quote_calc4_gindex 81#endif /* yygindex */ 82 83#ifndef yytable 84#define yytable quote_calc4_table 85#endif /* yytable */ 86 87#ifndef yycheck 88#define yycheck quote_calc4_check 89#endif /* yycheck */ 90 91#ifndef yyname 92#define yyname quote_calc4_name 93#endif /* yyname */ 94 95#ifndef yyrule 96#define yyrule quote_calc4_rule 97#endif /* yyrule */ 98#define YYPREFIX "quote_calc4_" 99 100#define YYPURE 0 101 102#line 2 "quote_calc4.y" 103# include <stdio.h> 104# include <ctype.h> 105 106int regs[26]; 107int base; 108 109int yylex(void); 110static void yyerror(const char *s); 111 112#line 111 "quote_calc4-s.tab.c" 113 114#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED) 115/* Default: YYSTYPE is the semantic value type. */ 116typedef int YYSTYPE; 117# define YYSTYPE_IS_DECLARED 1 118#endif 119 120/* compatibility with bison */ 121#ifdef YYPARSE_PARAM 122/* compatibility with FreeBSD */ 123# ifdef YYPARSE_PARAM_TYPE 124# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 125# else 126# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 127# endif 128#else 129# define YYPARSE_DECL() yyparse(void) 130#endif 131 132/* Parameters sent to lex. */ 133#ifdef YYLEX_PARAM 134# define YYLEX_DECL() yylex(void *YYLEX_PARAM) 135# define YYLEX yylex(YYLEX_PARAM) 136#else 137# define YYLEX_DECL() yylex(void) 138# define YYLEX yylex() 139#endif 140 141/* Parameters sent to yyerror. */ 142#ifndef YYERROR_DECL 143#define YYERROR_DECL() yyerror(const char *s) 144#endif 145#ifndef YYERROR_CALL 146#define YYERROR_CALL(msg) yyerror(msg) 147#endif 148 149extern int YYPARSE_DECL(); 150 151#define OP_ADD 257 152#define OP_SUB 259 153#define OP_MUL 261 154#define OP_DIV 263 155#define OP_MOD 265 156#define OP_AND 267 157#define DIGIT 269 158#define LETTER 270 159#define UMINUS 271 160#define YYERRCODE 256 161typedef short YYINT; 162static const YYINT quote_calc4_lhs[] = { -1, 163 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 164 2, 2, 2, 2, 2, 2, 3, 3, 165}; 166static const YYINT quote_calc4_len[] = { 2, 167 0, 3, 3, 1, 3, 3, 3, 3, 3, 3, 168 3, 3, 3, 2, 1, 1, 1, 2, 169}; 170static const YYINT quote_calc4_defred[] = { 1, 171 0, 0, 0, 17, 0, 0, 0, 0, 0, 3, 172 15, 0, 0, 0, 2, 0, 0, 0, 0, 0, 173 0, 0, 18, 0, 6, 0, 0, 0, 0, 0, 174 0, 0, 175}; 176static const YYINT quote_calc4_dgoto[] = { 1, 177 7, 8, 9, 178}; 179static const YYINT quote_calc4_sindex[] = { 0, 180 -38, 4, -36, 0, -51, -36, 6, -121, -249, 0, 181 0, -243, -36, -23, 0, -36, -36, -36, -36, -36, 182 -36, -36, 0, -121, 0, -121, -121, -121, -121, -121, 183 -121, -243, 184}; 185static const YYINT quote_calc4_rindex[] = { 0, 186 0, 0, 0, 0, -9, 0, 0, 12, -10, 0, 187 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 188 0, 0, 0, 14, 0, -3, -2, -1, 1, 2, 189 3, -4, 190}; 191static const YYINT quote_calc4_gindex[] = { 0, 192 0, 42, 0, 193}; 194#define YYTABLESIZE 259 195static const YYINT quote_calc4_table[] = { 16, 196 15, 6, 22, 6, 14, 13, 7, 8, 9, 13, 197 10, 11, 12, 10, 16, 15, 17, 25, 18, 23, 198 19, 4, 20, 5, 21, 0, 0, 0, 0, 0, 199 16, 0, 0, 0, 0, 14, 13, 7, 8, 9, 200 0, 10, 11, 12, 12, 0, 0, 14, 0, 0, 201 0, 0, 0, 0, 24, 0, 0, 26, 27, 28, 202 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207 0, 0, 0, 16, 15, 0, 0, 0, 14, 13, 208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 210 18, 0, 19, 0, 20, 0, 21, 0, 0, 0, 211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 218 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 219 4, 5, 4, 11, 16, 0, 17, 0, 18, 0, 220 19, 0, 20, 0, 21, 0, 0, 16, 15, 16, 221 15, 16, 15, 16, 15, 16, 15, 16, 15, 222}; 223static const YYINT quote_calc4_check[] = { 10, 224 10, 40, 124, 40, 10, 10, 10, 10, 10, 61, 225 10, 10, 10, 10, 258, 10, 260, 41, 262, 269, 226 264, 10, 266, 10, 268, -1, -1, -1, -1, -1, 227 41, -1, -1, -1, -1, 41, 41, 41, 41, 41, 228 -1, 41, 41, 41, 3, -1, -1, 6, -1, -1, 229 -1, -1, -1, -1, 13, -1, -1, 16, 17, 18, 230 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, 231 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 233 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 234 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235 -1, -1, -1, 124, 124, -1, -1, -1, 124, 124, 236 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 237 -1, -1, -1, -1, -1, -1, 258, -1, 260, -1, 238 262, -1, 264, -1, 266, -1, 268, -1, -1, -1, 239 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 240 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 245 -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, 246 -1, 260, -1, 260, -1, -1, -1, -1, -1, -1, 247 269, 270, 269, 270, 258, -1, 260, -1, 262, -1, 248 264, -1, 266, -1, 268, -1, -1, 258, 258, 260, 249 260, 262, 262, 264, 264, 266, 266, 268, 268, 250}; 251#define YYFINAL 1 252#ifndef YYDEBUG 253#define YYDEBUG 0 254#endif 255#define YYMAXTOKEN 271 256#define YYUNDFTOKEN 277 257#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 258#if YYDEBUG 259static const char *const quote_calc4_name[] = { 260 261"end-of-file",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, 2620,0,0,0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0, 2630,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, 2640,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, 2650,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, 2660,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, 2670,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, 2680,0,0,0,0,0,"OP_ADD","\"ADD-operator\"","OP_SUB","\"SUB-operator\"","OP_MUL", 269"\"MUL-operator\"","OP_DIV","\"DIV-operator\"","OP_MOD","\"MOD-operator\"", 270"OP_AND","\"AND-operator\"","DIGIT","LETTER","UMINUS",0,0,0,0,0, 271"illegal-symbol", 272}; 273static const char *const quote_calc4_rule[] = { 274"$accept : list", 275"list :", 276"list : list stat '\\n'", 277"list : list error '\\n'", 278"stat : expr", 279"stat : LETTER '=' expr", 280"expr : '(' expr ')'", 281"expr : expr \"ADD-operator\" expr", 282"expr : expr \"SUB-operator\" expr", 283"expr : expr \"MUL-operator\" expr", 284"expr : expr \"DIV-operator\" expr", 285"expr : expr \"MOD-operator\" expr", 286"expr : expr \"AND-operator\" expr", 287"expr : expr '|' expr", 288"expr : \"SUB-operator\" expr", 289"expr : LETTER", 290"expr : number", 291"number : DIGIT", 292"number : number DIGIT", 293 294}; 295#endif 296 297#if YYDEBUG 298int yydebug; 299#endif 300 301int yyerrflag; 302int yychar; 303YYSTYPE yyval; 304YYSTYPE yylval; 305int yynerrs; 306 307/* define the initial stack-sizes */ 308#ifdef YYSTACKSIZE 309#undef YYMAXDEPTH 310#define YYMAXDEPTH YYSTACKSIZE 311#else 312#ifdef YYMAXDEPTH 313#define YYSTACKSIZE YYMAXDEPTH 314#else 315#define YYSTACKSIZE 10000 316#define YYMAXDEPTH 10000 317#endif 318#endif 319 320#define YYINITSTACKSIZE 200 321 322typedef struct { 323 unsigned stacksize; 324 YYINT *s_base; 325 YYINT *s_mark; 326 YYINT *s_last; 327 YYSTYPE *l_base; 328 YYSTYPE *l_mark; 329} YYSTACKDATA; 330/* variables for the parser stack */ 331static YYSTACKDATA yystack; 332#line 73 "quote_calc4.y" 333 /* start of programs */ 334 335int 336main (void) 337{ 338 while(!feof(stdin)) { 339 yyparse(); 340 } 341 return 0; 342} 343 344static void 345yyerror(const char *s) 346{ 347 fprintf(stderr, "%s\n", s); 348} 349 350int 351yylex(void) { 352 /* lexical analysis routine */ 353 /* returns LETTER for a lower case letter, yylval = 0 through 25 */ 354 /* return DIGIT for a digit, yylval = 0 through 9 */ 355 /* all other characters are returned immediately */ 356 357 int c; 358 359 while( (c=getchar()) == ' ' ) { /* skip blanks */ } 360 361 /* c is now nonblank */ 362 363 if( islower( c )) { 364 yylval = c - 'a'; 365 return ( LETTER ); 366 } 367 if( isdigit( c )) { 368 yylval = c - '0'; 369 return ( DIGIT ); 370 } 371 return( c ); 372} 373#line 372 "quote_calc4-s.tab.c" 374 375#if YYDEBUG 376#include <stdio.h> /* needed for printf */ 377#endif 378 379#include <stdlib.h> /* needed for malloc, etc */ 380#include <string.h> /* needed for memset */ 381 382/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 383static int yygrowstack(YYSTACKDATA *data) 384{ 385 int i; 386 unsigned newsize; 387 YYINT *newss; 388 YYSTYPE *newvs; 389 390 if ((newsize = data->stacksize) == 0) 391 newsize = YYINITSTACKSIZE; 392 else if (newsize >= YYMAXDEPTH) 393 return YYENOMEM; 394 else if ((newsize *= 2) > YYMAXDEPTH) 395 newsize = YYMAXDEPTH; 396 397 i = (int) (data->s_mark - data->s_base); 398 newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 399 if (newss == 0) 400 return YYENOMEM; 401 402 data->s_base = newss; 403 data->s_mark = newss + i; 404 405 newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 406 if (newvs == 0) 407 return YYENOMEM; 408 409 data->l_base = newvs; 410 data->l_mark = newvs + i; 411 412 data->stacksize = newsize; 413 data->s_last = data->s_base + newsize - 1; 414 return 0; 415} 416 417#if YYPURE || defined(YY_NO_LEAKS) 418static void yyfreestack(YYSTACKDATA *data) 419{ 420 free(data->s_base); 421 free(data->l_base); 422 memset(data, 0, sizeof(*data)); 423} 424#else 425#define yyfreestack(data) /* nothing */ 426#endif 427 428#define YYABORT goto yyabort 429#define YYREJECT goto yyabort 430#define YYACCEPT goto yyaccept 431#define YYERROR goto yyerrlab 432 433int 434YYPARSE_DECL() 435{ 436 int yym, yyn, yystate; 437#if YYDEBUG 438 const char *yys; 439 440 if ((yys = getenv("YYDEBUG")) != 0) 441 { 442 yyn = *yys; 443 if (yyn >= '0' && yyn <= '9') 444 yydebug = yyn - '0'; 445 } 446#endif 447 448 yym = 0; 449 yyn = 0; 450 yynerrs = 0; 451 yyerrflag = 0; 452 yychar = YYEMPTY; 453 yystate = 0; 454 455#if YYPURE 456 memset(&yystack, 0, sizeof(yystack)); 457#endif 458 459 if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 460 yystack.s_mark = yystack.s_base; 461 yystack.l_mark = yystack.l_base; 462 yystate = 0; 463 *yystack.s_mark = 0; 464 465yyloop: 466 if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 467 if (yychar < 0) 468 { 469 yychar = YYLEX; 470 if (yychar < 0) yychar = YYEOF; 471#if YYDEBUG 472 if (yydebug) 473 { 474 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 475 printf("%sdebug: state %d, reading %d (%s)\n", 476 YYPREFIX, yystate, yychar, yys); 477 } 478#endif 479 } 480 if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 481 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 482 { 483#if YYDEBUG 484 if (yydebug) 485 printf("%sdebug: state %d, shifting to state %d\n", 486 YYPREFIX, yystate, yytable[yyn]); 487#endif 488 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 489 yystate = yytable[yyn]; 490 *++yystack.s_mark = yytable[yyn]; 491 *++yystack.l_mark = yylval; 492 yychar = YYEMPTY; 493 if (yyerrflag > 0) --yyerrflag; 494 goto yyloop; 495 } 496 if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 497 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 498 { 499 yyn = yytable[yyn]; 500 goto yyreduce; 501 } 502 if (yyerrflag != 0) goto yyinrecovery; 503 504 YYERROR_CALL("syntax error"); 505 506 goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 507yyerrlab: 508 ++yynerrs; 509 510yyinrecovery: 511 if (yyerrflag < 3) 512 { 513 yyerrflag = 3; 514 for (;;) 515 { 516 if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 517 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 518 { 519#if YYDEBUG 520 if (yydebug) 521 printf("%sdebug: state %d, error recovery shifting\ 522 to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 523#endif 524 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 525 yystate = yytable[yyn]; 526 *++yystack.s_mark = yytable[yyn]; 527 *++yystack.l_mark = yylval; 528 goto yyloop; 529 } 530 else 531 { 532#if YYDEBUG 533 if (yydebug) 534 printf("%sdebug: error recovery discarding state %d\n", 535 YYPREFIX, *yystack.s_mark); 536#endif 537 if (yystack.s_mark <= yystack.s_base) goto yyabort; 538 --yystack.s_mark; 539 --yystack.l_mark; 540 } 541 } 542 } 543 else 544 { 545 if (yychar == YYEOF) goto yyabort; 546#if YYDEBUG 547 if (yydebug) 548 { 549 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 550 printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 551 YYPREFIX, yystate, yychar, yys); 552 } 553#endif 554 yychar = YYEMPTY; 555 goto yyloop; 556 } 557 558yyreduce: 559#if YYDEBUG 560 if (yydebug) 561 printf("%sdebug: state %d, reducing by rule %d (%s)\n", 562 YYPREFIX, yystate, yyn, yyrule[yyn]); 563#endif 564 yym = yylen[yyn]; 565 if (yym > 0) 566 yyval = yystack.l_mark[1-yym]; 567 else 568 memset(&yyval, 0, sizeof yyval); 569 570 switch (yyn) 571 { 572case 3: 573#line 35 "quote_calc4.y" 574 { yyerrok ; } 575break; 576case 4: 577#line 39 "quote_calc4.y" 578 { printf("%d\n",yystack.l_mark[0]);} 579break; 580case 5: 581#line 41 "quote_calc4.y" 582 { regs[yystack.l_mark[-2]] = yystack.l_mark[0]; } 583break; 584case 6: 585#line 45 "quote_calc4.y" 586 { yyval = yystack.l_mark[-1]; } 587break; 588case 7: 589#line 47 "quote_calc4.y" 590 { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; } 591break; 592case 8: 593#line 49 "quote_calc4.y" 594 { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; } 595break; 596case 9: 597#line 51 "quote_calc4.y" 598 { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; } 599break; 600case 10: 601#line 53 "quote_calc4.y" 602 { yyval = yystack.l_mark[-2] / yystack.l_mark[0]; } 603break; 604case 11: 605#line 55 "quote_calc4.y" 606 { yyval = yystack.l_mark[-2] % yystack.l_mark[0]; } 607break; 608case 12: 609#line 57 "quote_calc4.y" 610 { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; } 611break; 612case 13: 613#line 59 "quote_calc4.y" 614 { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; } 615break; 616case 14: 617#line 61 "quote_calc4.y" 618 { yyval = - yystack.l_mark[0]; } 619break; 620case 15: 621#line 63 "quote_calc4.y" 622 { yyval = regs[yystack.l_mark[0]]; } 623break; 624case 17: 625#line 68 "quote_calc4.y" 626 { yyval = yystack.l_mark[0]; base = (yystack.l_mark[0]==0) ? 8 : 10; } 627break; 628case 18: 629#line 70 "quote_calc4.y" 630 { yyval = base * yystack.l_mark[-1] + yystack.l_mark[0]; } 631break; 632#line 631 "quote_calc4-s.tab.c" 633 } 634 yystack.s_mark -= yym; 635 yystate = *yystack.s_mark; 636 yystack.l_mark -= yym; 637 yym = yylhs[yyn]; 638 if (yystate == 0 && yym == 0) 639 { 640#if YYDEBUG 641 if (yydebug) 642 printf("%sdebug: after reduction, shifting from state 0 to\ 643 state %d\n", YYPREFIX, YYFINAL); 644#endif 645 yystate = YYFINAL; 646 *++yystack.s_mark = YYFINAL; 647 *++yystack.l_mark = yyval; 648 if (yychar < 0) 649 { 650 yychar = YYLEX; 651 if (yychar < 0) yychar = YYEOF; 652#if YYDEBUG 653 if (yydebug) 654 { 655 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 656 printf("%sdebug: state %d, reading %d (%s)\n", 657 YYPREFIX, YYFINAL, yychar, yys); 658 } 659#endif 660 } 661 if (yychar == YYEOF) goto yyaccept; 662 goto yyloop; 663 } 664 if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 665 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 666 yystate = yytable[yyn]; 667 else 668 yystate = yydgoto[yym]; 669#if YYDEBUG 670 if (yydebug) 671 printf("%sdebug: after reduction, shifting from state %d \ 672to state %d\n", YYPREFIX, *yystack.s_mark, yystate); 673#endif 674 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 675 *++yystack.s_mark = (YYINT) yystate; 676 *++yystack.l_mark = yyval; 677 goto yyloop; 678 679yyoverflow: 680 YYERROR_CALL("yacc stack overflow"); 681 682yyabort: 683 yyfreestack(&yystack); 684 return (1); 685 686yyaccept: 687 yyfreestack(&yystack); 688 return (0); 689} 690