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