|
|
1.1 ! root 1: # define xxif 300 ! 2: # define xxelse 301 ! 3: # define xxwhile 302 ! 4: # define xxrept 303 ! 5: # define xxdo 304 ! 6: # define xxrb 305 ! 7: # define xxpred 306 ! 8: # define xxident 307 ! 9: # define xxle 308 ! 10: # define xxge 309 ! 11: # define xxne 310 ! 12: # define xxnum 311 ! 13: # define xxcom 312 ! 14: # define xxstring 313 ! 15: # define xxexplist 314 ! 16: # define xxidpar 315 ! 17: # define xxelseif 316 ! 18: # define xxlb 318 ! 19: # define xxend 319 ! 20: # define xxcase 320 ! 21: # define xxswitch 321 ! 22: # define xxuntil 322 ! 23: # define xxdefault 323 ! 24: # define xxeq 324 ! 25: # define xxuminus 281 ! 26: ! 27: # line 17 "beauty.y" ! 28: #ifndef lint ! 29: static char sccsid[] = "@(#)beauty.y 4.1 (Berkeley) 2/11/83"; ! 30: #endif not lint ! 31: ! 32: #include "b.h" ! 33: #include <stdio.h> ! 34: #define yyclearin yychar = -1 ! 35: #define yyerrok yyerrflag = 0 ! 36: extern int yychar; ! 37: extern short yyerrflag; ! 38: #ifndef YYMAXDEPTH ! 39: #define YYMAXDEPTH 150 ! 40: #endif ! 41: #ifndef YYSTYPE ! 42: #define YYSTYPE int ! 43: #endif ! 44: YYSTYPE yylval, yyval; ! 45: ! 46: # line 27 "beauty.y" ! 47: struct node *t; ! 48: # define YYERRCODE 256 ! 49: ! 50: # line 232 "beauty.y" ! 51: ! 52: #define ASSERT(X,Y) if (!(X)) error("struct bug: assertion 'X' invalid in routine Y","",""); ! 53: ! 54: yyerror(s) ! 55: char *s; ! 56: { ! 57: extern int yychar; ! 58: fprintf(stderr,"\n%s",s); ! 59: fprintf(stderr," in beautifying, output line %d,",xxlineno + 1); ! 60: fprintf(stderr," on input: "); ! 61: switch (yychar) { ! 62: case '\t': fprintf(stderr,"\\t\n"); return; ! 63: case '\n': fprintf(stderr,"\\n\n"); return; ! 64: case '\0': fprintf(stderr,"$end\n"); return; ! 65: default: fprintf(stderr,"%c\n",yychar); return; ! 66: } ! 67: } ! 68: ! 69: yyinit(argc, argv) /* initialize pushdown store */ ! 70: int argc; ! 71: char *argv[]; ! 72: { ! 73: xxindent = 0; ! 74: xxbpertab = 8; ! 75: xxmaxchars = 120; ! 76: } ! 77: ! 78: ! 79: #include <signal.h> ! 80: main() ! 81: { ! 82: int exit(); ! 83: if ( signal(SIGINT, SIG_IGN) != SIG_IGN) ! 84: signal(SIGINT, exit); ! 85: yyinit(); ! 86: yyparse(); ! 87: } ! 88: ! 89: ! 90: putout(type,string) /* output string with proper indentation */ ! 91: int type; ! 92: char *string; ! 93: { ! 94: static int lasttype; ! 95: if ( (lasttype != 0) && (lasttype != '\n') && (lasttype != ' ') && (lasttype != '\t') && (type == xxcom)) ! 96: accum("\t"); ! 97: else if (lasttype == xxcom && type != '\n') ! 98: tab(xxindent); ! 99: else ! 100: if (lasttype == xxif || ! 101: lasttype == xxwhile || ! 102: lasttype == xxdo || ! 103: type == '=' || ! 104: lasttype == '=' || ! 105: (lasttype == xxident && (type == xxident || type == xxnum) ) || ! 106: (lasttype == xxnum && type == xxnum) ) ! 107: accum(" "); ! 108: accum(string); ! 109: lasttype = type; ! 110: } ! 111: ! 112: ! 113: accum(token) /* fill output buffer, generate continuation lines */ ! 114: char *token; ! 115: { ! 116: static char *buffer; ! 117: static int lstatus,llen,bufind; ! 118: int tstatus,tlen,i; ! 119: ! 120: #define NEW 0 ! 121: #define MID 1 ! 122: #define CONT 2 ! 123: ! 124: if (buffer == 0) ! 125: { ! 126: buffer = malloc(xxmaxchars); ! 127: if (buffer == 0) error("malloc out of space","",""); ! 128: } ! 129: tlen = slength(token); ! 130: if (tlen == 0) return; ! 131: for (i = 0; i < tlen; ++i) ! 132: ASSERT(token[i] != '\n' || tlen == 1,accum); ! 133: switch(token[tlen-1]) ! 134: { ! 135: case '\n': tstatus = NEW; ! 136: break; ! 137: case '+': ! 138: case '-': ! 139: case '*': ! 140: case ',': ! 141: case '|': ! 142: case '&': ! 143: case '(': tstatus = CONT; ! 144: break; ! 145: default: tstatus = MID; ! 146: } ! 147: if (llen + bufind + tlen > xxmaxchars && lstatus == CONT && tstatus != NEW) ! 148: { ! 149: putchar('\n'); ! 150: ++xxlineno; ! 151: for (i = 0; i < xxindent; ++i) ! 152: putchar('\t'); ! 153: putchar(' ');putchar(' '); ! 154: llen = 2 + xxindent * xxbpertab; ! 155: lstatus = NEW; ! 156: } ! 157: if (lstatus == CONT && tstatus == MID) ! 158: { /* store in buffer in case need \n after last CONT char */ ! 159: ASSERT(bufind + tlen < xxmaxchars,accum); ! 160: for (i = 0; i < tlen; ++i) ! 161: buffer[bufind++] = token[i]; ! 162: } ! 163: else ! 164: { ! 165: for (i = 0; i < bufind; ++i) ! 166: putchar(buffer[i]); ! 167: llen += bufind; ! 168: bufind = 0; ! 169: for (i = 0; i < tlen; ++i) ! 170: putchar(token[i]); ! 171: if (tstatus == NEW) ++xxlineno; ! 172: llen = (tstatus == NEW) ? 0 : llen + tlen; ! 173: lstatus = tstatus; ! 174: } ! 175: } ! 176: ! 177: tab(n) ! 178: int n; ! 179: { ! 180: int i; ! 181: newline(); ! 182: for ( i = 0; i < n; ++i) ! 183: putout('\t',"\t"); ! 184: } ! 185: ! 186: newline() ! 187: { ! 188: static int already; ! 189: if (already) ! 190: putout('\n',"\n"); ! 191: else ! 192: already = 1; ! 193: } ! 194: ! 195: error(mess1, mess2, mess3) ! 196: char *mess1, *mess2, *mess3; ! 197: { ! 198: fprintf(stderr,"\nerror in beautifying, output line %d: %s %s %s \n", ! 199: xxlineno, mess1, mess2, mess3); ! 200: exit(1); ! 201: } ! 202: ! 203: ! 204: ! 205: ! 206: ! 207: ! 208: ! 209: push(type) ! 210: int type; ! 211: { ! 212: if (++xxstind > xxtop) ! 213: error("nesting too deep, stack overflow","",""); ! 214: xxstack[xxstind] = type; ! 215: } ! 216: ! 217: pop() ! 218: { ! 219: if (xxstind <= 0) ! 220: error("stack exhausted, can't be popped as requested","",""); ! 221: --xxstind; ! 222: } ! 223: ! 224: ! 225: forst() ! 226: { ! 227: while( (xxval = yylex()) != '\n') ! 228: { ! 229: putout(xxval, yylval); ! 230: free(yylval); ! 231: } ! 232: free(yylval); ! 233: } ! 234: short yyexca[] ={ ! 235: -1, 0, ! 236: 312, 17, ! 237: -2, 16, ! 238: -1, 1, ! 239: 0, -1, ! 240: -2, 0, ! 241: -1, 2, ! 242: 0, 18, ! 243: 312, 17, ! 244: -2, 16, ! 245: -1, 6, ! 246: 312, 17, ! 247: -2, 16, ! 248: -1, 7, ! 249: 312, 17, ! 250: -2, 16, ! 251: -1, 29, ! 252: 312, 17, ! 253: -2, 16, ! 254: -1, 36, ! 255: 312, 17, ! 256: -2, 16, ! 257: -1, 46, ! 258: 322, 16, ! 259: -2, 65, ! 260: -1, 93, ! 261: 308, 0, ! 262: 309, 0, ! 263: 310, 0, ! 264: 324, 0, ! 265: 60, 0, ! 266: 62, 0, ! 267: -2, 51, ! 268: -1, 94, ! 269: 308, 0, ! 270: 309, 0, ! 271: 310, 0, ! 272: 324, 0, ! 273: 60, 0, ! 274: 62, 0, ! 275: -2, 52, ! 276: -1, 95, ! 277: 308, 0, ! 278: 309, 0, ! 279: 310, 0, ! 280: 324, 0, ! 281: 60, 0, ! 282: 62, 0, ! 283: -2, 53, ! 284: -1, 96, ! 285: 308, 0, ! 286: 309, 0, ! 287: 310, 0, ! 288: 324, 0, ! 289: 60, 0, ! 290: 62, 0, ! 291: -2, 54, ! 292: -1, 97, ! 293: 308, 0, ! 294: 309, 0, ! 295: 310, 0, ! 296: 324, 0, ! 297: 60, 0, ! 298: 62, 0, ! 299: -2, 55, ! 300: -1, 98, ! 301: 308, 0, ! 302: 309, 0, ! 303: 310, 0, ! 304: 324, 0, ! 305: 60, 0, ! 306: 62, 0, ! 307: -2, 56, ! 308: -1, 104, ! 309: 312, 17, ! 310: -2, 16, ! 311: -1, 110, ! 312: 312, 17, ! 313: 125, 23, ! 314: -2, 16, ! 315: -1, 126, ! 316: 312, 17, ! 317: -2, 16, ! 318: -1, 130, ! 319: 312, 17, ! 320: 320, 21, ! 321: 323, 21, ! 322: 125, 21, ! 323: -2, 16, ! 324: -1, 132, ! 325: 312, 17, ! 326: 320, 21, ! 327: 323, 21, ! 328: 125, 21, ! 329: -2, 16, ! 330: -1, 133, ! 331: 312, 17, ! 332: 320, 21, ! 333: 323, 21, ! 334: 125, 21, ! 335: -2, 16, ! 336: }; ! 337: # define YYNPROD 76 ! 338: # define YYLAST 384 ! 339: short yyact[]={ ! 340: ! 341: 66, 31, 103, 55, 62, 60, 113, 61, 66, 63, ! 342: 11, 40, 62, 60, 107, 61, 119, 63, 38, 120, ! 343: 34, 44, 68, 39, 67, 11, 11, 31, 57, 31, ! 344: 68, 66, 67, 85, 99, 62, 60, 11, 61, 66, ! 345: 63, 110, 59, 62, 60, 109, 61, 100, 63, 8, ! 346: 2, 64, 82, 68, 6, 67, 64, 29, 131, 30, ! 347: 33, 68, 127, 67, 64, 36, 66, 51, 106, 16, ! 348: 62, 60, 76, 61, 66, 63, 50, 24, 62, 60, ! 349: 62, 61, 41, 63, 102, 63, 65, 64, 68, 118, ! 350: 67, 124, 117, 7, 65, 64, 68, 3, 67, 5, ! 351: 14, 62, 60, 21, 61, 32, 63, 22, 23, 28, ! 352: 48, 52, 27, 83, 80, 15, 20, 65, 19, 68, ! 353: 78, 67, 64, 18, 26, 65, 25, 14, 35, 53, ! 354: 64, 54, 64, 45, 58, 104, 49, 62, 60, 17, ! 355: 61, 56, 63, 9, 4, 13, 79, 46, 47, 1, ! 356: 0, 0, 65, 64, 112, 114, 116, 129, 9, 9, ! 357: 112, 0, 0, 128, 134, 125, 135, 136, 0, 0, ! 358: 0, 112, 0, 121, 77, 123, 101, 132, 22, 23, ! 359: 28, 133, 0, 27, 126, 84, 0, 10, 0, 64, ! 360: 130, 0, 0, 37, 0, 26, 0, 25, 12, 55, ! 361: 0, 0, 10, 10, 111, 0, 0, 0, 0, 115, ! 362: 111, 0, 0, 12, 12, 73, 74, 75, 108, 0, ! 363: 0, 111, 0, 0, 0, 0, 0, 0, 81, 0, ! 364: 14, 14, 0, 0, 0, 0, 0, 86, 87, 88, ! 365: 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, ! 366: 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, ! 367: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 368: 70, 71, 72, 0, 0, 0, 0, 0, 70, 71, ! 369: 72, 0, 0, 0, 0, 44, 69, 0, 0, 42, ! 370: 122, 43, 0, 0, 69, 0, 0, 0, 0, 0, ! 371: 0, 70, 71, 72, 0, 0, 0, 0, 0, 70, ! 372: 71, 72, 0, 0, 0, 0, 0, 69, 0, 0, ! 373: 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, ! 374: 0, 0, 0, 0, 0, 0, 70, 71, 72, 0, ! 375: 0, 0, 0, 0, 70, 71, 72, 0, 0, 0, ! 376: 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, ! 377: 69, 0, 0, 0, 0, 0, 0, 70, 71, 72, ! 378: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 379: 0, 0, 0, 69 }; ! 380: short yypact[]={ ! 381: ! 382: -97,-1000, -97,-1000, 29,-195, -98, -97,-292,-1000, ! 383: -1000,-1000,-1000,-1000,-1000,-1000, -22, 29,-1000,-1000, ! 384: 29,-1000,-1000,-1000, 23,-1000,-1000,-1000,-286, -97, ! 385: -1000,-1000,-1000,-113,-1000,-273, -97, 1, -22, -22, ! 386: -22,-1000,-1000,-1000, 32,-1000,-1000,-1000,-1000,-1000, ! 387: -1000, -22, -9,-124,-1000,-1000,-1000,-1000,-1000,-1000, ! 388: -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, ! 389: -22, -22, -22, -7, -43, 59, -22,-1000,-1000,-320, ! 390: -86, 28, -22,-1000,-1000,-1000, 38, 38, -43, -43, ! 391: -43, 36, 59, 95, 95, 95, 95, 95, 95,-1000, ! 392: 27, -30, 29,-1000,-1000, -38,-1000, -22,-1000,-1000, ! 393: -1000,-304,-292, -22,-1000, -96,-1000, -22,-1000,-1000, ! 394: 4,-309, 28,-1000,-1000, 0, -97,-1000,-1000,-1000, ! 395: -97,-1000, -97, -97,-1000,-1000,-1000 }; ! 396: short yypgo[]={ ! 397: ! 398: 0, 149, 50, 145, 97, 144, 115, 128, 141, 99, ! 399: 139, 123, 120, 118, 116, 110, 65, 54, 45, 59, ! 400: 33, 103, 93, 49, 60, 41, 92, 91, 89, 82, ! 401: 47, 176, 84, 77, 76 }; ! 402: short yyr1[]={ ! 403: ! 404: 0, 1, 2, 2, 4, 4, 4, 4, 4, 4, ! 405: 4, 4, 4, 4, 4, 4, 9, 23, 3, 7, ! 406: 16, 20, 18, 18, 25, 25, 25, 25, 26, 28, ! 407: 14, 21, 21, 29, 29, 27, 30, 30, 15, 15, ! 408: 6, 31, 31, 31, 31, 31, 31, 31, 31, 31, ! 409: 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, ! 410: 5, 8, 10, 11, 12, 12, 32, 13, 33, 34, ! 411: 34, 17, 19, 22, 24, 24 }; ! 412: short yyr2[]={ ! 413: ! 414: 0, 2, 1, 2, 5, 3, 4, 4, 3, 9, ! 415: 2, 4, 2, 2, 3, 1, 0, 0, 0, 3, ! 416: 0, 0, 2, 1, 6, 5, 5, 3, 1, 2, ! 417: 1, 1, 1, 4, 1, 2, 3, 1, 1, 0, ! 418: 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, ! 419: 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, ! 420: 1, 1, 1, 1, 3, 0, 1, 2, 6, 2, ! 421: 0, 1, 1, 1, 1, 2 }; ! 422: short yychk[]={ ! 423: ! 424: -1000, -1, -2, -4, -5, -9, -17, -22, -23, 256, ! 425: 300, 123, 311, -3, -4, -6, 40, -10, -11, -13, ! 426: -14, -21, 302, 303, -33, 321, 319, 307, 304, -2, ! 427: -19, 125, -4, -24, 312, -7, -16, -31, 40, 45, ! 428: 33, -29, 311, 313, 307, -6, -7, -7, -15, -6, ! 429: -34, 44, -29, -9, -4, 312, -8, 301, -4, 41, ! 430: 43, 45, 42, 47, 94, 124, 38, 62, 60, 324, ! 431: 308, 309, 310, -31, -31, -31, 40, -7, -12, -9, ! 432: -16, -31, 61, -19, -7, -20, -31, -31, -31, -31, ! 433: -31, -31, -31, -31, -31, -31, -31, -31, -31, 41, ! 434: -30, -31, -32, 322, -17, -31, 41, 44, -6, -18, ! 435: -25, -9, -23, 44, -30, -9, -18, -26, -28, 320, ! 436: 323, -24, -31, -19, -27, -30, -16, 58, -25, -20, ! 437: -16, 58, -2, -2, -20, -20, -20 }; ! 438: short yydef[]={ ! 439: ! 440: -2, -2, -2, 2, 0, 0, -2, -2, 0, 15, ! 441: 60, 71, 73, 1, 3, 20, 0, 0, 20, 20, ! 442: 39, 10, 62, 63, 70, 30, 31, 32, 0, -2, ! 443: 12, 72, 13, 16, 74, 5, -2, 0, 0, 0, ! 444: 0, 57, 58, 59, 34, 20, -2, 8, 20, 38, ! 445: 67, 0, 0, 0, 14, 75, 20, 61, 21, 40, ! 446: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 447: 0, 0, 0, 0, 42, 43, 0, 6, 7, 0, ! 448: 0, 69, 0, 11, 4, 19, 44, 45, 46, 47, ! 449: 48, 49, 50, -2, -2, -2, -2, -2, -2, 41, ! 450: 0, 37, 0, 66, -2, 0, 33, 0, 64, 16, ! 451: -2, 0, 0, 0, 36, 0, 22, 0, 20, 28, ! 452: 0, 16, 68, 21, 20, 0, -2, 29, 27, 9, ! 453: -2, 35, -2, -2, 25, 26, 24 }; ! 454: #ifndef lint ! 455: static char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83"; ! 456: #endif not lint ! 457: ! 458: # ! 459: # define YYFLAG -1000 ! 460: # define YYERROR goto yyerrlab ! 461: # define YYACCEPT return(0) ! 462: # define YYABORT return(1) ! 463: ! 464: /* parser for yacc output */ ! 465: ! 466: #ifdef YYDEBUG ! 467: int yydebug = 0; /* 1 for debugging */ ! 468: #endif ! 469: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ ! 470: int yychar = -1; /* current input token number */ ! 471: int yynerrs = 0; /* number of errors */ ! 472: short yyerrflag = 0; /* error recovery flag */ ! 473: ! 474: yyparse() { ! 475: ! 476: short yys[YYMAXDEPTH]; ! 477: short yyj, yym; ! 478: register YYSTYPE *yypvt; ! 479: register short yystate, *yyps, yyn; ! 480: register YYSTYPE *yypv; ! 481: register short *yyxi; ! 482: ! 483: yystate = 0; ! 484: yychar = -1; ! 485: yynerrs = 0; ! 486: yyerrflag = 0; ! 487: yyps= &yys[-1]; ! 488: yypv= &yyv[-1]; ! 489: ! 490: yystack: /* put a state and value onto the stack */ ! 491: ! 492: #ifdef YYDEBUG ! 493: if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar ); ! 494: #endif ! 495: if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); } ! 496: *yyps = yystate; ! 497: ++yypv; ! 498: *yypv = yyval; ! 499: ! 500: yynewstate: ! 501: ! 502: yyn = yypact[yystate]; ! 503: ! 504: if( yyn<= YYFLAG ) goto yydefault; /* simple state */ ! 505: ! 506: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0; ! 507: if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault; ! 508: ! 509: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ ! 510: yychar = -1; ! 511: yyval = yylval; ! 512: yystate = yyn; ! 513: if( yyerrflag > 0 ) --yyerrflag; ! 514: goto yystack; ! 515: } ! 516: ! 517: yydefault: ! 518: /* default state action */ ! 519: ! 520: if( (yyn=yydef[yystate]) == -2 ) { ! 521: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0; ! 522: /* look through exception table */ ! 523: ! 524: for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */ ! 525: ! 526: while( *(yyxi+=2) >= 0 ){ ! 527: if( *yyxi == yychar ) break; ! 528: } ! 529: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ ! 530: } ! 531: ! 532: if( yyn == 0 ){ /* error */ ! 533: /* error ... attempt to resume parsing */ ! 534: ! 535: switch( yyerrflag ){ ! 536: ! 537: case 0: /* brand new error */ ! 538: ! 539: yyerror( "syntax error" ); ! 540: yyerrlab: ! 541: ++yynerrs; ! 542: ! 543: case 1: ! 544: case 2: /* incompletely recovered error ... try again */ ! 545: ! 546: yyerrflag = 3; ! 547: ! 548: /* find a state where "error" is a legal shift action */ ! 549: ! 550: while ( yyps >= yys ) { ! 551: yyn = yypact[*yyps] + YYERRCODE; ! 552: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ ! 553: yystate = yyact[yyn]; /* simulate a shift of "error" */ ! 554: goto yystack; ! 555: } ! 556: yyn = yypact[*yyps]; ! 557: ! 558: /* the current yyps has no shift onn "error", pop stack */ ! 559: ! 560: #ifdef YYDEBUG ! 561: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] ); ! 562: #endif ! 563: --yyps; ! 564: --yypv; ! 565: } ! 566: ! 567: /* there is no state on the stack with an error shift ... abort */ ! 568: ! 569: yyabort: ! 570: return(1); ! 571: ! 572: ! 573: case 3: /* no shift yet; clobber input char */ ! 574: ! 575: #ifdef YYDEBUG ! 576: if( yydebug ) printf( "error recovery discards char %d\n", yychar ); ! 577: #endif ! 578: ! 579: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ ! 580: yychar = -1; ! 581: goto yynewstate; /* try again in the same state */ ! 582: ! 583: } ! 584: ! 585: } ! 586: ! 587: /* reduction by production yyn */ ! 588: ! 589: #ifdef YYDEBUG ! 590: if( yydebug ) printf("reduce %d\n",yyn); ! 591: #endif ! 592: yyps -= yyr2[yyn]; ! 593: yypvt = yypv; ! 594: yypv -= yyr2[yyn]; ! 595: yyval = yypv[1]; ! 596: yym=yyn; ! 597: /* consult goto table to find next state */ ! 598: yyn = yyr1[yyn]; ! 599: yyj = yypgo[yyn] + *yyps + 1; ! 600: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; ! 601: switch(yym){ ! 602: ! 603: case 16: ! 604: # line 53 "beauty.y" ! 605: { ! 606: if (!xxlablast) tab(xxindent); ! 607: xxlablast = 0; ! 608: } break; ! 609: case 17: ! 610: # line 58 "beauty.y" ! 611: newline(); break; ! 612: case 18: ! 613: # line 59 "beauty.y" ! 614: putout('\n',"\n"); break; ! 615: case 20: ! 616: # line 61 "beauty.y" ! 617: ! 618: { ! 619: if (xxstack[xxstind] != xxlb) ! 620: ++xxindent; ! 621: } break; ! 622: case 21: ! 623: # line 66 "beauty.y" ! 624: ! 625: {if (xxstack[xxstind] != xxlb && xxstack[xxstind] != xxelseif) ! 626: --xxindent; ! 627: pop(); ! 628: } break; ! 629: case 28: ! 630: # line 81 "beauty.y" ! 631: {putout(xxcase,"case "); free (yypvt[-0]); push(xxcase); } break; ! 632: case 29: ! 633: # line 84 "beauty.y" ! 634: { ! 635: putout(xxcase,"default"); ! 636: free(yypvt[-1]); ! 637: putout(':',":"); ! 638: free(yypvt[-0]); ! 639: push(xxcase); ! 640: } break; ! 641: case 30: ! 642: # line 91 "beauty.y" ! 643: {putout(xxswitch,"switch"); free(yypvt[-0]); push(xxswitch); } break; ! 644: case 31: ! 645: # line 93 "beauty.y" ! 646: { ! 647: free(yypvt[-0]); ! 648: putout(xxident,"end"); ! 649: putout('\n',"\n"); ! 650: putout('\n',"\n"); ! 651: putout('\n',"\n"); ! 652: } break; ! 653: case 32: ! 654: # line 100 "beauty.y" ! 655: { ! 656: putout(xxident,yypvt[-0]); ! 657: free(yypvt[-0]); ! 658: newflag = 1; ! 659: forst(); ! 660: newflag = 0; ! 661: } break; ! 662: case 33: ! 663: # line 110 "beauty.y" ! 664: { ! 665: xxt = addroot(yypvt[-3],xxident,0,0); ! 666: yyval = addroot("",xxidpar,xxt,yypvt[-1]); ! 667: } break; ! 668: case 34: ! 669: # line 115 "beauty.y" ! 670: yyval = addroot(yypvt[-0],xxident,0,0); break; ! 671: case 35: ! 672: # line 118 "beauty.y" ! 673: { ! 674: yield(yypvt[-1],0); ! 675: putout(':',":"); ! 676: freetree(yypvt[-1]); ! 677: } break; ! 678: case 36: ! 679: # line 123 "beauty.y" ! 680: yyval = addroot(yypvt[-1],xxexplist,checkneg(yypvt[-2],0),yypvt[-0]); break; ! 681: case 37: ! 682: # line 124 "beauty.y" ! 683: yyval = checkneg(yypvt[-0],0); break; ! 684: case 40: ! 685: # line 132 "beauty.y" ! 686: { t = checkneg(yypvt[-1],0); ! 687: yield(t,100); freetree(t); } break; ! 688: case 41: ! 689: # line 135 "beauty.y" ! 690: yyval = yypvt[-1]; break; ! 691: case 42: ! 692: # line 136 "beauty.y" ! 693: yyval = addroot(yypvt[-1],xxuminus,yypvt[-0],0); break; ! 694: case 43: ! 695: # line 137 "beauty.y" ! 696: yyval = addroot(yypvt[-1],'!',yypvt[-0],0); break; ! 697: case 44: ! 698: # line 138 "beauty.y" ! 699: yyval = addroot(yypvt[-1],'+',yypvt[-2],yypvt[-0]); break; ! 700: case 45: ! 701: # line 139 "beauty.y" ! 702: yyval = addroot(yypvt[-1],'-',yypvt[-2],yypvt[-0]); break; ! 703: case 46: ! 704: # line 140 "beauty.y" ! 705: yyval = addroot(yypvt[-1],'*',yypvt[-2],yypvt[-0]); break; ! 706: case 47: ! 707: # line 141 "beauty.y" ! 708: yyval = addroot(yypvt[-1],'/',yypvt[-2],yypvt[-0]); break; ! 709: case 48: ! 710: # line 142 "beauty.y" ! 711: yyval = addroot(yypvt[-1],'^',yypvt[-2],yypvt[-0]); break; ! 712: case 49: ! 713: # line 143 "beauty.y" ! 714: yyval = addroot(yypvt[-1],'|',yypvt[-2],yypvt[-0]); break; ! 715: case 50: ! 716: # line 144 "beauty.y" ! 717: yyval = addroot(yypvt[-1],'&',yypvt[-2],yypvt[-0]); break; ! 718: case 51: ! 719: # line 145 "beauty.y" ! 720: yyval = addroot(yypvt[-1],'>',yypvt[-2],yypvt[-0]); break; ! 721: case 52: ! 722: # line 146 "beauty.y" ! 723: yyval = addroot(yypvt[-1],'<',yypvt[-2],yypvt[-0]); break; ! 724: case 53: ! 725: # line 147 "beauty.y" ! 726: yyval = addroot(yypvt[-1],xxeq,yypvt[-2],yypvt[-0]); break; ! 727: case 54: ! 728: # line 148 "beauty.y" ! 729: yyval = addroot(yypvt[-1],xxle,yypvt[-2],yypvt[-0]); break; ! 730: case 55: ! 731: # line 149 "beauty.y" ! 732: yyval = addroot(yypvt[-1],xxge,yypvt[-2],yypvt[-0]); break; ! 733: case 56: ! 734: # line 150 "beauty.y" ! 735: yyval = addroot(yypvt[-1],xxne,yypvt[-2],yypvt[-0]); break; ! 736: case 57: ! 737: # line 151 "beauty.y" ! 738: yyval = yypvt[-0]; break; ! 739: case 58: ! 740: # line 152 "beauty.y" ! 741: yyval = addroot(yypvt[-0],xxnum,0,0); break; ! 742: case 59: ! 743: # line 153 "beauty.y" ! 744: yyval = addroot(yypvt[-0],xxstring,0,0); break; ! 745: case 60: ! 746: # line 156 "beauty.y" ! 747: ! 748: { ! 749: if (xxstack[xxstind] == xxelse && !xxlablast) ! 750: { ! 751: --xxindent; ! 752: xxstack[xxstind] = xxelseif; ! 753: putout(' '," "); ! 754: } ! 755: else ! 756: { ! 757: if (!xxlablast) ! 758: tab(xxindent); ! 759: xxlablast = 0; ! 760: } ! 761: putout(xxif,"if"); ! 762: free(yypvt[-0]); ! 763: push(xxif); ! 764: } break; ! 765: case 61: ! 766: # line 174 "beauty.y" ! 767: ! 768: { ! 769: tab(xxindent); ! 770: putout(xxelse,"else"); ! 771: free(yypvt[-0]); ! 772: push(xxelse); ! 773: } break; ! 774: case 62: ! 775: # line 181 "beauty.y" ! 776: { ! 777: putout(xxwhile,"while"); ! 778: free(yypvt[-0]); ! 779: push(xxwhile); ! 780: } break; ! 781: case 63: ! 782: # line 186 "beauty.y" ! 783: { ! 784: putout(xxrept,"repeat"); ! 785: free(yypvt[-0]); ! 786: push(xxrept); ! 787: } break; ! 788: case 66: ! 789: # line 195 "beauty.y" ! 790: { ! 791: putout('\t',"\t"); ! 792: putout(xxuntil,"until"); ! 793: free(yypvt[-0]); ! 794: } break; ! 795: case 68: ! 796: # line 202 "beauty.y" ! 797: ! 798: {push(xxdo); ! 799: putout(xxdo,"do"); ! 800: free(yypvt[-5]); ! 801: puttree(yypvt[-4]); ! 802: putout('=',"="); ! 803: free(yypvt[-3]); ! 804: puttree(yypvt[-2]); ! 805: putout(',',","); ! 806: free(yypvt[-1]); ! 807: puttree(yypvt[-0]); ! 808: } break; ! 809: case 69: ! 810: # line 214 "beauty.y" ! 811: { ! 812: putout(',',","); ! 813: puttree(yypvt[-0]); ! 814: } break; ! 815: case 71: ! 816: # line 219 "beauty.y" ! 817: { ! 818: putout('{'," {"); ! 819: push(xxlb); ! 820: } break; ! 821: case 72: ! 822: # line 223 "beauty.y" ! 823: { putout('}',"}"); pop(); } break; ! 824: case 73: ! 825: # line 224 "beauty.y" ! 826: { ! 827: tab(xxindent); ! 828: putout(xxnum,yypvt[-0]); ! 829: putout(' '," "); ! 830: xxlablast = 1; ! 831: } break; ! 832: case 74: ! 833: # line 230 "beauty.y" ! 834: { putout(xxcom,yypvt[-0]); free(yypvt[-0]); xxlablast = 0; } break; ! 835: case 75: ! 836: # line 231 "beauty.y" ! 837: { putout ('\n',"\n"); putout(xxcom,yypvt[-0]); free(yypvt[-0]); xxlablast = 0; } break; ! 838: } ! 839: goto yystack; /* stack new state and value */ ! 840: ! 841: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.