1 /* $NetBSD: expr.oxout.tab.c,v 1.5 2021/02/20 22:57:57 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 #undef YYBTYACC 19 #define YYBTYACC 0 20 #define YYDEBUGSTR YYPREFIX "debug" 21 22 #ifndef yyparse 23 #define yyparse expr.oxout_parse 24 #endif /* yyparse */ 25 26 #ifndef yylex 27 #define yylex expr.oxout_lex 28 #endif /* yylex */ 29 30 #ifndef yyerror 31 #define yyerror expr.oxout_error 32 #endif /* yyerror */ 33 34 #ifndef yychar 35 #define yychar expr.oxout_char 36 #endif /* yychar */ 37 38 #ifndef yyval 39 #define yyval expr.oxout_val 40 #endif /* yyval */ 41 42 #ifndef yylval 43 #define yylval expr.oxout_lval 44 #endif /* yylval */ 45 46 #ifndef yydebug 47 #define yydebug expr.oxout_debug 48 #endif /* yydebug */ 49 50 #ifndef yynerrs 51 #define yynerrs expr.oxout_nerrs 52 #endif /* yynerrs */ 53 54 #ifndef yyerrflag 55 #define yyerrflag expr.oxout_errflag 56 #endif /* yyerrflag */ 57 58 #ifndef yylhs 59 #define yylhs expr.oxout_lhs 60 #endif /* yylhs */ 61 62 #ifndef yylen 63 #define yylen expr.oxout_len 64 #endif /* yylen */ 65 66 #ifndef yydefred 67 #define yydefred expr.oxout_defred 68 #endif /* yydefred */ 69 70 #ifndef yystos 71 #define yystos expr.oxout_stos 72 #endif /* yystos */ 73 74 #ifndef yydgoto 75 #define yydgoto expr.oxout_dgoto 76 #endif /* yydgoto */ 77 78 #ifndef yysindex 79 #define yysindex expr.oxout_sindex 80 #endif /* yysindex */ 81 82 #ifndef yyrindex 83 #define yyrindex expr.oxout_rindex 84 #endif /* yyrindex */ 85 86 #ifndef yygindex 87 #define yygindex expr.oxout_gindex 88 #endif /* yygindex */ 89 90 #ifndef yytable 91 #define yytable expr.oxout_table 92 #endif /* yytable */ 93 94 #ifndef yycheck 95 #define yycheck expr.oxout_check 96 #endif /* yycheck */ 97 98 #ifndef yyname 99 #define yyname expr.oxout_name 100 #endif /* yyname */ 101 102 #ifndef yyrule 103 #define yyrule expr.oxout_rule 104 #endif /* yyrule */ 105 106 #if YYBTYACC 107 108 #ifndef yycindex 109 #define yycindex expr.oxout_cindex 110 #endif /* yycindex */ 111 112 #ifndef yyctable 113 #define yyctable expr.oxout_ctable 114 #endif /* yyctable */ 115 116 #endif /* YYBTYACC */ 117 118 #define YYPREFIX "expr.oxout_" 119 120 #define YYPURE 0 121 122 #line 5 "expr.oxout.y" 123 #include <stdlib.h> 124 #include <string.h> 125 #line 8 "expr.Y" 126 127 #include "expr.oxout.h" 128 #include <stdio.h> 129 130 extern int yylex(void); 131 extern void yyerror(const char *); 132 #line 27 "expr.oxout.y" 133 #include <limits.h> 134 #define yyyR USHRT_MAX 135 #ifdef YYSTYPE 136 #undef YYSTYPE_IS_DECLARED 137 #define YYSTYPE_IS_DECLARED 1 138 #endif 139 #ifndef YYSTYPE_IS_DECLARED 140 #define YYSTYPE_IS_DECLARED 1 141 #line 31 "expr.oxout.y" 142 typedef union { 143 struct yyyOxAttrbs { 144 struct yyyStackItem *yyyOxStackItem; 145 } yyyOxAttrbs; 146 } YYSTYPE; 147 #endif /* !YYSTYPE_IS_DECLARED */ 148 #line 38 "expr.oxout.y" 149 #include <stdio.h> 150 #include <stdarg.h> 151 152 static int yyyYok = 1; 153 154 extern yyyFT yyyRCIL[]; 155 156 void yyyExecuteRRsection(yyyGNT *rootNode); 157 void yyyYoxInit(void); 158 void yyyDecorate(void); 159 struct yyyOxAttrbs; /* hack required to compensate for 'msta' behavior */ 160 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...); 161 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...); 162 void yyyCheckUnsolvedInstTrav(yyyGNT *rootNode,long *nNZrc,long *cycleSum); 163 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode); 164 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode); 165 void yyyabort(void); 166 167 #line 166 "expr.oxout.tab.c" 168 169 /* compatibility with bison */ 170 #ifdef YYPARSE_PARAM 171 /* compatibility with FreeBSD */ 172 # ifdef YYPARSE_PARAM_TYPE 173 # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 174 # else 175 # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 176 # endif 177 #else 178 # define YYPARSE_DECL() yyparse(void) 179 #endif 180 181 /* Parameters sent to lex. */ 182 #ifdef YYLEX_PARAM 183 # define YYLEX_DECL() yylex(void *YYLEX_PARAM) 184 # define YYLEX yylex(YYLEX_PARAM) 185 #else 186 # define YYLEX_DECL() yylex(void) 187 # define YYLEX yylex() 188 #endif 189 190 /* Parameters sent to yyerror. */ 191 #ifndef YYERROR_DECL 192 #define YYERROR_DECL() yyerror(const char *s) 193 #endif 194 #ifndef YYERROR_CALL 195 #define YYERROR_CALL(msg) yyerror(msg) 196 #endif 197 198 extern int YYPARSE_DECL(); 199 200 #define ID 257 201 #define CONST 258 202 #define YYERRCODE 256 203 typedef short YYINT; 204 static const YYINT expr.oxout_lhs[] = { -1, 205 2, 0, 1, 3, 3, 3, 3, 3, 3, 3, 206 }; 207 static const YYINT expr.oxout_len[] = { 2, 208 0, 2, 1, 3, 3, 3, 3, 3, 1, 1, 209 }; 210 static const YYINT expr.oxout_defred[] = { 1, 211 0, 0, 9, 10, 0, 2, 0, 0, 0, 0, 212 0, 0, 8, 0, 0, 4, 0, 213 }; 214 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING) 215 static const YYINT expr.oxout_stos[] = { 0, 216 260, 262, 257, 258, 40, 261, 263, 263, 43, 45, 217 42, 47, 41, 263, 263, 263, 263, 218 }; 219 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */ 220 static const YYINT expr.oxout_dgoto[] = { 1, 221 6, 2, 7, 222 }; 223 static const YYINT expr.oxout_sindex[] = { 0, 224 0, -40, 0, 0, -40, 0, -18, -24, -40, -40, 225 -40, -40, 0, -37, -37, 0, -39, 226 }; 227 static const YYINT expr.oxout_rindex[] = { 0, 228 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 229 0, 0, 0, 2, 8, 0, 1, 230 }; 231 #if YYBTYACC 232 static const YYINT expr.oxout_cindex[] = { 0, 233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234 0, 0, 0, 0, 0, 0, 0, 235 }; 236 #endif 237 static const YYINT expr.oxout_gindex[] = { 0, 238 0, 0, 4, 239 }; 240 #define YYTABLESIZE 218 241 static const YYINT expr.oxout_table[] = { 5, 242 6, 5, 11, 0, 11, 3, 0, 7, 8, 12, 243 0, 0, 14, 15, 16, 17, 13, 11, 9, 0, 244 10, 0, 12, 11, 9, 0, 10, 0, 12, 0, 245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246 0, 6, 5, 6, 5, 6, 5, 6, 7, 0, 247 7, 0, 7, 0, 0, 0, 0, 0, 0, 0, 248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 263 0, 0, 0, 0, 0, 0, 3, 4, 264 }; 265 static const YYINT expr.oxout_check[] = { 40, 266 0, 0, 42, -1, 42, 0, -1, 0, 5, 47, 267 -1, -1, 9, 10, 11, 12, 41, 42, 43, -1, 268 45, -1, 47, 42, 43, -1, 45, -1, 47, -1, 269 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270 -1, 41, 41, 43, 43, 45, 45, 47, 41, -1, 271 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, 272 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 273 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 274 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 278 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 283 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287 -1, -1, -1, -1, -1, -1, 257, 258, 288 }; 289 #if YYBTYACC 290 static const YYINT expr.oxout_ctable[] = { -1, 291 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 292 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 295 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 300 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 302 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 303 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 307 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 311 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312 -1, -1, -1, -1, -1, -1, -1, 313 }; 314 #endif 315 #define YYFINAL 1 316 #ifndef YYDEBUG 317 #define YYDEBUG 0 318 #endif 319 #define YYMAXTOKEN 258 320 #define YYUNDFTOKEN 264 321 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) 322 #if YYDEBUG 323 static const char *const expr.oxout_name[] = { 324 325 "$end",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, 326 0,0,0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 327 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, 328 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, 329 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, 330 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, 331 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,"error","ID", 332 "CONST","$accept","yyyAugNonterm","s","$$1","expr","illegal-symbol", 333 }; 334 static const char *const expr.oxout_rule[] = { 335 "$accept : yyyAugNonterm", 336 "$$1 :", 337 "yyyAugNonterm : $$1 s", 338 "s : expr", 339 "expr : expr '*' expr", 340 "expr : expr '+' expr", 341 "expr : expr '/' expr", 342 "expr : expr '-' expr", 343 "expr : '(' expr ')'", 344 "expr : ID", 345 "expr : CONST", 346 347 }; 348 #endif 349 350 #if YYDEBUG 351 int yydebug; 352 #endif 353 354 int yyerrflag; 355 int yychar; 356 YYSTYPE yyval; 357 YYSTYPE yylval; 358 int yynerrs; 359 360 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 361 YYLTYPE yyloc; /* position returned by actions */ 362 YYLTYPE yylloc; /* position from the lexer */ 363 #endif 364 365 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 366 #ifndef YYLLOC_DEFAULT 367 #define YYLLOC_DEFAULT(loc, rhs, n) \ 368 do \ 369 { \ 370 if (n == 0) \ 371 { \ 372 (loc).first_line = YYRHSLOC(rhs, 0).last_line; \ 373 (loc).first_column = YYRHSLOC(rhs, 0).last_column; \ 374 (loc).last_line = YYRHSLOC(rhs, 0).last_line; \ 375 (loc).last_column = YYRHSLOC(rhs, 0).last_column; \ 376 } \ 377 else \ 378 { \ 379 (loc).first_line = YYRHSLOC(rhs, 1).first_line; \ 380 (loc).first_column = YYRHSLOC(rhs, 1).first_column; \ 381 (loc).last_line = YYRHSLOC(rhs, n).last_line; \ 382 (loc).last_column = YYRHSLOC(rhs, n).last_column; \ 383 } \ 384 } while (0) 385 #endif /* YYLLOC_DEFAULT */ 386 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 387 #if YYBTYACC 388 389 #ifndef YYLVQUEUEGROWTH 390 #define YYLVQUEUEGROWTH 32 391 #endif 392 #endif /* YYBTYACC */ 393 394 /* define the initial stack-sizes */ 395 #ifdef YYSTACKSIZE 396 #undef YYMAXDEPTH 397 #define YYMAXDEPTH YYSTACKSIZE 398 #else 399 #ifdef YYMAXDEPTH 400 #define YYSTACKSIZE YYMAXDEPTH 401 #else 402 #define YYSTACKSIZE 10000 403 #define YYMAXDEPTH 10000 404 #endif 405 #endif 406 407 #ifndef YYINITSTACKSIZE 408 #define YYINITSTACKSIZE 200 409 #endif 410 411 typedef struct { 412 unsigned stacksize; 413 YYINT *s_base; 414 YYINT *s_mark; 415 YYINT *s_last; 416 YYSTYPE *l_base; 417 YYSTYPE *l_mark; 418 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 419 YYLTYPE *p_base; 420 YYLTYPE *p_mark; 421 #endif 422 } YYSTACKDATA; 423 #if YYBTYACC 424 425 struct YYParseState_s 426 { 427 struct YYParseState_s *save; /* Previously saved parser state */ 428 YYSTACKDATA yystack; /* saved parser stack */ 429 int state; /* saved parser state */ 430 int errflag; /* saved error recovery status */ 431 int lexeme; /* saved index of the conflict lexeme in the lexical queue */ 432 YYINT ctry; /* saved index in yyctable[] for this conflict */ 433 }; 434 typedef struct YYParseState_s YYParseState; 435 #endif /* YYBTYACC */ 436 /* variables for the parser stack */ 437 static YYSTACKDATA yystack; 438 #if YYBTYACC 439 440 /* Current parser state */ 441 static YYParseState *yyps = 0; 442 443 /* yypath != NULL: do the full parse, starting at *yypath parser state. */ 444 static YYParseState *yypath = 0; 445 446 /* Base of the lexical value queue */ 447 static YYSTYPE *yylvals = 0; 448 449 /* Current position at lexical value queue */ 450 static YYSTYPE *yylvp = 0; 451 452 /* End position of lexical value queue */ 453 static YYSTYPE *yylve = 0; 454 455 /* The last allocated position at the lexical value queue */ 456 static YYSTYPE *yylvlim = 0; 457 458 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 459 /* Base of the lexical position queue */ 460 static YYLTYPE *yylpsns = 0; 461 462 /* Current position at lexical position queue */ 463 static YYLTYPE *yylpp = 0; 464 465 /* End position of lexical position queue */ 466 static YYLTYPE *yylpe = 0; 467 468 /* The last allocated position at the lexical position queue */ 469 static YYLTYPE *yylplim = 0; 470 #endif 471 472 /* Current position at lexical token queue */ 473 static YYINT *yylexp = 0; 474 475 static YYINT *yylexemes = 0; 476 #endif /* YYBTYACC */ 477 #line 53 "expr.Y" 478 479 480 int yyparse(void); 481 482 int main() 483 {yyparse(); 484 } 485 486 487 488 #line 138 "expr.oxout.y" 489 long yyySSALspaceSize = 20000; 490 long yyyRSmaxSize = 1000; 491 long yyyTravStackMaxSize = 2000; 492 493 struct yyySolvedSAlistCell {yyyWAT attrbNum; 494 long next; 495 }; 496 497 #define yyyLambdaSSAL 0 498 long yyySSALCfreeList = yyyLambdaSSAL; 499 long yyyNewSSALC = 1; 500 501 struct yyySolvedSAlistCell *yyySSALspace; 502 503 long yyyNbytesStackStg; 504 505 506 507 yyyFT yyyRCIL[1]; 508 509 short yyyIIIEL[] = {0, 510 0,2,6,10,14,18,22,24, 511 }; 512 513 long yyyIIEL[] = { 514 0,0,0,0,0,0,0,0,0,0,0,0, 515 0,0,0,0,0,0,0,0,0,0,0,0, 516 1,1, 517 }; 518 519 long yyyIEL[] = { 520 0,0,0, 521 }; 522 523 yyyFT yyyEntL[1]; 524 525 void yyyfatal(char *msg) 526 {fputs(msg,stderr);exit(-1);} 527 528 529 530 #define yyySSALof 'S' 531 #define yyyRSof 'q' 532 #define yyyTSof 't' 533 534 535 536 void yyyHandleOverflow(char which) 537 {char *msg1,*msg2; 538 long oldSize,newSize; 539 switch(which) 540 { 541 case yyySSALof : 542 msg1 = "SSAL overflow: "; 543 oldSize = yyySSALspaceSize; 544 break; 545 case yyyRSof : 546 msg1 = "ready set overflow: "; 547 oldSize = yyyRSmaxSize; 548 break; 549 case yyyTSof : 550 msg1 = "traversal stack overflow: "; 551 oldSize = yyyTravStackMaxSize; 552 break; 553 default :; 554 } 555 newSize = (3*oldSize)/2; 556 if (newSize < 100) newSize = 100; 557 fputs(msg1,stderr); 558 fprintf(stderr,"size was %ld.\n",oldSize); 559 msg2 = " Have to modify evaluator: -Y%c%ld.\n"; 560 fprintf(stderr,msg2,which,newSize); 561 exit(-1); 562 } 563 564 565 566 void yyySignalEnts(yyyGNT *node,long startP,long stopP) 567 {yyyGNT *dumNode; 568 569 while (startP < stopP) 570 { 571 if (!yyyEntL[startP]) dumNode = node; 572 else dumNode = (node->cL)[yyyEntL[startP]-1]; 573 if (!(--((dumNode->refCountList)[yyyEntL[startP+1]] 574 ) 575 ) 576 ) 577 { 578 if (++yyyRSTop == yyyAfterRS) 579 {yyyHandleOverflow(yyyRSof); 580 break; 581 } 582 yyyRSTop->node = dumNode; 583 yyyRSTop->whichSym = yyyEntL[startP]; 584 yyyRSTop->wa = yyyEntL[startP+1]; 585 } 586 startP += 2; 587 } 588 } 589 590 591 592 593 594 595 void yyySolveAndSignal() { 596 long yyyiDum,*yyypL; 597 int yyyws,yyywa; 598 yyyGNT *yyyRSTopN,*yyyRefN; 599 yyyParent yyyRSTopNp; 600 601 602 yyyRSTopNp = (yyyRSTopN = yyyRSTop->node)->parent; 603 yyyRefN= (yyyws = (yyyRSTop->whichSym))?yyyRSTopNp.noderef:yyyRSTopN; 604 yyywa = yyyRSTop->wa; 605 yyyRSTop--; 606 switch(yyyRefN->prodNum) { 607 case 1: /***yacc rule 1***/ 608 switch (yyyws) { 609 } 610 break; 611 case 2: /***yacc rule 2***/ 612 switch (yyyws) { 613 } 614 break; 615 case 3: /***yacc rule 3***/ 616 switch (yyyws) { 617 } 618 break; 619 case 4: /***yacc rule 4***/ 620 switch (yyyws) { 621 } 622 break; 623 case 5: /***yacc rule 5***/ 624 switch (yyyws) { 625 } 626 break; 627 case 6: /***yacc rule 6***/ 628 switch (yyyws) { 629 } 630 break; 631 case 7: /***yacc rule 7***/ 632 switch (yyyws) { 633 case 1: /**/ 634 switch (yyywa) { 635 } 636 break; 637 } 638 break; 639 case 8: /***yacc rule 8***/ 640 switch (yyyws) { 641 case 1: /**/ 642 switch (yyywa) { 643 } 644 break; 645 } 646 break; 647 } /* switch */ 648 649 if (yyyws) /* the just-solved instance was inherited. */ 650 {if (yyyRSTopN->prodNum) 651 {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopN->prodNum]] + yyywa; 652 yyySignalEnts(yyyRSTopN,yyyIEL[yyyiDum], 653 yyyIEL[yyyiDum+1] 654 ); 655 } 656 } 657 else /* the just-solved instance was synthesized. */ 658 {if (!(yyyRSTopN->parentIsStack)) /* node has a parent. */ 659 {yyyiDum = yyyIIEL[yyyIIIEL[yyyRSTopNp.noderef->prodNum] + 660 yyyRSTopN->whichSym 661 ] + 662 yyywa; 663 yyySignalEnts(yyyRSTopNp.noderef, 664 yyyIEL[yyyiDum], 665 yyyIEL[yyyiDum+1] 666 ); 667 } 668 else /* node is still on the stack--it has no parent yet. */ 669 {yyypL = &(yyyRSTopNp.stackref->solvedSAlist); 670 if (yyySSALCfreeList == yyyLambdaSSAL) 671 {yyySSALspace[yyyNewSSALC].next = *yyypL; 672 if ((*yyypL = yyyNewSSALC++) == yyySSALspaceSize) 673 yyyHandleOverflow(yyySSALof); 674 } 675 else 676 {yyyiDum = yyySSALCfreeList; 677 yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next; 678 yyySSALspace[yyyiDum].next = *yyypL; 679 *yyypL = yyyiDum; 680 } 681 yyySSALspace[*yyypL].attrbNum = yyywa; 682 } 683 } 684 685 } /* yyySolveAndSignal */ 686 687 688 689 690 691 692 #define condStg unsigned int conds; 693 #define yyyClearConds {yyyTST->conds = 0;} 694 #define yyySetCond(n) {yyyTST->conds += (1<<(n));} 695 #define yyyCond(n) ((yyyTST->conds & (1<<(n)))?1:0) 696 697 698 699 struct yyyTravStackItem {yyyGNT *node; 700 char isReady; 701 condStg 702 }; 703 704 705 706 void yyyDoTraversals(yyyGNT *rootNode) 707 {struct yyyTravStackItem *yyyTravStack,*yyyTST,*yyyAfterTravStack; 708 yyyGNT *yyyTSTn,**yyyCLptr2; 709 int yyyi,yyyRL,yyyPass; 710 int i; 711 712 if (!yyyYok) return; 713 if ((yyyTravStack = 714 ((struct yyyTravStackItem *) 715 calloc((size_t)yyyTravStackMaxSize, 716 (size_t)sizeof(struct yyyTravStackItem) 717 ) 718 ) 719 ) 720 == 721 (struct yyyTravStackItem *)NULL 722 ) 723 {fputs("malloc error in traversal stack allocation\n",stderr); 724 exit(-1); 725 } 726 727 yyyAfterTravStack = yyyTravStack + yyyTravStackMaxSize; 728 yyyTravStack++; 729 730 731 for (yyyi=0; yyyi<2; yyyi++) { 732 yyyTST = yyyTravStack; 733 yyyTST->node = rootNode; 734 yyyTST->isReady = 0; 735 yyyClearConds 736 737 while(yyyTST >= yyyTravStack) 738 {yyyTSTn = yyyTST->node; 739 if (yyyTST->isReady) 740 {yyyPass = 1; 741 goto yyyTravSwitch; 742 yyyTpop: 743 yyyTST--; 744 } 745 else 746 {yyyPass = 0; 747 goto yyyTravSwitch; 748 yyyTpush: 749 yyyTST->isReady = 1; 750 if (yyyTSTn->prodNum) 751 {if (yyyRL) 752 {yyyCLptr2 = yyyTSTn->cL; 753 i = yyyTSTn->cLlen; 754 while (i--) 755 {if (++yyyTST == yyyAfterTravStack) 756 yyyHandleOverflow(yyyTSof); 757 else 758 {yyyTST->node = *yyyCLptr2; 759 yyyTST->isReady = 0; 760 yyyClearConds 761 } 762 yyyCLptr2++; 763 } 764 } /* right to left */ 765 else /* left to right */ 766 {i = yyyTSTn->cLlen; 767 yyyCLptr2 = yyyTSTn->cL + i; 768 while (i--) 769 {yyyCLptr2--; 770 if (++yyyTST == yyyAfterTravStack) 771 yyyHandleOverflow(yyyTSof); 772 else 773 {yyyTST->node = *yyyCLptr2; 774 yyyTST->isReady = 0; 775 yyyClearConds 776 } 777 } 778 } /* left to right */ 779 } 780 } /* else */ 781 continue; 782 yyyTravSwitch: 783 switch(yyyTSTn->prodNum) { 784 case 1: 785 switch(yyyi) { 786 case 0: 787 switch(yyyPass) { 788 case 0: 789 yyyRL = 0;yyySetCond(0) 790 791 if (! 792 #line 24 "expr.Y" 793 (1) 794 #line 444 "expr.oxout.y" 795 ) yyySetCond(1) 796 yyySetCond(2) 797 798 case 1: 799 800 if (yyyCond(0) != yyyPass) { 801 #line 24 "expr.Y" 802 803 #line 453 "expr.oxout.y" 804 } 805 if (yyyCond(1) != yyyPass) { 806 #line 24 "expr.Y" 807 printf("\n"); 808 809 #line 459 "expr.oxout.y" 810 } 811 if (yyyCond(2) != yyyPass) { 812 #line 25 "expr.Y" 813 printf("prefix: "); 814 815 #line 465 "expr.oxout.y" 816 } 817 break; 818 } 819 break; 820 case 1: 821 switch(yyyPass) { 822 case 0: 823 yyyRL = 0; 824 if ( 825 #line 23 "expr.Y" 826 (1) 827 #line 477 "expr.oxout.y" 828 ) yyySetCond(2) 829 830 case 1: 831 832 if (yyyCond(0) != yyyPass) { 833 #line 22 "expr.Y" 834 printf("\n"); 835 836 #line 486 "expr.oxout.y" 837 } 838 if (yyyCond(1) != yyyPass) { 839 #line 23 "expr.Y" 840 841 #line 491 "expr.oxout.y" 842 } 843 if (yyyCond(2) != yyyPass) { 844 #line 23 "expr.Y" 845 printf("postfix: ")/* missing ; */ 846 847 #line 497 "expr.oxout.y" 848 } 849 break; 850 } 851 break; 852 } 853 854 break; 855 case 2: 856 switch(yyyi) { 857 case 0: 858 switch(yyyPass) { 859 case 0: 860 yyyRL = 0;yyySetCond(0) 861 862 case 1: 863 864 if (yyyCond(0) != yyyPass) { 865 #line 29 "expr.Y" 866 printf(" * "); 867 868 #line 518 "expr.oxout.y" 869 } 870 break; 871 } 872 break; 873 case 1: 874 switch(yyyPass) { 875 case 0: 876 yyyRL = 0; 877 case 1: 878 879 if (yyyCond(0) != yyyPass) { 880 #line 28 "expr.Y" 881 printf(" * "); 882 883 #line 533 "expr.oxout.y" 884 } 885 break; 886 } 887 break; 888 } 889 890 break; 891 case 3: 892 switch(yyyi) { 893 case 0: 894 switch(yyyPass) { 895 case 0: 896 yyyRL = 0;yyySetCond(0) 897 898 case 1: 899 900 if (yyyCond(0) != yyyPass) { 901 #line 32 "expr.Y" 902 printf(" + "); 903 904 #line 554 "expr.oxout.y" 905 } 906 break; 907 } 908 break; 909 case 1: 910 switch(yyyPass) { 911 case 0: 912 yyyRL = 0; 913 case 1: 914 915 if (yyyCond(0) != yyyPass) { 916 #line 33 "expr.Y" 917 printf(" + "); 918 919 #line 569 "expr.oxout.y" 920 } 921 break; 922 } 923 break; 924 } 925 926 break; 927 case 4: 928 switch(yyyi) { 929 case 0: 930 switch(yyyPass) { 931 case 0: 932 yyyRL = 0;yyySetCond(0) 933 934 case 1: 935 936 if (yyyCond(0) != yyyPass) { 937 #line 37 "expr.Y" 938 printf(" / "); 939 940 #line 590 "expr.oxout.y" 941 } 942 break; 943 } 944 break; 945 case 1: 946 switch(yyyPass) { 947 case 0: 948 yyyRL = 0; 949 case 1: 950 951 if (yyyCond(0) != yyyPass) { 952 #line 36 "expr.Y" 953 printf(" / "); 954 955 #line 605 "expr.oxout.y" 956 } 957 break; 958 } 959 break; 960 } 961 962 break; 963 case 5: 964 switch(yyyi) { 965 case 0: 966 switch(yyyPass) { 967 case 0: 968 yyyRL = 0;yyySetCond(0) 969 970 case 1: 971 972 if (yyyCond(0) != yyyPass) { 973 #line 41 "expr.Y" 974 printf(" - "); 975 976 #line 626 "expr.oxout.y" 977 } 978 break; 979 } 980 break; 981 case 1: 982 switch(yyyPass) { 983 case 0: 984 yyyRL = 0; 985 case 1: 986 987 if (yyyCond(0) != yyyPass) { 988 #line 40 "expr.Y" 989 printf(" - "); 990 991 #line 641 "expr.oxout.y" 992 } 993 break; 994 } 995 break; 996 } 997 998 break; 999 case 6: 1000 switch(yyyi) { 1001 case 0: 1002 switch(yyyPass) { 1003 case 0: 1004 yyyRL = 0; 1005 case 1: 1006 1007 break; 1008 } 1009 break; 1010 case 1: 1011 switch(yyyPass) { 1012 case 0: 1013 yyyRL = 0; 1014 case 1: 1015 1016 break; 1017 } 1018 break; 1019 } 1020 1021 break; 1022 case 7: 1023 switch(yyyi) { 1024 case 0: 1025 switch(yyyPass) { 1026 case 0: 1027 yyyRL = 0;yyySetCond(0) 1028 1029 case 1: 1030 1031 if (yyyCond(0) != yyyPass) { 1032 #line 46 "expr.Y" 1033 printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 1034 1035 #line 685 "expr.oxout.y" 1036 } 1037 break; 1038 } 1039 break; 1040 case 1: 1041 switch(yyyPass) { 1042 case 0: 1043 yyyRL = 0; 1044 case 1: 1045 1046 if (yyyCond(0) != yyyPass) { 1047 #line 45 "expr.Y" 1048 printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 1049 1050 #line 700 "expr.oxout.y" 1051 } 1052 break; 1053 } 1054 break; 1055 } 1056 1057 break; 1058 case 8: 1059 switch(yyyi) { 1060 case 0: 1061 switch(yyyPass) { 1062 case 0: 1063 yyyRL = 0;yyySetCond(0) 1064 1065 case 1: 1066 1067 if (yyyCond(0) != yyyPass) { 1068 #line 50 "expr.Y" 1069 printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 1070 1071 #line 721 "expr.oxout.y" 1072 } 1073 break; 1074 } 1075 break; 1076 case 1: 1077 switch(yyyPass) { 1078 case 0: 1079 yyyRL = 0; 1080 case 1: 1081 1082 if (yyyCond(0) != yyyPass) { 1083 #line 49 "expr.Y" 1084 printf(" %s ",yyyTSTn->cL[0]->yyyAttrbs.yyyAttrb1.lexeme); 1085 1086 #line 736 "expr.oxout.y" 1087 } 1088 break; 1089 } 1090 break; 1091 } 1092 1093 break; 1094 } /* switch */ 1095 if (yyyPass) goto yyyTpop; else goto yyyTpush; 1096 } /* while */ 1097 } /* for */ 1098 } /* yyyDoTraversals */ 1099 1100 void yyyExecuteRRsection(yyyGNT *rootNode) { 1101 int yyyi; 1102 long cycleSum = 0; 1103 long nNZrc = 0; 1104 1105 if (!yyyYok) return; 1106 yyyCheckUnsolvedInstTrav(rootNode,&nNZrc,&cycleSum); 1107 if (nNZrc) 1108 { 1109 fputs("\n\n\n**********\n",stderr); 1110 fputs("cycle detected in completed parse tree",stderr); 1111 fputs(" after decoration.\n",stderr); 1112 #if CYCLE_VERBOSE 1113 fprintf(stderr, 1114 "number of unsolved attribute instances == %ld.\n", 1115 nNZrc 1116 ); 1117 fprintf(stderr, 1118 "total number of remaining dependencies == %ld.\n", 1119 cycleSum 1120 ); 1121 fputs("average number of remaining dependencies\n",stderr); 1122 fprintf(stderr," per unsolved instance == %f.\n", 1123 ((float)(cycleSum)/(float)(nNZrc)) 1124 ); 1125 #endif 1126 fprintf(stderr, 1127 "searching parse tree for %ld unsolved instances:\n", 1128 nNZrc 1129 ); 1130 yyyUnsolvedInstSearchTravAux(rootNode); 1131 } 1132 yyyDoTraversals(rootNode); 1133 } /* yyyExecuteRRsection */ 1134 1135 1136 1137 yyyWAT yyyLRCIL[2] = {0,0, 1138 }; 1139 1140 1141 1142 void yyyYoxInit(void) 1143 { 1144 static int yyyInitDone = 0; 1145 if (yyyInitDone) return; 1146 1147 if ((yyyRS = (struct yyyRSitem *) 1148 calloc((size_t)(yyyRSmaxSize+1), (size_t)sizeof(struct yyyRSitem)) 1149 ) 1150 == 1151 ((struct yyyRSitem *) NULL) 1152 ) 1153 yyyfatal("malloc error in ox ready set space allocation\n"); 1154 yyyRS++; 1155 yyyAfterRS = yyyRS + yyyRSmaxSize; 1156 1157 1158 if ((yyySSALspace = (struct yyySolvedSAlistCell *) 1159 calloc((size_t)(yyySSALspaceSize+1), (size_t)sizeof(struct yyySolvedSAlistCell)) 1160 ) 1161 == 1162 ((struct yyySolvedSAlistCell *) NULL) 1163 ) 1164 yyyfatal("malloc error in stack solved list space allocation\n"); 1165 yyyInitDone = 1; 1166 1167 yyyRSTop = yyyRS - 1; 1168 } /* yyyYoxInit */ 1169 1170 1171 1172 void yyyDecorate(void) 1173 { 1174 while (yyyRSTop >= yyyRS) 1175 yyySolveAndSignal(); 1176 } 1177 1178 1179 1180 void yyyGenIntNode(long yyyProdNum, int yyyRHSlength, int yyyNattrbs, struct yyyOxAttrbs *yyval_OxAttrbs, ...) 1181 {yyyWST i; 1182 yyySIT **yyyOxStackItem = &yyval_OxAttrbs->yyyOxStackItem; 1183 yyyGNT *gnpDum; 1184 va_list ap; 1185 1186 *yyyOxStackItem = (yyySIT *) malloc((size_t)sizeof(yyySIT)); 1187 if (*yyyOxStackItem == (yyySIT *) NULL) 1188 yyyfatal("malloc error in ox yacc semantic stack space allocation\n"); 1189 (*yyyOxStackItem)->node = 1190 (yyyGNT *) malloc((size_t)sizeof(yyyGNT)); 1191 if ((*yyyOxStackItem)->node == (yyyGNT *) NULL) 1192 yyyfatal("malloc error in ox node space allocation\n"); 1193 (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL; 1194 (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem; 1195 (*yyyOxStackItem)->node->parentIsStack = 1; 1196 (*yyyOxStackItem)->node->cLlen = yyyRHSlength; 1197 (*yyyOxStackItem)->node->cL = 1198 (yyyGNT **) calloc((size_t)yyyRHSlength, (size_t)sizeof(yyyGNT *)); 1199 if ((*yyyOxStackItem)->node->cL == (yyyGNT **) NULL) 1200 yyyfatal("malloc error in ox child list space allocation\n"); 1201 (*yyyOxStackItem)->node->refCountListLen = yyyNattrbs; 1202 (*yyyOxStackItem)->node->refCountList = 1203 (yyyRCT *) calloc((size_t)yyyNattrbs, (size_t)sizeof(yyyRCT)); 1204 if ((*yyyOxStackItem)->node->refCountList == (yyyRCT *) NULL) 1205 yyyfatal("malloc error in ox reference count list space allocation\n"); 1206 (*yyyOxStackItem)->node->prodNum = yyyProdNum; 1207 va_start(ap, yyval_OxAttrbs); 1208 for (i=1;i<=yyyRHSlength;i++) 1209 {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem; 1210 gnpDum = (*yyyOxStackItem)->node->cL[i-1] = yaccStDum->node; 1211 gnpDum->whichSym = i; 1212 gnpDum->parent.noderef = (*yyyOxStackItem)->node; 1213 gnpDum->parentIsStack = 0; 1214 } 1215 va_end(ap); 1216 } 1217 1218 1219 1220 #define yyyDECORfREQ 50 1221 1222 1223 1224 void yyyAdjustINRC(long yyyProdNum, int yyyRHSlength, long startP, long stopP, struct yyyOxAttrbs *yyval_OxAttrbs, ...) 1225 {yyyWST i; 1226 yyySIT *yyyOxStackItem = yyval_OxAttrbs->yyyOxStackItem; 1227 long SSALptr,SSALptrHead,*cPtrPtr; 1228 long *pL; 1229 yyyGNT *gnpDum; 1230 long iTemp; 1231 long nextP; 1232 static unsigned short intNodeCount = yyyDECORfREQ; 1233 va_list ap; 1234 1235 nextP = startP; 1236 while (nextP < stopP) 1237 {if (yyyRCIL[nextP] == yyyR) 1238 {(yyyOxStackItem->node->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2]; 1239 } 1240 else 1241 {(((yyyOxStackItem->node->cL)[yyyRCIL[nextP]])->refCountList)[yyyRCIL[nextP+1]] = yyyRCIL[nextP+2]; 1242 } 1243 nextP += 3; 1244 } 1245 pL = yyyIIEL + yyyIIIEL[yyyProdNum]; 1246 va_start(ap, yyval_OxAttrbs); 1247 for (i=1;i<=yyyRHSlength;i++) 1248 {yyySIT *yaccStDum = va_arg(ap,struct yyyOxAttrbs *)->yyyOxStackItem; 1249 pL++; 1250 SSALptrHead = SSALptr = *(cPtrPtr = &(yaccStDum->solvedSAlist)); 1251 if (SSALptr != yyyLambdaSSAL) 1252 {*cPtrPtr = yyyLambdaSSAL; 1253 do 1254 { 1255 iTemp = (*pL+yyySSALspace[SSALptr].attrbNum); 1256 yyySignalEnts(yyyOxStackItem->node, 1257 yyyIEL[iTemp], 1258 yyyIEL[iTemp+1] 1259 ); 1260 SSALptr = *(cPtrPtr = &(yyySSALspace[SSALptr].next)); 1261 } 1262 while (SSALptr != yyyLambdaSSAL); 1263 *cPtrPtr = yyySSALCfreeList; 1264 yyySSALCfreeList = SSALptrHead; 1265 } 1266 } 1267 va_end(ap); 1268 nextP = startP + 2; 1269 while (nextP < stopP) 1270 {if (!yyyRCIL[nextP]) 1271 {if (yyyRCIL[nextP-2] == yyyR) 1272 {pL = &(yyyOxStackItem->solvedSAlist); 1273 if (yyySSALCfreeList == yyyLambdaSSAL) 1274 {yyySSALspace[yyyNewSSALC].next = *pL; 1275 if ((*pL = yyyNewSSALC++) == yyySSALspaceSize) 1276 yyyHandleOverflow(yyySSALof); 1277 } 1278 else 1279 {iTemp = yyySSALCfreeList; 1280 yyySSALCfreeList = yyySSALspace[yyySSALCfreeList].next; 1281 yyySSALspace[iTemp].next = *pL; 1282 *pL = iTemp; 1283 } 1284 yyySSALspace[*pL].attrbNum = yyyRCIL[nextP-1]; 1285 } 1286 else 1287 {if ((gnpDum = (yyyOxStackItem->node->cL)[yyyRCIL[nextP-2]])->prodNum != 0) 1288 { 1289 iTemp = yyyIIEL[yyyIIIEL[gnpDum->prodNum]] + yyyRCIL[nextP-1]; 1290 yyySignalEnts(gnpDum, 1291 yyyIEL[iTemp], 1292 yyyIEL[iTemp+1] 1293 ); 1294 } 1295 } 1296 } 1297 nextP += 3; 1298 } 1299 if (!--intNodeCount) 1300 {intNodeCount = yyyDECORfREQ; 1301 yyyDecorate(); 1302 } 1303 } 1304 1305 1306 1307 void yyyGenLeaf(int nAttrbs,int typeNum,long startP,long stopP,YYSTYPE *yylval) 1308 {yyyRCT *rcPdum; 1309 yyySIT **yyyOxStackItem = &yylval->yyyOxAttrbs.yyyOxStackItem; 1310 (*yyyOxStackItem) = (yyySIT *) malloc((size_t)sizeof(yyySIT)); 1311 if ((*yyyOxStackItem) == (yyySIT *) NULL) 1312 yyyfatal("malloc error in ox yacc semantic stack space allocation\n"); 1313 (*yyyOxStackItem)->node = 1314 (yyyGNT *) malloc((size_t)sizeof(yyyGNT)) 1315 ; 1316 if ((*yyyOxStackItem)->node == (yyyGNT *) NULL) 1317 yyyfatal("malloc error in ox node space allocation\n"); 1318 (*yyyOxStackItem)->solvedSAlist = yyyLambdaSSAL; 1319 (*yyyOxStackItem)->node->parent.stackref = *yyyOxStackItem; 1320 (*yyyOxStackItem)->node->parentIsStack = 1; 1321 (*yyyOxStackItem)->node->cLlen = 0; 1322 (*yyyOxStackItem)->node->cL = (yyyGNT **)NULL; 1323 (*yyyOxStackItem)->node->refCountListLen = nAttrbs; 1324 rcPdum = (*yyyOxStackItem)->node->refCountList = 1325 (yyyRCT *) calloc((size_t)nAttrbs, (size_t)sizeof(yyyRCT)); 1326 if (rcPdum == (yyyRCT *) NULL) 1327 yyyfatal("malloc error in ox reference count list space allocation\n"); 1328 while (startP < stopP) rcPdum[yyyLRCIL[startP++]] = 0; 1329 (*yyyOxStackItem)->node->prodNum = 0; 1330 (*yyyOxStackItem)->node->whichSym = 0; 1331 } 1332 1333 1334 1335 void yyyabort(void) 1336 {yyyYok = 0; 1337 } 1338 1339 1340 1341 1342 1343 #define yyyLastProdNum 8 1344 1345 1346 #define yyyNsorts 1 1347 1348 1349 int yyyProdsInd[] = { 1350 0, 1351 0, 2, 6, 10, 14, 18, 22, 24, 1352 26, 1353 }; 1354 1355 1356 int yyyProds[][2] = { 1357 { 116, 0},{ 462, 0},{ 462, 0},{ 462, 0},{ 412, 0}, 1358 { 462, 0},{ 462, 0},{ 462, 0},{ 420, 0},{ 462, 0}, 1359 { 462, 0},{ 462, 0},{ 452, 0},{ 462, 0},{ 462, 0}, 1360 { 462, 0},{ 436, 0},{ 462, 0},{ 462, 0},{ 396, 0}, 1361 { 462, 0},{ 404, 0},{ 462, 0},{ 619, 1},{ 462, 0}, 1362 { 567, 1}, 1363 }; 1364 1365 1366 int yyySortsInd[] = { 1367 0, 1368 0, 1369 1, 1370 }; 1371 1372 1373 int yyySorts[] = { 1374 413, 1375 }; 1376 1377 1378 1379 char *yyyStringTab[] = { 1380 0,0,0,0,0, 1381 0,0,0,0,0, 1382 0,0,0,0,0, 1383 0,0,0,0,0, 1384 0,0,0,0,0, 1385 0,0,0,0,0, 1386 0,0,0,0,0, 1387 0,0,0,0,0, 1388 0,0,0,0,0, 1389 0,0,0,0,0, 1390 0,0,0,0,0, 1391 0,0,0,0,0, 1392 0,0,0,0,0, 1393 0,0,0,0,0, 1394 0,0,0,0,0, 1395 0,0,0,0,0, 1396 0,0,0,0,0, 1397 0,0,0,0,0, 1398 0,0,0,0,0, 1399 0,0,0,0,0, 1400 0,0,0,0,0, 1401 0,0,0,0,0, 1402 0,0,0,0,0, 1403 0,"s",0,0,0, 1404 0,0,"y",0,0, 1405 0,0,0,0,0, 1406 0,0,0,0,0, 1407 0,0,0,0,0, 1408 0,0,0,0,0, 1409 0,0,0,0,0, 1410 0,0,0,0,0, 1411 0,0,0,0,0, 1412 0,0,0,0,0, 1413 0,0,0,0,0, 1414 0,0,0,0,0, 1415 0,0,0,0,0, 1416 0,0,0,0,0, 1417 0,0,0,0,0, 1418 0,0,0,0,0, 1419 0,0,0,0,0, 1420 0,0,0,0,0, 1421 0,0,0,0,0, 1422 0,0,0,0,0, 1423 0,0,0,0,0, 1424 0,0,0,0,0, 1425 0,0,0,0,0, 1426 0,0,0,0,0, 1427 0,0,0,0,0, 1428 0,0,0,0,0, 1429 0,0,0,0,0, 1430 0,0,0,0,0, 1431 0,0,0,0,0, 1432 0,0,0,0,0, 1433 0,0,0,0,0, 1434 0,0,0,0,0, 1435 0,0,0,0,0, 1436 0,0,0,0,0, 1437 0,0,0,0,0, 1438 0,0,0,0,0, 1439 0,0,0,0,0, 1440 0,0,0,0,0, 1441 0,0,0,0,0, 1442 0,0,0,0,0, 1443 0,0,0,0,0, 1444 0,0,0,0,0, 1445 0,"LRpre",0,0,0, 1446 0,0,0,0,0, 1447 0,0,0,0,0, 1448 0,0,0,0,0, 1449 0,0,0,0,0, 1450 0,0,0,0,0, 1451 0,0,0,0,0, 1452 0,0,0,0,0, 1453 0,0,0,0,0, 1454 0,0,0,0,0, 1455 0,0,0,0,0, 1456 0,0,0,0,0, 1457 0,0,0,0,0, 1458 0,0,0,0,0, 1459 0,"'('",0,0,0, 1460 0,0,0,0,"')'", 1461 0,0,0,0,0, 1462 0,0,"'*'","lexeme",0, 1463 0,0,0,0,0, 1464 "'+'",0,0,0,0, 1465 0,0,0,0,0, 1466 0,0,0,0,0, 1467 0,"'-'",0,0,0, 1468 0,0,0,0,0, 1469 0,0,0,0,0, 1470 0,0,"'/'",0,0, 1471 0,0,0,0,0, 1472 0,0,"expr",0,0, 1473 0,0,0,0,0, 1474 0,0,0,0,0, 1475 0,"printf",0,0,0, 1476 0,0,0,0,0, 1477 0,0,0,0,0, 1478 0,0,0,0,0, 1479 0,0,0,0,0, 1480 0,0,0,0,0, 1481 0,0,0,0,0, 1482 0,0,0,0,0, 1483 0,0,0,0,0, 1484 0,0,0,0,0, 1485 0,0,0,0,0, 1486 0,0,0,0,0, 1487 0,0,0,0,0, 1488 0,0,0,0,0, 1489 0,0,0,0,0, 1490 0,0,0,0,0, 1491 0,0,0,0,0, 1492 0,0,0,0,0, 1493 0,0,"CONST","LRpost",0, 1494 0,0,0,0,0, 1495 0,0,0,0,0, 1496 0,0,0,0,0, 1497 0,0,0,0,0, 1498 0,0,0,0,0, 1499 0,0,0,0,0, 1500 0,0,0,0,0, 1501 0,0,0,0,0, 1502 0,0,0,0,0, 1503 0,0,0,0,"ID", 1504 0,0,0,0,0, 1505 0,0,0,0,0, 1506 0,0,0,0,0, 1507 0,0,0,0,0, 1508 0,0,0,0,0, 1509 0,0,0,0,0, 1510 0,0,0,0,0, 1511 0,0,0,0,0, 1512 0,0,0,0,0, 1513 0,0,0,0,0, 1514 0,0,0,0,0, 1515 0,0,0,0,0, 1516 0,0,0,0,0, 1517 0,0,0,0,0, 1518 0,0,0,0,0, 1519 0,0,0,0,0, 1520 0,0,0,0,0, 1521 0,0,0,0,0, 1522 0,0,0,0,0, 1523 0,0,0,0,0, 1524 0,0,0,0,0, 1525 0,0,0,0,0, 1526 0,0,0,0,0, 1527 0,0,0,0,0, 1528 0,0,0,0,0, 1529 0,0,0,0,0, 1530 0,0,0,0,0, 1531 0,0,0,0,0, 1532 0,0,0,0,0, 1533 0,0,0,0,0, 1534 0,0,0,0,0, 1535 0,0,0,0,0, 1536 0,0,0,0,0, 1537 0,0,0,0,0, 1538 0,0,0,0,0, 1539 0,0,0,0,0, 1540 0,0,0,0,0, 1541 0,0,0,0,0, 1542 0,0,0,0,0, 1543 0,0,0,0,0, 1544 0,0,0,0,0, 1545 0,0,0,0,0, 1546 0,0,0,0,0, 1547 0,0,0,0,0, 1548 0,0,0,0,0, 1549 0,0,0,0,0, 1550 0,0,0,0,0, 1551 0,0,0,0,0, 1552 0,0,0,0,0, 1553 0,0,0,0,0, 1554 0,0,0,0,0, 1555 0,0,0,0,0, 1556 0,0,0,0,0, 1557 0,0,0,0,0, 1558 0,0,0,0,0, 1559 0,0,0,0,0, 1560 0,0,0,0,0, 1561 0,0,0,0,0, 1562 0,0,0,0,0, 1563 0,0,0,0,0, 1564 0,0,0,0,0, 1565 0,0,0,0,0, 1566 0,0,0,0,0, 1567 0,0,0,0,0, 1568 0,0,0,0,0, 1569 0,0,0,0,0, 1570 0,0,0,0,0, 1571 0,0,0,0,0, 1572 0,0,0,0,0, 1573 0,0,0,0,0, 1574 0,0,0,0,0, 1575 0,0,0,0,0, 1576 0,0,0,0,0, 1577 0,0,0,0,0, 1578 0,0,0,0,0, 1579 0,0,0,0,0, 1580 0,0,0,0,0, 1581 0,0,0,0,0, 1582 0,0,0,0,0, 1583 0,0,0,0,0, 1584 0,0,0,0,0, 1585 0,0,0,0,0, 1586 0,0,0,0,0, 1587 0,0,0,0,0, 1588 0,0,0,0,0, 1589 0,0,0,0,0, 1590 0,0,0,0,0, 1591 0,0,0,0,0, 1592 0,0,0,0,0, 1593 0,0,0,0,0, 1594 0,0,0,0,0, 1595 0,0,0,0,0, 1596 0,0,0,0,0, 1597 0,0,0,0,0, 1598 0,0,0,0,0, 1599 0,0,0,0,0, 1600 0,0,0,0,0, 1601 0,0,0,0,0, 1602 0,0,0,0,0, 1603 0,0,0,0,0, 1604 0,0,0,0,0, 1605 0,0,0,0,0, 1606 0,0,0,0,0, 1607 0,0,0,0,0, 1608 0,0,0,0,0, 1609 0,0,0,0,0, 1610 0,0,0,0,0, 1611 0,0,0,0,0, 1612 0,0,0,0,0, 1613 0,0,0,0,0, 1614 0,0,0,0,0, 1615 0,0,0,0,0, 1616 0,0,0,0,0, 1617 0,0,0,0,0, 1618 0,0,0,0,0, 1619 0,0,0,0,0, 1620 0,0,0,0,0, 1621 0,0,0,0,0, 1622 0,0,0,0,0, 1623 0,0,0,0,0, 1624 0,0,0,0,0, 1625 0,0,0,0,0, 1626 0, 1627 }; 1628 1629 1630 1631 #define yyySizeofProd(num) (yyyProdsInd[(num)+1] - yyyProdsInd[(num)]) 1632 1633 #define yyyGSoccurStr(prodNum,symPos) \ 1634 (yyyStringTab[yyyProds[yyyProdsInd[(prodNum)] + (symPos)][0]]) 1635 1636 #define yyySizeofSort(num) (yyySortsInd[(num)+1] - yyySortsInd[(num)]) 1637 1638 #define yyySortOf(prodNum,symPos) \ 1639 (yyyProds[yyyProdsInd[(prodNum)] + (symPos)][1]) 1640 1641 #define yyyAttrbStr(prodNum,symPos,attrbNum) \ 1642 (yyyStringTab[yyySorts[yyySortsInd[yyySortOf(prodNum,symPos)] + \ 1643 (attrbNum) \ 1644 ] \ 1645 ] \ 1646 ) 1647 1648 1649 1650 void yyyShowProd(int i) 1651 {int j,nSyms; 1652 1653 nSyms = yyySizeofProd(i); 1654 for (j=0; j<nSyms; j++) 1655 { 1656 fprintf(stderr,"%s",yyyGSoccurStr(i,j)); 1657 if (j == 0) fputs(" : ",stderr); else putc(' ',stderr); 1658 } 1659 fputs(";\n",stderr); 1660 } 1661 1662 1663 1664 void yyyShowProds() 1665 {int i; for (i=1; i<=yyyLastProdNum; i++) yyyShowProd(i);} 1666 1667 1668 1669 void yyyShowSymsAndSorts() 1670 {int i; 1671 1672 for (i=1; i<=yyyLastProdNum; i++) 1673 {int j, nSyms; 1674 1675 fprintf(stderr, 1676 "\n\n\n---------------------------------- %3.1d\n",i); 1677 /* yyyShowProd(i); */ 1678 nSyms = yyySizeofProd(i); 1679 for (j=0; j<nSyms; j++) 1680 {int k, sortSize; 1681 1682 fprintf(stderr,"%s\n",yyyGSoccurStr(i,j)); 1683 sortSize = yyySizeofSort(yyySortOf(i,j)); 1684 for (k=0; k<sortSize; k++) 1685 fprintf(stderr," %s\n",yyyAttrbStr(i,j,k)); 1686 if (j == 0) fputs("->\n",stderr); 1687 else 1688 putc('\n',stderr); 1689 } 1690 } 1691 } 1692 1693 1694 1695 void yyyCheckNodeInstancesSolved(yyyGNT *np) 1696 {int mysort,sortSize,i,prodNum,symPos,inTerminalNode; 1697 int nUnsolvedInsts = 0; 1698 1699 if (np->prodNum != 0) 1700 {inTerminalNode = 0; 1701 prodNum = np->prodNum; 1702 symPos = 0; 1703 } 1704 else 1705 {inTerminalNode = 1; 1706 prodNum = np->parent.noderef->prodNum; 1707 symPos = np->whichSym; 1708 } 1709 mysort = yyySortOf(prodNum,symPos); 1710 sortSize = yyySizeofSort(mysort); 1711 for (i=0; i<sortSize; i++) 1712 if ((np->refCountList)[i] != 0) nUnsolvedInsts += 1; 1713 if (nUnsolvedInsts) 1714 {fprintf(stderr, 1715 "\nFound node that has %d unsolved attribute instance(s).\n", 1716 nUnsolvedInsts 1717 ); 1718 fprintf(stderr,"Node is labeled \"%s\".\n", 1719 yyyGSoccurStr(prodNum,symPos)); 1720 if (inTerminalNode) 1721 {fputs("Node is terminal. Its parent production is:\n ",stderr); 1722 yyyShowProd(prodNum); 1723 } 1724 else 1725 {fputs("Node is nonterminal. ",stderr); 1726 if (!(np->parentIsStack)) 1727 {fprintf(stderr, 1728 "Node is %dth child in its parent production:\n ", 1729 np->whichSym 1730 ); 1731 yyyShowProd(np->parent.noderef->prodNum); 1732 } 1733 fputs("Node is on left hand side of this production:\n ",stderr); 1734 yyyShowProd(np->prodNum); 1735 } 1736 fputs("The following instances are unsolved:\n",stderr); 1737 for (i=0; i<sortSize; i++) 1738 if ((np->refCountList)[i] != 0) 1739 fprintf(stderr," %-16s still has %1d dependencies.\n", 1740 yyyAttrbStr(prodNum,symPos,i),(np->refCountList)[i]); 1741 } 1742 } 1743 1744 1745 1746 void yyyCheckUnsolvedInstTrav(yyyGNT *pNode,long *nNZrc,long *cycleSum) 1747 {yyyGNT **yyyCLpdum; 1748 yyyRCT *rcp; 1749 int i; 1750 1751 /* visit the refCountList of each node in the tree, and sum the non-zero refCounts */ 1752 rcp = pNode->refCountList; 1753 i = pNode->refCountListLen; 1754 while (i--) 1755 if (*rcp++) {*cycleSum += *(rcp - 1); (*nNZrc)++;} 1756 yyyCLpdum = pNode->cL; 1757 i = pNode->cLlen; 1758 while (i--) 1759 { 1760 yyyCheckUnsolvedInstTrav(*yyyCLpdum,nNZrc,cycleSum); 1761 yyyCLpdum++; 1762 } 1763 } 1764 1765 1766 1767 void yyyUnsolvedInstSearchTravAux(yyyGNT *pNode) 1768 {yyyGNT **yyyCLpdum; 1769 int i; 1770 1771 yyyCheckNodeInstancesSolved(pNode); 1772 yyyCLpdum = pNode->cL; 1773 i = pNode->cLlen; 1774 while (i--) 1775 { 1776 yyyUnsolvedInstSearchTravAux(*yyyCLpdum); 1777 yyyCLpdum++; 1778 } 1779 } 1780 1781 1782 1783 void yyyUnsolvedInstSearchTrav(yyyGNT *pNode) 1784 {yyyGNT **yyyCLpdum; 1785 int i; 1786 1787 yyyCLpdum = pNode->cL; 1788 i = pNode->cLlen; 1789 while (i--) 1790 { 1791 yyyUnsolvedInstSearchTravAux(*yyyCLpdum); 1792 yyyCLpdum++; 1793 } 1794 } 1795 1796 1797 1798 #line 1797 "expr.oxout.tab.c" 1799 1800 /* For use in generated program */ 1801 #define yydepth (int)(yystack.s_mark - yystack.s_base) 1802 #if YYBTYACC 1803 #define yytrial (yyps->save) 1804 #endif /* YYBTYACC */ 1805 1806 #if YYDEBUG 1807 #include <stdio.h> /* needed for printf */ 1808 #endif 1809 1810 #include <stdlib.h> /* needed for malloc, etc */ 1811 #include <string.h> /* needed for memset */ 1812 1813 /* allocate initial stack or double stack size, up to YYMAXDEPTH */ 1814 static int yygrowstack(YYSTACKDATA *data) 1815 { 1816 int i; 1817 unsigned newsize; 1818 YYINT *newss; 1819 YYSTYPE *newvs; 1820 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1821 YYLTYPE *newps; 1822 #endif 1823 1824 if ((newsize = data->stacksize) == 0) 1825 newsize = YYINITSTACKSIZE; 1826 else if (newsize >= YYMAXDEPTH) 1827 return YYENOMEM; 1828 else if ((newsize *= 2) > YYMAXDEPTH) 1829 newsize = YYMAXDEPTH; 1830 1831 i = (int) (data->s_mark - data->s_base); 1832 newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); 1833 if (newss == 0) 1834 return YYENOMEM; 1835 1836 data->s_base = newss; 1837 data->s_mark = newss + i; 1838 1839 newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); 1840 if (newvs == 0) 1841 return YYENOMEM; 1842 1843 data->l_base = newvs; 1844 data->l_mark = newvs + i; 1845 1846 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1847 newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); 1848 if (newps == 0) 1849 return YYENOMEM; 1850 1851 data->p_base = newps; 1852 data->p_mark = newps + i; 1853 #endif 1854 1855 data->stacksize = newsize; 1856 data->s_last = data->s_base + newsize - 1; 1857 1858 #if YYDEBUG 1859 if (yydebug) 1860 fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize); 1861 #endif 1862 return 0; 1863 } 1864 1865 #if YYPURE || defined(YY_NO_LEAKS) 1866 static void yyfreestack(YYSTACKDATA *data) 1867 { 1868 free(data->s_base); 1869 free(data->l_base); 1870 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1871 free(data->p_base); 1872 #endif 1873 memset(data, 0, sizeof(*data)); 1874 } 1875 #else 1876 #define yyfreestack(data) /* nothing */ 1877 #endif /* YYPURE || defined(YY_NO_LEAKS) */ 1878 #if YYBTYACC 1879 1880 static YYParseState * 1881 yyNewState(unsigned size) 1882 { 1883 YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState)); 1884 if (p == NULL) return NULL; 1885 1886 p->yystack.stacksize = size; 1887 if (size == 0) 1888 { 1889 p->yystack.s_base = NULL; 1890 p->yystack.l_base = NULL; 1891 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1892 p->yystack.p_base = NULL; 1893 #endif 1894 return p; 1895 } 1896 p->yystack.s_base = (YYINT *) malloc(size * sizeof(YYINT)); 1897 if (p->yystack.s_base == NULL) return NULL; 1898 p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE)); 1899 if (p->yystack.l_base == NULL) return NULL; 1900 memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE)); 1901 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1902 p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE)); 1903 if (p->yystack.p_base == NULL) return NULL; 1904 memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE)); 1905 #endif 1906 1907 return p; 1908 } 1909 1910 static void 1911 yyFreeState(YYParseState *p) 1912 { 1913 yyfreestack(&p->yystack); 1914 free(p); 1915 } 1916 #endif /* YYBTYACC */ 1917 1918 #define YYABORT goto yyabort 1919 #define YYREJECT goto yyabort 1920 #define YYACCEPT goto yyaccept 1921 #define YYERROR goto yyerrlab 1922 #if YYBTYACC 1923 #define YYVALID do { if (yyps->save) goto yyvalid; } while(0) 1924 #define YYVALID_NESTED do { if (yyps->save && \ 1925 yyps->save->save == 0) goto yyvalid; } while(0) 1926 #endif /* YYBTYACC */ 1927 1928 int 1929 YYPARSE_DECL() 1930 { 1931 int yym, yyn, yystate, yyresult; 1932 #if YYBTYACC 1933 int yynewerrflag; 1934 YYParseState *yyerrctx = NULL; 1935 #endif /* YYBTYACC */ 1936 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1937 YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */ 1938 #endif 1939 #if YYDEBUG 1940 const char *yys; 1941 1942 if ((yys = getenv("YYDEBUG")) != 0) 1943 { 1944 yyn = *yys; 1945 if (yyn >= '0' && yyn <= '9') 1946 yydebug = yyn - '0'; 1947 } 1948 if (yydebug) 1949 fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX); 1950 #endif 1951 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1952 memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range)); 1953 #endif 1954 1955 #if YYBTYACC 1956 yyps = yyNewState(0); if (yyps == 0) goto yyenomem; 1957 yyps->save = 0; 1958 #endif /* YYBTYACC */ 1959 yym = 0; 1960 yyn = 0; 1961 yynerrs = 0; 1962 yyerrflag = 0; 1963 yychar = YYEMPTY; 1964 yystate = 0; 1965 1966 #if YYPURE 1967 memset(&yystack, 0, sizeof(yystack)); 1968 #endif 1969 1970 if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 1971 yystack.s_mark = yystack.s_base; 1972 yystack.l_mark = yystack.l_base; 1973 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1974 yystack.p_mark = yystack.p_base; 1975 #endif 1976 yystate = 0; 1977 *yystack.s_mark = 0; 1978 1979 yyloop: 1980 if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 1981 if (yychar < 0) 1982 { 1983 #if YYBTYACC 1984 do { 1985 if (yylvp < yylve) 1986 { 1987 /* we're currently re-reading tokens */ 1988 yylval = *yylvp++; 1989 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 1990 yylloc = *yylpp++; 1991 #endif 1992 yychar = *yylexp++; 1993 break; 1994 } 1995 if (yyps->save) 1996 { 1997 /* in trial mode; save scanner results for future parse attempts */ 1998 if (yylvp == yylvlim) 1999 { /* Enlarge lexical value queue */ 2000 size_t p = (size_t) (yylvp - yylvals); 2001 size_t s = (size_t) (yylvlim - yylvals); 2002 2003 s += YYLVQUEUEGROWTH; 2004 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem; 2005 if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem; 2006 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2007 if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem; 2008 #endif 2009 yylvp = yylve = yylvals + p; 2010 yylvlim = yylvals + s; 2011 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2012 yylpp = yylpe = yylpsns + p; 2013 yylplim = yylpsns + s; 2014 #endif 2015 yylexp = yylexemes + p; 2016 } 2017 *yylexp = (YYINT) YYLEX; 2018 *yylvp++ = yylval; 2019 yylve++; 2020 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2021 *yylpp++ = yylloc; 2022 yylpe++; 2023 #endif 2024 yychar = *yylexp++; 2025 break; 2026 } 2027 /* normal operation, no conflict encountered */ 2028 #endif /* YYBTYACC */ 2029 yychar = YYLEX; 2030 #if YYBTYACC 2031 } while (0); 2032 #endif /* YYBTYACC */ 2033 if (yychar < 0) yychar = YYEOF; 2034 #if YYDEBUG 2035 if (yydebug) 2036 { 2037 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 2038 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", 2039 YYDEBUGSTR, yydepth, yystate, yychar, yys); 2040 #ifdef YYSTYPE_TOSTRING 2041 #if YYBTYACC 2042 if (!yytrial) 2043 #endif /* YYBTYACC */ 2044 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval)); 2045 #endif 2046 fputc('\n', stderr); 2047 } 2048 #endif 2049 } 2050 #if YYBTYACC 2051 2052 /* Do we have a conflict? */ 2053 if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 && 2054 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 2055 { 2056 YYINT ctry; 2057 2058 if (yypath) 2059 { 2060 YYParseState *save; 2061 #if YYDEBUG 2062 if (yydebug) 2063 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n", 2064 YYDEBUGSTR, yydepth, yystate); 2065 #endif 2066 /* Switch to the next conflict context */ 2067 save = yypath; 2068 yypath = save->save; 2069 save->save = NULL; 2070 ctry = save->ctry; 2071 if (save->state != yystate) YYABORT; 2072 yyFreeState(save); 2073 2074 } 2075 else 2076 { 2077 2078 /* Unresolved conflict - start/continue trial parse */ 2079 YYParseState *save; 2080 #if YYDEBUG 2081 if (yydebug) 2082 { 2083 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate); 2084 if (yyps->save) 2085 fputs("ALREADY in conflict, continuing trial parse.\n", stderr); 2086 else 2087 fputs("Starting trial parse.\n", stderr); 2088 } 2089 #endif 2090 save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 2091 if (save == NULL) goto yyenomem; 2092 save->save = yyps->save; 2093 save->state = yystate; 2094 save->errflag = yyerrflag; 2095 save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base); 2096 memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 2097 save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base); 2098 memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 2099 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2100 save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base); 2101 memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 2102 #endif 2103 ctry = yytable[yyn]; 2104 if (yyctable[ctry] == -1) 2105 { 2106 #if YYDEBUG 2107 if (yydebug && yychar >= YYEOF) 2108 fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth); 2109 #endif 2110 ctry++; 2111 } 2112 save->ctry = ctry; 2113 if (yyps->save == NULL) 2114 { 2115 /* If this is a first conflict in the stack, start saving lexemes */ 2116 if (!yylexemes) 2117 { 2118 yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT)); 2119 if (yylexemes == NULL) goto yyenomem; 2120 yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE)); 2121 if (yylvals == NULL) goto yyenomem; 2122 yylvlim = yylvals + YYLVQUEUEGROWTH; 2123 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2124 yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE)); 2125 if (yylpsns == NULL) goto yyenomem; 2126 yylplim = yylpsns + YYLVQUEUEGROWTH; 2127 #endif 2128 } 2129 if (yylvp == yylve) 2130 { 2131 yylvp = yylve = yylvals; 2132 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2133 yylpp = yylpe = yylpsns; 2134 #endif 2135 yylexp = yylexemes; 2136 if (yychar >= YYEOF) 2137 { 2138 *yylve++ = yylval; 2139 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2140 *yylpe++ = yylloc; 2141 #endif 2142 *yylexp = (YYINT) yychar; 2143 yychar = YYEMPTY; 2144 } 2145 } 2146 } 2147 if (yychar >= YYEOF) 2148 { 2149 yylvp--; 2150 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2151 yylpp--; 2152 #endif 2153 yylexp--; 2154 yychar = YYEMPTY; 2155 } 2156 save->lexeme = (int) (yylvp - yylvals); 2157 yyps->save = save; 2158 } 2159 if (yytable[yyn] == ctry) 2160 { 2161 #if YYDEBUG 2162 if (yydebug) 2163 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 2164 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]); 2165 #endif 2166 if (yychar < 0) 2167 { 2168 yylvp++; 2169 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2170 yylpp++; 2171 #endif 2172 yylexp++; 2173 } 2174 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) 2175 goto yyoverflow; 2176 yystate = yyctable[ctry]; 2177 *++yystack.s_mark = (YYINT) yystate; 2178 *++yystack.l_mark = yylval; 2179 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2180 *++yystack.p_mark = yylloc; 2181 #endif 2182 yychar = YYEMPTY; 2183 if (yyerrflag > 0) --yyerrflag; 2184 goto yyloop; 2185 } 2186 else 2187 { 2188 yyn = yyctable[ctry]; 2189 goto yyreduce; 2190 } 2191 } /* End of code dealing with conflicts */ 2192 #endif /* YYBTYACC */ 2193 if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && 2194 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 2195 { 2196 #if YYDEBUG 2197 if (yydebug) 2198 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", 2199 YYDEBUGSTR, yydepth, yystate, yytable[yyn]); 2200 #endif 2201 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 2202 yystate = yytable[yyn]; 2203 *++yystack.s_mark = yytable[yyn]; 2204 *++yystack.l_mark = yylval; 2205 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2206 *++yystack.p_mark = yylloc; 2207 #endif 2208 yychar = YYEMPTY; 2209 if (yyerrflag > 0) --yyerrflag; 2210 goto yyloop; 2211 } 2212 if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && 2213 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) 2214 { 2215 yyn = yytable[yyn]; 2216 goto yyreduce; 2217 } 2218 if (yyerrflag != 0) goto yyinrecovery; 2219 #if YYBTYACC 2220 2221 yynewerrflag = 1; 2222 goto yyerrhandler; 2223 goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 2224 2225 yyerrlab: 2226 /* explicit YYERROR from an action -- pop the rhs of the rule reduced 2227 * before looking for error recovery */ 2228 yystack.s_mark -= yym; 2229 yystate = *yystack.s_mark; 2230 yystack.l_mark -= yym; 2231 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2232 yystack.p_mark -= yym; 2233 #endif 2234 2235 yynewerrflag = 0; 2236 yyerrhandler: 2237 while (yyps->save) 2238 { 2239 int ctry; 2240 YYParseState *save = yyps->save; 2241 #if YYDEBUG 2242 if (yydebug) 2243 fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n", 2244 YYDEBUGSTR, yydepth, yystate, yyps->save->state, 2245 (int)(yylvp - yylvals - yyps->save->lexeme)); 2246 #endif 2247 /* Memorize most forward-looking error state in case it's really an error. */ 2248 if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals) 2249 { 2250 /* Free old saved error context state */ 2251 if (yyerrctx) yyFreeState(yyerrctx); 2252 /* Create and fill out new saved error context state */ 2253 yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1)); 2254 if (yyerrctx == NULL) goto yyenomem; 2255 yyerrctx->save = yyps->save; 2256 yyerrctx->state = yystate; 2257 yyerrctx->errflag = yyerrflag; 2258 yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base); 2259 memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 2260 yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base); 2261 memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 2262 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2263 yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base); 2264 memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 2265 #endif 2266 yyerrctx->lexeme = (int) (yylvp - yylvals); 2267 } 2268 yylvp = yylvals + save->lexeme; 2269 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2270 yylpp = yylpsns + save->lexeme; 2271 #endif 2272 yylexp = yylexemes + save->lexeme; 2273 yychar = YYEMPTY; 2274 yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base); 2275 memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 2276 yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base); 2277 memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 2278 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2279 yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base); 2280 memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 2281 #endif 2282 ctry = ++save->ctry; 2283 yystate = save->state; 2284 /* We tried shift, try reduce now */ 2285 if ((yyn = yyctable[ctry]) >= 0) goto yyreduce; 2286 yyps->save = save->save; 2287 save->save = NULL; 2288 yyFreeState(save); 2289 2290 /* Nothing left on the stack -- error */ 2291 if (!yyps->save) 2292 { 2293 #if YYDEBUG 2294 if (yydebug) 2295 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n", 2296 YYPREFIX, yydepth); 2297 #endif 2298 /* Restore state as it was in the most forward-advanced error */ 2299 yylvp = yylvals + yyerrctx->lexeme; 2300 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2301 yylpp = yylpsns + yyerrctx->lexeme; 2302 #endif 2303 yylexp = yylexemes + yyerrctx->lexeme; 2304 yychar = yylexp[-1]; 2305 yylval = yylvp[-1]; 2306 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2307 yylloc = yylpp[-1]; 2308 #endif 2309 yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base); 2310 memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 2311 yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base); 2312 memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 2313 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2314 yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base); 2315 memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 2316 #endif 2317 yystate = yyerrctx->state; 2318 yyFreeState(yyerrctx); 2319 yyerrctx = NULL; 2320 } 2321 yynewerrflag = 1; 2322 } 2323 if (yynewerrflag == 0) goto yyinrecovery; 2324 #endif /* YYBTYACC */ 2325 2326 YYERROR_CALL("syntax error"); 2327 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2328 yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */ 2329 #endif 2330 2331 #if !YYBTYACC 2332 goto yyerrlab; /* redundant goto avoids 'unused label' warning */ 2333 yyerrlab: 2334 #endif 2335 ++yynerrs; 2336 2337 yyinrecovery: 2338 if (yyerrflag < 3) 2339 { 2340 yyerrflag = 3; 2341 for (;;) 2342 { 2343 if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && 2344 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) 2345 { 2346 #if YYDEBUG 2347 if (yydebug) 2348 fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", 2349 YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]); 2350 #endif 2351 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 2352 yystate = yytable[yyn]; 2353 *++yystack.s_mark = yytable[yyn]; 2354 *++yystack.l_mark = yylval; 2355 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2356 /* lookahead position is error end position */ 2357 yyerror_loc_range[2] = yylloc; 2358 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ 2359 *++yystack.p_mark = yyloc; 2360 #endif 2361 goto yyloop; 2362 } 2363 else 2364 { 2365 #if YYDEBUG 2366 if (yydebug) 2367 fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", 2368 YYDEBUGSTR, yydepth, *yystack.s_mark); 2369 #endif 2370 if (yystack.s_mark <= yystack.s_base) goto yyabort; 2371 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2372 /* the current TOS position is the error start position */ 2373 yyerror_loc_range[1] = *yystack.p_mark; 2374 #endif 2375 #if defined(YYDESTRUCT_CALL) 2376 #if YYBTYACC 2377 if (!yytrial) 2378 #endif /* YYBTYACC */ 2379 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2380 YYDESTRUCT_CALL("error: discarding state", 2381 yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark); 2382 #else 2383 YYDESTRUCT_CALL("error: discarding state", 2384 yystos[*yystack.s_mark], yystack.l_mark); 2385 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 2386 #endif /* defined(YYDESTRUCT_CALL) */ 2387 --yystack.s_mark; 2388 --yystack.l_mark; 2389 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2390 --yystack.p_mark; 2391 #endif 2392 } 2393 } 2394 } 2395 else 2396 { 2397 if (yychar == YYEOF) goto yyabort; 2398 #if YYDEBUG 2399 if (yydebug) 2400 { 2401 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 2402 fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", 2403 YYDEBUGSTR, yydepth, yystate, yychar, yys); 2404 } 2405 #endif 2406 #if defined(YYDESTRUCT_CALL) 2407 #if YYBTYACC 2408 if (!yytrial) 2409 #endif /* YYBTYACC */ 2410 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2411 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc); 2412 #else 2413 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval); 2414 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 2415 #endif /* defined(YYDESTRUCT_CALL) */ 2416 yychar = YYEMPTY; 2417 goto yyloop; 2418 } 2419 2420 yyreduce: 2421 yym = yylen[yyn]; 2422 #if YYDEBUG 2423 if (yydebug) 2424 { 2425 fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", 2426 YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]); 2427 #ifdef YYSTYPE_TOSTRING 2428 #if YYBTYACC 2429 if (!yytrial) 2430 #endif /* YYBTYACC */ 2431 if (yym > 0) 2432 { 2433 int i; 2434 fputc('<', stderr); 2435 for (i = yym; i > 0; i--) 2436 { 2437 if (i != yym) fputs(", ", stderr); 2438 fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], 2439 yystack.l_mark[1-i]), stderr); 2440 } 2441 fputc('>', stderr); 2442 } 2443 #endif 2444 fputc('\n', stderr); 2445 } 2446 #endif 2447 if (yym > 0) 2448 yyval = yystack.l_mark[1-yym]; 2449 else 2450 memset(&yyval, 0, sizeof yyval); 2451 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2452 2453 /* Perform position reduction */ 2454 memset(&yyloc, 0, sizeof(yyloc)); 2455 #if YYBTYACC 2456 if (!yytrial) 2457 #endif /* YYBTYACC */ 2458 { 2459 YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym); 2460 /* just in case YYERROR is invoked within the action, save 2461 the start of the rhs as the error start position */ 2462 yyerror_loc_range[1] = yystack.p_mark[1-yym]; 2463 } 2464 #endif 2465 2466 switch (yyn) 2467 { 2468 case 1: 2469 #line 64 "expr.oxout.y" 2470 {yyyYoxInit();} 2471 break; 2472 case 2: 2473 #line 66 "expr.oxout.y" 2474 { 2475 yyyDecorate(); yyyExecuteRRsection(yystack.l_mark[0].yyyOxAttrbs.yyyOxStackItem->node); 2476 } 2477 break; 2478 case 3: 2479 #line 73 "expr.oxout.y" 2480 {if(yyyYok){ 2481 yyyGenIntNode(1,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2482 yyyAdjustINRC(1,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2483 break; 2484 case 4: 2485 #line 80 "expr.oxout.y" 2486 {if(yyyYok){ 2487 yyyGenIntNode(2,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2488 yyyAdjustINRC(2,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2489 break; 2490 case 5: 2491 #line 87 "expr.oxout.y" 2492 {if(yyyYok){ 2493 yyyGenIntNode(3,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2494 yyyAdjustINRC(3,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2495 break; 2496 case 6: 2497 #line 94 "expr.oxout.y" 2498 {if(yyyYok){ 2499 yyyGenIntNode(4,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2500 yyyAdjustINRC(4,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2501 break; 2502 case 7: 2503 #line 101 "expr.oxout.y" 2504 {if(yyyYok){ 2505 yyyGenIntNode(5,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2506 yyyAdjustINRC(5,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2507 break; 2508 case 8: 2509 #line 108 "expr.oxout.y" 2510 {if(yyyYok){ 2511 yyyGenIntNode(6,3,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2512 yyyAdjustINRC(6,3,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[-2].yyyOxAttrbs,&yystack.l_mark[-1].yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2513 break; 2514 case 9: 2515 #line 114 "expr.oxout.y" 2516 {if(yyyYok){ 2517 yyyGenIntNode(7,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2518 yyyAdjustINRC(7,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2519 break; 2520 case 10: 2521 #line 121 "expr.oxout.y" 2522 {if(yyyYok){ 2523 yyyGenIntNode(8,1,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs); 2524 yyyAdjustINRC(8,1,0,0,&yyval.yyyOxAttrbs,&yystack.l_mark[0].yyyOxAttrbs);}} 2525 break; 2526 #line 2525 "expr.oxout.tab.c" 2527 default: 2528 break; 2529 } 2530 yystack.s_mark -= yym; 2531 yystate = *yystack.s_mark; 2532 yystack.l_mark -= yym; 2533 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2534 yystack.p_mark -= yym; 2535 #endif 2536 yym = yylhs[yyn]; 2537 if (yystate == 0 && yym == 0) 2538 { 2539 #if YYDEBUG 2540 if (yydebug) 2541 { 2542 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 2543 #ifdef YYSTYPE_TOSTRING 2544 #if YYBTYACC 2545 if (!yytrial) 2546 #endif /* YYBTYACC */ 2547 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval)); 2548 #endif 2549 fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); 2550 } 2551 #endif 2552 yystate = YYFINAL; 2553 *++yystack.s_mark = YYFINAL; 2554 *++yystack.l_mark = yyval; 2555 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2556 *++yystack.p_mark = yyloc; 2557 #endif 2558 if (yychar < 0) 2559 { 2560 #if YYBTYACC 2561 do { 2562 if (yylvp < yylve) 2563 { 2564 /* we're currently re-reading tokens */ 2565 yylval = *yylvp++; 2566 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2567 yylloc = *yylpp++; 2568 #endif 2569 yychar = *yylexp++; 2570 break; 2571 } 2572 if (yyps->save) 2573 { 2574 /* in trial mode; save scanner results for future parse attempts */ 2575 if (yylvp == yylvlim) 2576 { /* Enlarge lexical value queue */ 2577 size_t p = (size_t) (yylvp - yylvals); 2578 size_t s = (size_t) (yylvlim - yylvals); 2579 2580 s += YYLVQUEUEGROWTH; 2581 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) 2582 goto yyenomem; 2583 if ((yylvals = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) 2584 goto yyenomem; 2585 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2586 if ((yylpsns = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) 2587 goto yyenomem; 2588 #endif 2589 yylvp = yylve = yylvals + p; 2590 yylvlim = yylvals + s; 2591 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2592 yylpp = yylpe = yylpsns + p; 2593 yylplim = yylpsns + s; 2594 #endif 2595 yylexp = yylexemes + p; 2596 } 2597 *yylexp = (YYINT) YYLEX; 2598 *yylvp++ = yylval; 2599 yylve++; 2600 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2601 *yylpp++ = yylloc; 2602 yylpe++; 2603 #endif 2604 yychar = *yylexp++; 2605 break; 2606 } 2607 /* normal operation, no conflict encountered */ 2608 #endif /* YYBTYACC */ 2609 yychar = YYLEX; 2610 #if YYBTYACC 2611 } while (0); 2612 #endif /* YYBTYACC */ 2613 if (yychar < 0) yychar = YYEOF; 2614 #if YYDEBUG 2615 if (yydebug) 2616 { 2617 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; 2618 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", 2619 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); 2620 } 2621 #endif 2622 } 2623 if (yychar == YYEOF) goto yyaccept; 2624 goto yyloop; 2625 } 2626 if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && 2627 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) 2628 yystate = yytable[yyn]; 2629 else 2630 yystate = yydgoto[yym]; 2631 #if YYDEBUG 2632 if (yydebug) 2633 { 2634 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth); 2635 #ifdef YYSTYPE_TOSTRING 2636 #if YYBTYACC 2637 if (!yytrial) 2638 #endif /* YYBTYACC */ 2639 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval)); 2640 #endif 2641 fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); 2642 } 2643 #endif 2644 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; 2645 *++yystack.s_mark = (YYINT) yystate; 2646 *++yystack.l_mark = yyval; 2647 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2648 *++yystack.p_mark = yyloc; 2649 #endif 2650 goto yyloop; 2651 #if YYBTYACC 2652 2653 /* Reduction declares that this path is valid. Set yypath and do a full parse */ 2654 yyvalid: 2655 if (yypath) YYABORT; 2656 while (yyps->save) 2657 { 2658 YYParseState *save = yyps->save; 2659 yyps->save = save->save; 2660 save->save = yypath; 2661 yypath = save; 2662 } 2663 #if YYDEBUG 2664 if (yydebug) 2665 fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n", 2666 YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme)); 2667 #endif 2668 if (yyerrctx) 2669 { 2670 yyFreeState(yyerrctx); 2671 yyerrctx = NULL; 2672 } 2673 yylvp = yylvals + yypath->lexeme; 2674 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2675 yylpp = yylpsns + yypath->lexeme; 2676 #endif 2677 yylexp = yylexemes + yypath->lexeme; 2678 yychar = YYEMPTY; 2679 yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base); 2680 memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT)); 2681 yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base); 2682 memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE)); 2683 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2684 yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base); 2685 memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE)); 2686 #endif 2687 yystate = yypath->state; 2688 goto yyloop; 2689 #endif /* YYBTYACC */ 2690 2691 yyoverflow: 2692 YYERROR_CALL("yacc stack overflow"); 2693 #if YYBTYACC 2694 goto yyabort_nomem; 2695 yyenomem: 2696 YYERROR_CALL("memory exhausted"); 2697 yyabort_nomem: 2698 #endif /* YYBTYACC */ 2699 yyresult = 2; 2700 goto yyreturn; 2701 2702 yyabort: 2703 yyresult = 1; 2704 goto yyreturn; 2705 2706 yyaccept: 2707 #if YYBTYACC 2708 if (yyps->save) goto yyvalid; 2709 #endif /* YYBTYACC */ 2710 yyresult = 0; 2711 2712 yyreturn: 2713 #if defined(YYDESTRUCT_CALL) 2714 if (yychar != YYEOF && yychar != YYEMPTY) 2715 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2716 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc); 2717 #else 2718 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval); 2719 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 2720 2721 { 2722 YYSTYPE *pv; 2723 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) 2724 YYLTYPE *pp; 2725 2726 for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) 2727 YYDESTRUCT_CALL("cleanup: discarding state", 2728 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp); 2729 #else 2730 for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) 2731 YYDESTRUCT_CALL("cleanup: discarding state", 2732 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv); 2733 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ 2734 } 2735 #endif /* defined(YYDESTRUCT_CALL) */ 2736 2737 #if YYBTYACC 2738 if (yyerrctx) 2739 { 2740 yyFreeState(yyerrctx); 2741 yyerrctx = NULL; 2742 } 2743 while (yyps) 2744 { 2745 YYParseState *save = yyps; 2746 yyps = save->save; 2747 save->save = NULL; 2748 yyFreeState(save); 2749 } 2750 while (yypath) 2751 { 2752 YYParseState *save = yypath; 2753 yypath = save->save; 2754 save->save = NULL; 2755 yyFreeState(save); 2756 } 2757 #endif /* YYBTYACC */ 2758 yyfreestack(&yystack); 2759 return (yyresult); 2760 } 2761