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