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