|
|
1.1 ! root 1: # define NAME 2 ! 2: # define STRING 3 ! 3: # define ICON 4 ! 4: # define FCON 5 ! 5: # define PLUS 6 ! 6: # define MINUS 8 ! 7: # define MUL 11 ! 8: # define AND 14 ! 9: # define OR 17 ! 10: # define ER 19 ! 11: # define QUEST 21 ! 12: # define COLON 22 ! 13: # define ANDAND 23 ! 14: # define OROR 24 ! 15: # define ASOP 25 ! 16: # define RELOP 26 ! 17: # define EQUOP 27 ! 18: # define DIVOP 28 ! 19: # define SHIFTOP 29 ! 20: # define INCOP 30 ! 21: # define UNOP 31 ! 22: # define STROP 32 ! 23: # define TYPE 33 ! 24: # define CLASS 34 ! 25: # define STRUCT 35 ! 26: # define RETURN 36 ! 27: # define GOTO 37 ! 28: # define IF 38 ! 29: # define ELSE 39 ! 30: # define SWITCH 40 ! 31: # define BREAK 41 ! 32: # define CONTINUE 42 ! 33: # define WHILE 43 ! 34: # define DO 44 ! 35: # define FOR 45 ! 36: # define DEFAULT 46 ! 37: # define CASE 47 ! 38: # define SIZEOF 48 ! 39: # define ENUM 49 ! 40: # define LP 50 ! 41: # define RP 51 ! 42: # define LC 52 ! 43: # define RC 53 ! 44: # define LB 54 ! 45: # define RB 55 ! 46: # define CM 56 ! 47: # define SM 57 ! 48: # define ASSIGN 58 ! 49: ! 50: # line 108 "../pcc1/mip/cgram.y" ! 51: # include "mfile1" ! 52: #define yyclearin yychar = -1 ! 53: #define yyerrok yyerrflag = 0 ! 54: extern int yychar; ! 55: extern short yyerrflag; ! 56: #ifndef YYMAXDEPTH ! 57: #define YYMAXDEPTH 150 ! 58: #endif ! 59: YYSTYPE yylval, yyval; ! 60: ! 61: # line 127 "../pcc1/mip/cgram.y" ! 62: static int fake = 0; ! 63: #ifndef FLEXNAMES ! 64: static char fakename[NCHNAM+1]; ! 65: #else ! 66: static char fakename[24]; ! 67: #endif ! 68: # define YYERRCODE 256 ! 69: ! 70: # line 840 "../pcc1/mip/cgram.y" ! 71: ! 72: ! 73: NODE * ! 74: mkty( t, d, s ) unsigned t; { ! 75: return( block( TYPE, NIL, NIL, t, d, s ) ); ! 76: } ! 77: ! 78: NODE * ! 79: bdty( op, p, v ) NODE *p; { ! 80: register NODE *q; ! 81: ! 82: q = block( op, p, NIL, INT, 0, INT ); ! 83: ! 84: switch( op ){ ! 85: ! 86: case UNARY MUL: ! 87: case UNARY CALL: ! 88: break; ! 89: ! 90: case LB: ! 91: q->in.right = bcon(v); ! 92: break; ! 93: ! 94: case NAME: ! 95: q->tn.rval = v; ! 96: break; ! 97: ! 98: default: ! 99: cerror( "bad bdty" ); ! 100: } ! 101: ! 102: return( q ); ! 103: } ! 104: ! 105: dstash( n ){ /* put n into the dimension table */ ! 106: if( curdim >= DIMTABSZ-1 ){ ! 107: cerror( "dimension table overflow"); ! 108: } ! 109: dimtab[ curdim++ ] = n; ! 110: } ! 111: ! 112: savebc() { ! 113: if( psavbc > & asavbc[BCSZ-4 ] ){ ! 114: cerror( "whiles, fors, etc. too deeply nested"); ! 115: } ! 116: *psavbc++ = brklab; ! 117: *psavbc++ = contlab; ! 118: *psavbc++ = flostat; ! 119: *psavbc++ = swx; ! 120: flostat = 0; ! 121: } ! 122: ! 123: resetbc(mask){ ! 124: ! 125: swx = *--psavbc; ! 126: flostat = *--psavbc | (flostat&mask); ! 127: contlab = *--psavbc; ! 128: brklab = *--psavbc; ! 129: ! 130: } ! 131: ! 132: addcase(p) NODE *p; { /* add case to switch */ ! 133: ! 134: p = optim( p ); /* change enum to ints */ ! 135: if( p->in.op != ICON ){ ! 136: uerror( "non-constant case expression"); ! 137: return; ! 138: } ! 139: if( swp == swtab ){ ! 140: uerror( "case not in switch"); ! 141: return; ! 142: } ! 143: if( swp >= &swtab[SWITSZ] ){ ! 144: cerror( "switch table overflow"); ! 145: } ! 146: swp->sval = p->tn.lval; ! 147: deflab( swp->slab = getlab() ); ! 148: ++swp; ! 149: tfree(p); ! 150: } ! 151: ! 152: adddef(){ /* add default case to switch */ ! 153: if( swtab[swx].slab >= 0 ){ ! 154: uerror( "duplicate default in switch"); ! 155: return; ! 156: } ! 157: if( swp == swtab ){ ! 158: uerror( "default not inside switch"); ! 159: return; ! 160: } ! 161: deflab( swtab[swx].slab = getlab() ); ! 162: } ! 163: ! 164: swstart(){ ! 165: /* begin a switch block */ ! 166: if( swp >= &swtab[SWITSZ] ){ ! 167: cerror( "switch table overflow"); ! 168: } ! 169: swx = swp - swtab; ! 170: swp->slab = -1; ! 171: ++swp; ! 172: } ! 173: ! 174: swend(){ /* end a switch block */ ! 175: ! 176: register struct sw *swbeg, *p, *q, *r, *r1; ! 177: CONSZ temp; ! 178: int tempi; ! 179: ! 180: swbeg = &swtab[swx+1]; ! 181: ! 182: /* sort */ ! 183: ! 184: r1 = swbeg; ! 185: r = swp-1; ! 186: ! 187: while( swbeg < r ){ ! 188: /* bubble largest to end */ ! 189: for( q=swbeg; q<r; ++q ){ ! 190: if( q->sval > (q+1)->sval ){ ! 191: /* swap */ ! 192: r1 = q+1; ! 193: temp = q->sval; ! 194: q->sval = r1->sval; ! 195: r1->sval = temp; ! 196: tempi = q->slab; ! 197: q->slab = r1->slab; ! 198: r1->slab = tempi; ! 199: } ! 200: } ! 201: r = r1; ! 202: r1 = swbeg; ! 203: } ! 204: ! 205: /* it is now sorted */ ! 206: ! 207: for( p = swbeg+1; p<swp; ++p ){ ! 208: if( p->sval == (p-1)->sval ){ ! 209: uerror( "duplicate case in switch, %d", tempi=p->sval ); ! 210: return; ! 211: } ! 212: } ! 213: ! 214: genswitch( swbeg-1, swp-swbeg ); ! 215: swp = swbeg-1; ! 216: } ! 217: short yyexca[] ={ ! 218: -1, 1, ! 219: 0, -1, ! 220: 2, 23, ! 221: 11, 23, ! 222: 50, 23, ! 223: 57, 23, ! 224: -2, 0, ! 225: -1, 19, ! 226: 56, 82, ! 227: 57, 82, ! 228: -2, 7, ! 229: -1, 24, ! 230: 56, 81, ! 231: 57, 81, ! 232: -2, 79, ! 233: -1, 26, ! 234: 56, 85, ! 235: 57, 85, ! 236: -2, 80, ! 237: -1, 32, ! 238: 52, 46, ! 239: -2, 44, ! 240: -1, 34, ! 241: 52, 38, ! 242: -2, 36, ! 243: -1, 57, ! 244: 53, 50, ! 245: 57, 50, ! 246: -2, 0, ! 247: -1, 109, ! 248: 33, 18, ! 249: 34, 18, ! 250: 35, 18, ! 251: 49, 18, ! 252: -2, 13, ! 253: -1, 280, ! 254: 33, 16, ! 255: 34, 16, ! 256: 35, 16, ! 257: 49, 16, ! 258: -2, 14, ! 259: -1, 297, ! 260: 33, 17, ! 261: 34, 17, ! 262: 35, 17, ! 263: 49, 17, ! 264: -2, 15, ! 265: }; ! 266: # define YYNPROD 187 ! 267: # define YYLAST 1228 ! 268: short yyact[]={ ! 269: ! 270: 211, 18, 262, 93, 231, 89, 87, 88, 27, 209, ! 271: 80, 200, 132, 78, 6, 147, 79, 21, 10, 9, ! 272: 14, 20, 100, 166, 51, 131, 27, 311, 96, 92, ! 273: 310, 46, 82, 81, 16, 21, 98, 110, 221, 222, ! 274: 226, 59, 230, 219, 220, 227, 228, 229, 233, 232, ! 275: 83, 75, 84, 304, 110, 256, 22, 66, 56, 223, ! 276: 231, 89, 87, 88, 27, 291, 80, 266, 112, 78, ! 277: 36, 297, 79, 21, 22, 271, 265, 133, 107, 270, ! 278: 45, 280, 212, 101, 27, 148, 152, 204, 82, 81, ! 279: 164, 24, 203, 21, 221, 222, 226, 91, 230, 219, ! 280: 220, 227, 228, 229, 233, 232, 83, 74, 84, 193, ! 281: 110, 210, 22, 40, 42, 223, 168, 169, 170, 172, ! 282: 174, 176, 178, 180, 181, 183, 185, 187, 188, 189, ! 283: 190, 191, 22, 27, 94, 133, 156, 162, 195, 17, ! 284: 19, 160, 21, 10, 9, 14, 103, 148, 99, 95, ! 285: 155, 156, 207, 96, 158, 298, 41, 43, 161, 16, ! 286: 194, 284, 197, 36, 35, 70, 77, 114, 192, 157, ! 287: 71, 136, 235, 138, 236, 38, 237, 111, 238, 39, ! 288: 239, 22, 234, 240, 73, 241, 250, 242, 163, 208, ! 289: 286, 139, 65, 250, 133, 137, 102, 48, 48, 95, ! 290: 202, 49, 49, 283, 254, 244, 245, 38, 69, 255, ! 291: 33, 39, 159, 252, 253, 206, 48, 68, 263, 31, ! 292: 49, 8, 268, 258, 259, 260, 261, 154, 264, 28, ! 293: 306, 246, 289, 278, 202, 272, 281, 277, 248, 201, ! 294: 251, 108, 198, 27, 282, 140, 141, 142, 143, 144, ! 295: 145, 53, 21, 57, 10, 9, 14, 72, 224, 64, ! 296: 300, 299, 97, 276, 275, 153, 274, 273, 153, 52, ! 297: 16, 288, 287, 201, 292, 293, 263, 295, 294, 9, ! 298: 26, 231, 89, 87, 88, 47, 10, 80, 14, 54, ! 299: 78, 22, 30, 79, 121, 279, 269, 95, 196, 301, ! 300: 60, 307, 16, 7, 113, 263, 149, 308, 285, 82, ! 301: 81, 117, 29, 57, 224, 221, 222, 226, 26, 230, ! 302: 219, 220, 227, 228, 229, 233, 232, 83, 67, 84, ! 303: 34, 110, 118, 32, 119, 225, 223, 121, 26, 118, ! 304: 123, 119, 109, 124, 121, 125, 106, 128, 105, 126, ! 305: 127, 129, 115, 122, 117, 120, 134, 50, 25, 115, ! 306: 122, 117, 120, 61, 44, 249, 4, 205, 149, 102, ! 307: 118, 90, 119, 55, 58, 121, 167, 309, 118, 165, ! 308: 119, 104, 116, 121, 130, 63, 123, 97, 62, 124, ! 309: 37, 125, 117, 128, 3, 126, 127, 129, 115, 122, ! 310: 117, 120, 2, 151, 85, 11, 12, 5, 23, 13, ! 311: 15, 218, 216, 217, 118, 249, 119, 215, 213, 121, ! 312: 214, 1, 123, 305, 0, 124, 0, 125, 116, 128, ! 313: 130, 126, 127, 129, 115, 122, 117, 120, 0, 0, ! 314: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 315: 118, 0, 119, 0, 0, 121, 0, 0, 123, 303, ! 316: 0, 124, 0, 125, 116, 128, 130, 126, 127, 129, ! 317: 115, 122, 117, 120, 0, 0, 0, 0, 0, 0, ! 318: 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, ! 319: 119, 0, 118, 121, 119, 302, 123, 121, 0, 124, ! 320: 116, 125, 130, 128, 296, 126, 127, 129, 115, 122, ! 321: 117, 120, 115, 0, 117, 120, 0, 0, 0, 0, ! 322: 0, 0, 0, 0, 0, 0, 118, 0, 119, 0, ! 323: 0, 121, 0, 0, 123, 224, 0, 124, 116, 125, ! 324: 130, 128, 0, 126, 127, 129, 115, 122, 117, 120, ! 325: 118, 0, 119, 0, 0, 121, 0, 118, 123, 119, ! 326: 0, 124, 121, 125, 0, 128, 0, 126, 127, 129, ! 327: 115, 122, 117, 120, 0, 0, 116, 290, 130, 117, ! 328: 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 329: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 330: 116, 257, 130, 118, 0, 119, 0, 0, 121, 0, ! 331: 0, 123, 0, 0, 124, 0, 125, 0, 128, 0, ! 332: 126, 127, 129, 115, 122, 117, 120, 118, 0, 119, ! 333: 0, 0, 121, 0, 0, 123, 0, 0, 124, 0, ! 334: 125, 0, 128, 243, 126, 127, 129, 115, 122, 117, ! 335: 120, 0, 247, 116, 0, 130, 0, 0, 0, 0, ! 336: 0, 0, 0, 118, 0, 119, 0, 118, 121, 119, ! 337: 0, 123, 121, 0, 124, 123, 125, 116, 128, 130, ! 338: 126, 127, 129, 115, 122, 117, 120, 115, 122, 117, ! 339: 120, 0, 0, 0, 0, 0, 0, 0, 0, 118, ! 340: 0, 119, 0, 0, 121, 0, 0, 123, 199, 0, ! 341: 124, 0, 125, 116, 128, 130, 126, 127, 129, 115, ! 342: 122, 117, 120, 118, 0, 119, 0, 0, 121, 0, ! 343: 0, 123, 0, 0, 124, 0, 125, 0, 128, 0, ! 344: 126, 127, 129, 115, 122, 117, 120, 0, 0, 116, ! 345: 0, 130, 86, 89, 87, 88, 0, 0, 80, 0, ! 346: 0, 78, 0, 0, 79, 86, 89, 87, 88, 0, ! 347: 0, 80, 0, 0, 78, 130, 0, 79, 0, 0, ! 348: 82, 81, 0, 0, 0, 0, 0, 0, 0, 0, ! 349: 0, 0, 0, 82, 81, 0, 0, 0, 83, 0, ! 350: 84, 0, 0, 86, 89, 87, 88, 0, 186, 80, ! 351: 0, 83, 78, 84, 0, 79, 86, 89, 87, 88, ! 352: 0, 184, 80, 0, 0, 78, 0, 0, 79, 0, ! 353: 0, 82, 81, 0, 0, 0, 0, 0, 0, 0, ! 354: 0, 0, 0, 0, 82, 81, 0, 0, 0, 83, ! 355: 0, 84, 0, 0, 86, 89, 87, 88, 0, 182, ! 356: 80, 0, 83, 78, 84, 0, 79, 86, 89, 87, ! 357: 88, 0, 179, 80, 0, 0, 78, 0, 0, 79, ! 358: 0, 0, 82, 81, 0, 0, 0, 0, 0, 0, ! 359: 0, 0, 0, 0, 0, 82, 81, 0, 0, 0, ! 360: 83, 0, 84, 0, 0, 86, 89, 87, 88, 0, ! 361: 177, 80, 0, 83, 78, 84, 0, 79, 86, 89, ! 362: 87, 88, 0, 175, 80, 0, 0, 78, 0, 0, ! 363: 79, 0, 0, 82, 81, 0, 0, 0, 0, 0, ! 364: 0, 0, 0, 0, 0, 0, 82, 81, 0, 0, ! 365: 0, 83, 0, 84, 0, 0, 86, 89, 87, 88, ! 366: 0, 173, 80, 0, 83, 78, 84, 0, 79, 86, ! 367: 89, 87, 88, 0, 171, 80, 0, 0, 78, 0, ! 368: 0, 79, 0, 0, 82, 81, 118, 0, 119, 0, ! 369: 0, 121, 0, 0, 123, 0, 0, 82, 81, 125, ! 370: 0, 0, 83, 0, 84, 0, 115, 122, 117, 120, ! 371: 0, 267, 0, 0, 0, 83, 0, 84, 0, 135, ! 372: 86, 89, 87, 88, 0, 0, 80, 0, 0, 78, ! 373: 0, 0, 79, 86, 89, 87, 88, 0, 0, 80, ! 374: 0, 0, 78, 0, 0, 79, 0, 0, 82, 81, ! 375: 0, 10, 0, 14, 0, 0, 0, 0, 0, 0, ! 376: 0, 82, 81, 0, 0, 0, 83, 16, 84, 0, ! 377: 0, 0, 0, 86, 89, 87, 88, 0, 0, 83, ! 378: 0, 84, 0, 76, 86, 89, 87, 88, 0, 0, ! 379: 80, 0, 0, 78, 0, 0, 79, 86, 89, 87, ! 380: 88, 82, 81, 80, 0, 0, 78, 0, 0, 79, ! 381: 0, 0, 82, 81, 0, 0, 0, 0, 0, 83, ! 382: 0, 84, 0, 0, 0, 82, 81, 0, 0, 0, ! 383: 83, 0, 84, 150, 0, 86, 89, 87, 88, 0, ! 384: 0, 80, 0, 83, 78, 84, 0, 79, 0, 0, ! 385: 0, 0, 0, 0, 118, 0, 119, 0, 0, 121, ! 386: 0, 0, 123, 82, 81, 124, 0, 125, 0, 128, ! 387: 0, 126, 127, 0, 115, 122, 117, 120, 0, 0, ! 388: 118, 83, 119, 146, 0, 121, 0, 0, 123, 0, ! 389: 0, 124, 0, 125, 0, 0, 0, 126, 0, 0, ! 390: 115, 122, 117, 120, 118, 0, 119, 0, 0, 121, ! 391: 0, 0, 123, 0, 0, 124, 0, 125, 0, 0, ! 392: 0, 0, 0, 0, 115, 122, 117, 120 }; ! 393: short yypact[]={ ! 394: ! 395: -1000, 110,-1000,-1000,-1000, 82,-1000, 253, 245,-1000, ! 396: 259,-1000,-1000, 167, 331, 158, 328,-1000, 107, 125, ! 397: -1000, 241, 241, 29, 148, -34,-1000, 219,-1000, 253, ! 398: 256, 253,-1000, 298,-1000,-1000,-1000,-1000, 208, 137, ! 399: 148, 125, 166, 157, 114,-1000,-1000,-1000, 206, 129, ! 400: 1031,-1000,-1000,-1000,-1000, 40,-1000, 6, 92,-1000, ! 401: -36, 62,-1000, -15,-1000,-1000, 122,1095,-1000,-1000, ! 402: -1000, 302,-1000,-1000, 112, 717, 967, 141,1095,1095, ! 403: 1095,1095,1095,1133,1018,1082, 218,-1000,-1000,-1000, ! 404: 174, 253, 80,-1000, 125, 147,-1000,-1000, 159, 298, ! 405: -1000,-1000, 125,-1000,-1000,-1000,-1000, 131, 33,-1000, ! 406: -1000,-1000, 717,-1000,-1000,1095,1095, 916, 903, 865, ! 407: 852, 814,1095, 801, 763, 750,1095,1095,1095,1095, ! 408: 1095, 53,-1000, 717, 967,-1000,-1000,1095, 296,-1000, ! 409: 141, 141, 141, 141, 141, 141,1018, 191, 657, 223, ! 410: -1000, 36, 717,-1000,-1000,-1000,-1000,-1000,-1000,-1000, ! 411: -1000,-1000, 95,-1000,-1000,-1000, 58, 221, 551, 717, ! 412: -1000,1095, 283,1095, 283,1095, 364,1095,-1000,1095, ! 413: 486, 333,1095, 980,1095, 661,1095,1198,1174, 621, ! 414: 717, 717, 152, 967, 53, 597,-1000, 187,1095,-1000, ! 415: 132, 189, 223,1095,-1000, 6,-1000,-1000, 2,-1000, ! 416: -1000, 544,-1000, 279, 279, 279, 279,1095, 279, 19, ! 417: 10, 954, 294,-1000, 22, 279, 217, 216,-1000, 214, ! 418: 213, 215,1095, 273, 24, 717, 717, 717, 717, 717, ! 419: 717, 717, 717,1095,-1000,-1000, 150,-1000,1071, 141, ! 420: 106,-1000, 139, 132, 717,-1000,-1000,-1000, 233,-1000, ! 421: -1000, 228, 181, 693,-1000,-1000,-1000,-1000, 520, 8, ! 422: -1000,-1000,-1000,1095,1095,1095,1095,-1000, 482,-1000, ! 423: -1000, 14,1148,-1000,-1000, 100, 211,-1000, 210, 279, ! 424: -1000,-1000, 444, 408, -4, 372,-1000,-1000,-1000, 179, ! 425: 1095,-1000,-1000,-1000,1095,-1000,-1000, 326, -27, -30, ! 426: -1000,-1000 }; ! 427: short yypgo[]={ ! 428: ! 429: 0, 421, 57, 420, 418, 417, 413, 412, 411, 410, ! 430: 409, 408, 0, 2, 166, 14, 407, 221, 406, 405, ! 431: 15, 11, 404, 3, 134, 91, 403, 402, 394, 1, ! 432: 390, 388, 385, 82, 381, 23, 9, 379, 376, 29, ! 433: 303, 374, 36, 41, 373, 371, 58, 367, 364, 21, ! 434: 363, 358, 357, 25, 12, 356, 348, 346, 342, 335, ! 435: 328 }; ! 436: short yyr1[]={ ! 437: ! 438: 0, 1, 1, 27, 27, 28, 28, 30, 28, 31, ! 439: 32, 32, 35, 35, 37, 37, 38, 38, 38, 34, ! 440: 34, 34, 16, 16, 15, 15, 15, 15, 15, 40, ! 441: 17, 17, 17, 17, 17, 18, 18, 9, 9, 41, ! 442: 41, 43, 43, 19, 19, 10, 10, 44, 44, 46, ! 443: 46, 39, 47, 39, 23, 23, 23, 23, 23, 25, ! 444: 25, 25, 25, 25, 25, 24, 24, 24, 24, 24, ! 445: 24, 24, 11, 48, 48, 48, 29, 50, 29, 51, ! 446: 51, 49, 49, 49, 49, 49, 53, 53, 54, 54, ! 447: 42, 42, 45, 45, 52, 52, 55, 33, 33, 56, ! 448: 57, 58, 36, 36, 36, 36, 36, 36, 36, 36, ! 449: 36, 36, 36, 36, 36, 36, 36, 36, 36, 59, ! 450: 59, 59, 7, 4, 3, 5, 6, 8, 60, 2, ! 451: 13, 13, 26, 26, 12, 12, 12, 12, 12, 12, ! 452: 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, ! 453: 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, ! 454: 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, ! 455: 14, 14, 14, 14, 14, 14, 14, 20, 21, 21, ! 456: 21, 21, 21, 21, 21, 22, 22 }; ! 457: short yyr2[]={ ! 458: ! 459: 0, 2, 0, 1, 1, 2, 3, 0, 4, 2, ! 460: 2, 0, 2, 0, 3, 4, 3, 4, 0, 3, ! 461: 2, 2, 1, 0, 2, 2, 1, 1, 3, 1, ! 462: 1, 2, 3, 1, 1, 5, 2, 1, 2, 1, ! 463: 3, 1, 3, 5, 2, 1, 2, 1, 3, 2, ! 464: 1, 1, 0, 4, 1, 1, 3, 2, 1, 2, ! 465: 3, 3, 4, 1, 3, 2, 3, 3, 4, 3, ! 466: 3, 2, 2, 1, 3, 1, 1, 0, 4, 1, ! 467: 1, 1, 1, 3, 6, 1, 1, 3, 1, 4, ! 468: 0, 1, 0, 1, 0, 1, 1, 1, 1, 4, ! 469: 3, 1, 2, 1, 2, 2, 2, 7, 4, 2, ! 470: 2, 2, 2, 3, 3, 1, 2, 2, 2, 2, ! 471: 3, 2, 1, 4, 3, 4, 6, 4, 0, 2, ! 472: 1, 0, 1, 3, 3, 3, 3, 3, 3, 3, ! 473: 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, ! 474: 4, 4, 4, 4, 4, 5, 3, 3, 1, 2, ! 475: 2, 2, 2, 2, 2, 2, 4, 4, 4, 2, ! 476: 3, 3, 1, 1, 1, 1, 3, 2, 0, 2, ! 477: 5, 2, 3, 4, 3, 2, 2 }; ! 478: short yychk[]={ ! 479: ! 480: -1000, -1, -27, -28, 256, -16, -15, -40, -17, 34, ! 481: 33, -19, -18, -10, 35, -9, 49, 57, -29, -24, ! 482: -49, 11, 50, -11, -25, -51, 256, 2, -17, -40, ! 483: 33, 52, 2, 52, 2, 57, 56, -30, 50, 54, ! 484: -25, -24, -25, -24, -48, 51, 2, 256, 50, 54, ! 485: -52, 58, 50, -17, 33, -44, -46, -17, -41, -43, ! 486: 2, -50, -31, -32, 51, 55, -2, -60, 51, 51, ! 487: 51, 56, 51, 55, -2, -12, 52, -14, 11, 14, ! 488: 8, 31, 30, 48, 50, -22, 2, 4, 5, 3, ! 489: -45, 57, -39, -23, -24, -25, 22, 256, -42, 56, ! 490: 58, -49, -24, -33, -34, -56, -57, -15, 256, -58, ! 491: 52, 55, -12, 2, 55, 26, 56, 28, 6, 8, ! 492: 29, 11, 27, 14, 17, 19, 23, 24, 21, 25, ! 493: 58, -53, -54, -12, -55, 52, 30, 54, 32, 50, ! 494: -14, -14, -14, -14, -14, -14, 50, -20, -12, -17, ! 495: 51, -26, -12, 50, 53, -46, 56, 22, -2, 53, ! 496: -43, -2, -39, 57, 57, -37, -35, -38, -12, -12, ! 497: -12, 58, -12, 58, -12, 58, -12, 58, -12, 58, ! 498: -12, -12, 58, -12, 58, -12, 58, -12, -12, -12, ! 499: -12, -12, -42, 56, -53, -12, 2, -20, 51, 51, ! 500: -21, 50, 11, 56, 51, -47, -2, 57, -35, -36, ! 501: 53, -12, -33, -4, -3, -5, -7, -6, -8, 41, ! 502: 42, 36, 37, 57, 256, -59, 38, 43, 44, 45, ! 503: 40, 2, 47, 46, -15, -12, -12, -12, -12, -12, ! 504: -12, -12, -12, 22, 53, -54, -42, 55, 51, -14, ! 505: 54, 51, -21, -21, -12, -23, 53, 57, -36, -36, ! 506: -36, -36, -13, -12, -36, 57, 57, 57, -12, 2, ! 507: 57, 53, -36, 50, 50, 50, 50, 22, -12, 22, ! 508: 57, -29, -12, 53, 55, -2, 51, 39, 43, 51, ! 509: 57, 57, -12, -12, -13, -12, 22, 57, 55, 50, ! 510: 50, -36, 51, 51, 57, 51, 51, -12, -13, 51, ! 511: 57, 57 }; ! 512: short yydef[]={ ! 513: ! 514: 2, -2, 1, 3, 4, 0, 22, 26, 27, 29, ! 515: 30, 33, 34, 0, 45, 0, 37, 5, 0, -2, ! 516: 76, 0, 0, 0, -2, 94, -2, 63, 24, 25, ! 517: 31, 0, -2, 0, -2, 6, 77, 11, 0, 128, ! 518: 59, 65, 0, 0, 0, 71, 73, 75, 0, 128, ! 519: 0, 95, 72, 28, 32, 92, 47, -2, 90, 39, ! 520: 41, 0, 8, 0, 66, 67, 0, 0, 64, 69, ! 521: 70, 0, 60, 61, 0, 83, 0, 158, 0, 0, ! 522: 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, ! 523: 0, 93, 49, 51, 54, 55, 128, 58, 0, 91, ! 524: 128, 78, 82, 9, 10, 97, 98, 0, 0, -2, ! 525: 101, 68, 129, 74, 62, 0, 0, 0, 0, 0, ! 526: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 527: 0, 90, 86, 88, 0, 96, 159, 0, 0, 186, ! 528: 160, 161, 162, 163, 164, 165, 0, 0, 0, 178, ! 529: 169, 0, 132, 185, 43, 48, 52, 128, 57, 35, ! 530: 40, 42, 0, 20, 21, 13, 0, 0, 134, 135, ! 531: 136, 0, 137, 0, 138, 0, 139, 0, 140, 0, ! 532: 141, 142, 0, 143, 0, 144, 0, 145, 146, 0, ! 533: 156, 157, 0, 91, 90, 0, 171, 0, 0, 176, ! 534: 177, 178, 178, 0, 170, 0, 56, 19, 0, 12, ! 535: 100, 0, 103, 0, 0, 0, 0, 131, 0, 0, ! 536: 0, 0, 0, 115, 0, 0, 0, 0, 122, 0, ! 537: 0, 172, 0, 0, 0, 148, 149, 150, 151, 147, ! 538: 152, 153, 154, 0, 84, 87, 0, 168, 167, 166, ! 539: 128, 179, 0, 181, 133, 53, 99, 102, 104, 105, ! 540: 106, 0, 0, 130, 109, 110, 111, 112, 0, 0, ! 541: 116, 117, 118, 0, 0, 131, 0, 119, 0, 121, ! 542: -2, 0, 155, 89, 182, 0, 184, 124, 0, 0, ! 543: 113, 114, 0, 0, 0, 0, 120, -2, 183, 0, ! 544: 0, 108, 123, 125, 131, 127, 180, 0, 0, 0, ! 545: 126, 107 }; ! 546: # ifdef YYDEBUG ! 547: # include "y.debug" ! 548: # endif ! 549: ! 550: # define YYFLAG -1000 ! 551: # define YYERROR goto yyerrlab ! 552: # define YYACCEPT return(0) ! 553: # define YYABORT return(1) ! 554: ! 555: /* parser for yacc output */ ! 556: ! 557: #ifdef YYDEBUG ! 558: int yydebug = 0; /* 1 for debugging */ ! 559: #endif ! 560: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ ! 561: int yychar = -1; /* current input token number */ ! 562: int yynerrs = 0; /* number of errors */ ! 563: short yyerrflag = 0; /* error recovery flag */ ! 564: ! 565: yyparse() ! 566: { short yys[YYMAXDEPTH]; ! 567: int yyj, yym; ! 568: register YYSTYPE *yypvt; ! 569: register int yystate, yyn; ! 570: register short *yyps; ! 571: register YYSTYPE *yypv; ! 572: register short *yyxi; ! 573: ! 574: yystate = 0; ! 575: yychar = -1; ! 576: yynerrs = 0; ! 577: yyerrflag = 0; ! 578: yyps= &yys[-1]; ! 579: yypv= &yyv[-1]; ! 580: ! 581: yystack: /* put a state and value onto the stack */ ! 582: #ifdef YYDEBUG ! 583: if(yydebug >= 3) ! 584: if(yychar < 0 || yytoknames[yychar] == 0) ! 585: printf("char %d in %s", yychar, yystates[yystate]); ! 586: else ! 587: printf("%s in %s", yytoknames[yychar], yystates[yystate]); ! 588: #endif ! 589: if( ++yyps >= &yys[YYMAXDEPTH] ) { ! 590: yyerror( "yacc stack overflow" ); ! 591: return(1); ! 592: } ! 593: *yyps = yystate; ! 594: ++yypv; ! 595: *yypv = yyval; ! 596: yynewstate: ! 597: yyn = yypact[yystate]; ! 598: if(yyn <= YYFLAG) goto yydefault; /* simple state */ ! 599: if(yychar<0) { ! 600: yychar = yylex(); ! 601: #ifdef YYDEBUG ! 602: if(yydebug >= 2) { ! 603: if(yychar <= 0) ! 604: printf("lex EOF\n"); ! 605: else if(yytoknames[yychar]) ! 606: printf("lex %s\n", yytoknames[yychar]); ! 607: else ! 608: printf("lex (%c)\n", yychar); ! 609: } ! 610: #endif ! 611: if(yychar < 0) ! 612: yychar = 0; ! 613: } ! 614: if((yyn += yychar) < 0 || yyn >= YYLAST) ! 615: goto yydefault; ! 616: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ ! 617: yychar = -1; ! 618: yyval = yylval; ! 619: yystate = yyn; ! 620: if( yyerrflag > 0 ) --yyerrflag; ! 621: goto yystack; ! 622: } ! 623: yydefault: ! 624: /* default state action */ ! 625: if( (yyn=yydef[yystate]) == -2 ) { ! 626: if(yychar < 0) { ! 627: yychar = yylex(); ! 628: #ifdef YYDEBUG ! 629: if(yydebug >= 2) ! 630: if(yychar < 0) ! 631: printf("lex EOF\n"); ! 632: else ! 633: printf("lex %s\n", yytoknames[yychar]); ! 634: #endif ! 635: if(yychar < 0) ! 636: yychar = 0; ! 637: } ! 638: /* look through exception table */ ! 639: for(yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate); ! 640: yyxi += 2 ) ; /* VOID */ ! 641: while( *(yyxi+=2) >= 0 ){ ! 642: if( *yyxi == yychar ) break; ! 643: } ! 644: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ ! 645: } ! 646: if( yyn == 0 ){ /* error */ ! 647: /* error ... attempt to resume parsing */ ! 648: switch( yyerrflag ){ ! 649: case 0: /* brand new error */ ! 650: #ifdef YYDEBUG ! 651: yyerror("syntax error\n%s", yystates[yystate]); ! 652: if(yytoknames[yychar]) ! 653: yyerror("saw %s\n", yytoknames[yychar]); ! 654: else if(yychar >= ' ' && yychar < '\177') ! 655: yyerror("saw `%c'\n", yychar); ! 656: else if(yychar == 0) ! 657: yyerror("saw EOF\n"); ! 658: else ! 659: yyerror("saw char 0%o\n", yychar); ! 660: #else ! 661: yyerror( "syntax error" ); ! 662: #endif ! 663: yyerrlab: ! 664: ++yynerrs; ! 665: case 1: ! 666: case 2: /* incompletely recovered error ... try again */ ! 667: yyerrflag = 3; ! 668: /* find a state where "error" is a legal shift action */ ! 669: while ( yyps >= yys ) { ! 670: yyn = yypact[*yyps] + YYERRCODE; ! 671: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ ! 672: yystate = yyact[yyn]; /* simulate a shift of "error" */ ! 673: goto yystack; ! 674: } ! 675: yyn = yypact[*yyps]; ! 676: /* the current yyps has no shift onn "error", pop stack */ ! 677: #ifdef YYDEBUG ! 678: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] ); ! 679: #endif ! 680: --yyps; ! 681: --yypv; ! 682: } ! 683: /* there is no state on the stack with an error shift ... abort */ ! 684: yyabort: ! 685: return(1); ! 686: case 3: /* no shift yet; clobber input char */ ! 687: #ifdef YYDEBUG ! 688: if( yydebug ) { ! 689: printf("error recovery discards "); ! 690: if(yytoknames[yychar]) ! 691: printf("%s\n", yytoknames[yychar]); ! 692: else if(yychar >= ' ' && yychar < '\177') ! 693: printf("`%c'\n", yychar); ! 694: else if(yychar == 0) ! 695: printf("EOF\n"); ! 696: else ! 697: printf("char 0%o\n", yychar); ! 698: } ! 699: #endif ! 700: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ ! 701: yychar = -1; ! 702: goto yynewstate; /* try again in the same state */ ! 703: } ! 704: } ! 705: /* reduction by production yyn */ ! 706: #ifdef YYDEBUG ! 707: if(yydebug) { char *s; ! 708: printf("reduce %d in:\n\t", yyn); ! 709: for(s = yystates[yystate]; *s; s++) { ! 710: putchar(*s); ! 711: if(*s == '\n' && *(s+1)) ! 712: putchar('\t'); ! 713: } ! 714: } ! 715: #endif ! 716: yyps -= yyr2[yyn]; ! 717: yypvt = yypv; ! 718: yypv -= yyr2[yyn]; ! 719: yyval = yypv[1]; ! 720: yym=yyn; ! 721: /* consult goto table to find next state */ ! 722: yyn = yyr1[yyn]; ! 723: yyj = yypgo[yyn] + *yyps + 1; ! 724: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; ! 725: switch(yym){ ! 726: ! 727: case 2: ! 728: # line 137 "../pcc1/mip/cgram.y" ! 729: ftnend(); break; ! 730: case 3: ! 731: # line 140 "../pcc1/mip/cgram.y" ! 732: { curclass = SNULL; blevel = 0; } break; ! 733: case 4: ! 734: # line 142 "../pcc1/mip/cgram.y" ! 735: { curclass = SNULL; blevel = 0; } break; ! 736: case 5: ! 737: # line 146 "../pcc1/mip/cgram.y" ! 738: { yypvt[-1].nodep->in.op = FREE; } break; ! 739: case 6: ! 740: # line 148 "../pcc1/mip/cgram.y" ! 741: { yypvt[-2].nodep->in.op = FREE; } break; ! 742: case 7: ! 743: # line 149 "../pcc1/mip/cgram.y" ! 744: { ! 745: defid( tymerge(yypvt[-1].nodep,yypvt[-0].nodep), curclass==STATIC?STATIC:EXTDEF ); ! 746: #ifndef LINT ! 747: pfstab(stab[yypvt[-0].nodep->tn.rval].sname); ! 748: #endif ! 749: } break; ! 750: case 8: ! 751: # line 155 "../pcc1/mip/cgram.y" ! 752: { ! 753: if( blevel ) cerror( "function level error" ); ! 754: if( reached ) retstat |= NRETVAL; ! 755: yypvt[-3].nodep->in.op = FREE; ! 756: ftnend(); ! 757: } break; ! 758: case 11: ! 759: # line 166 "../pcc1/mip/cgram.y" ! 760: { blevel = 1; } break; ! 761: case 13: ! 762: # line 171 "../pcc1/mip/cgram.y" ! 763: { bccode(); ! 764: locctr(PROG); ! 765: } break; ! 766: case 14: ! 767: # line 177 "../pcc1/mip/cgram.y" ! 768: { yypvt[-1].nodep->in.op = FREE; ! 769: #ifndef LINT ! 770: plcstab(blevel); ! 771: #endif ! 772: } break; ! 773: case 15: ! 774: # line 183 "../pcc1/mip/cgram.y" ! 775: { yypvt[-2].nodep->in.op = FREE; ! 776: #ifndef LINT ! 777: plcstab(blevel); ! 778: #endif ! 779: } break; ! 780: case 16: ! 781: # line 191 "../pcc1/mip/cgram.y" ! 782: { yypvt[-1].nodep->in.op = FREE; } break; ! 783: case 17: ! 784: # line 193 "../pcc1/mip/cgram.y" ! 785: { yypvt[-2].nodep->in.op = FREE; } break; ! 786: case 19: ! 787: # line 197 "../pcc1/mip/cgram.y" ! 788: { curclass = SNULL; yypvt[-2].nodep->in.op = FREE; } break; ! 789: case 20: ! 790: # line 199 "../pcc1/mip/cgram.y" ! 791: { curclass = SNULL; yypvt[-1].nodep->in.op = FREE; } break; ! 792: case 21: ! 793: # line 201 "../pcc1/mip/cgram.y" ! 794: { curclass = SNULL; } break; ! 795: case 23: ! 796: # line 205 "../pcc1/mip/cgram.y" ! 797: { yyval.nodep = mkty(INT,0,INT); curclass = SNULL; } break; ! 798: case 24: ! 799: # line 208 "../pcc1/mip/cgram.y" ! 800: { yyval.nodep = yypvt[-0].nodep; } break; ! 801: case 26: ! 802: # line 211 "../pcc1/mip/cgram.y" ! 803: { yyval.nodep = mkty(INT,0,INT); } break; ! 804: case 27: ! 805: # line 213 "../pcc1/mip/cgram.y" ! 806: { curclass = SNULL ; } break; ! 807: case 28: ! 808: # line 215 "../pcc1/mip/cgram.y" ! 809: { yypvt[-2].nodep->in.type = types( yypvt[-2].nodep->in.type, yypvt[-0].nodep->in.type, UNDEF ); ! 810: yypvt[-0].nodep->in.op = FREE; ! 811: } break; ! 812: case 29: ! 813: # line 222 "../pcc1/mip/cgram.y" ! 814: { curclass = yypvt[-0].intval; } break; ! 815: case 31: ! 816: # line 227 "../pcc1/mip/cgram.y" ! 817: { yypvt[-1].nodep->in.type = types( yypvt[-1].nodep->in.type, yypvt[-0].nodep->in.type, UNDEF ); ! 818: yypvt[-0].nodep->in.op = FREE; ! 819: } break; ! 820: case 32: ! 821: # line 231 "../pcc1/mip/cgram.y" ! 822: { yypvt[-2].nodep->in.type = types( yypvt[-2].nodep->in.type, yypvt[-1].nodep->in.type, yypvt[-0].nodep->in.type ); ! 823: yypvt[-1].nodep->in.op = yypvt[-0].nodep->in.op = FREE; ! 824: } break; ! 825: case 35: ! 826: # line 239 "../pcc1/mip/cgram.y" ! 827: { yyval.nodep = dclstruct(yypvt[-4].intval); } break; ! 828: case 36: ! 829: # line 241 "../pcc1/mip/cgram.y" ! 830: { yyval.nodep = rstruct(yypvt[-0].intval,0); stwart = instruct; } break; ! 831: case 37: ! 832: # line 245 "../pcc1/mip/cgram.y" ! 833: { yyval.intval = bstruct(-1,0); stwart = SEENAME; } break; ! 834: case 38: ! 835: # line 247 "../pcc1/mip/cgram.y" ! 836: { yyval.intval = bstruct(yypvt[-0].intval,0); stwart = SEENAME; } break; ! 837: case 41: ! 838: # line 255 "../pcc1/mip/cgram.y" ! 839: { moedef( yypvt[-0].intval ); } break; ! 840: case 42: ! 841: # line 257 "../pcc1/mip/cgram.y" ! 842: { strucoff = yypvt[-0].intval; moedef( yypvt[-2].intval ); } break; ! 843: case 43: ! 844: # line 261 "../pcc1/mip/cgram.y" ! 845: { yyval.nodep = dclstruct(yypvt[-4].intval); } break; ! 846: case 44: ! 847: # line 263 "../pcc1/mip/cgram.y" ! 848: { yyval.nodep = rstruct(yypvt[-0].intval,yypvt[-1].intval); } break; ! 849: case 45: ! 850: # line 267 "../pcc1/mip/cgram.y" ! 851: { yyval.intval = bstruct(-1,yypvt[-0].intval); stwart=0; } break; ! 852: case 46: ! 853: # line 269 "../pcc1/mip/cgram.y" ! 854: { yyval.intval = bstruct(yypvt[-0].intval,yypvt[-1].intval); stwart=0; } break; ! 855: case 49: ! 856: # line 277 "../pcc1/mip/cgram.y" ! 857: { curclass = SNULL; stwart=0; yypvt[-1].nodep->in.op = FREE; } break; ! 858: case 50: ! 859: # line 279 "../pcc1/mip/cgram.y" ! 860: { if( curclass != MOU ){ ! 861: curclass = SNULL; ! 862: } ! 863: else { ! 864: sprintf( fakename, "$%dFAKE", fake++ ); ! 865: #ifdef FLEXSTRINGS ! 866: /* No need to hash this, we won't look it up */ ! 867: defid( tymerge(yypvt[-0].nodep, bdty(NAME,NIL,lookup( savestr(fakename), SMOS ))), curclass ); ! 868: #else ! 869: defid( tymerge(yypvt[-0].nodep, bdty(NAME,NIL,lookup( fakename, SMOS ))), curclass ); ! 870: #endif ! 871: werror("structure typed union member must be named"); ! 872: } ! 873: stwart = 0; ! 874: yypvt[-0].nodep->in.op = FREE; ! 875: } break; ! 876: case 51: ! 877: # line 299 "../pcc1/mip/cgram.y" ! 878: { defid( tymerge(yypvt[-1].nodep,yypvt[-0].nodep), curclass); stwart = instruct; } break; ! 879: case 52: ! 880: # line 300 "../pcc1/mip/cgram.y" ! 881: {yyval.nodep=yypvt[-2].nodep;} break; ! 882: case 53: ! 883: # line 301 "../pcc1/mip/cgram.y" ! 884: { defid( tymerge(yypvt[-4].nodep,yypvt[-0].nodep), curclass); stwart = instruct; } break; ! 885: case 56: ! 886: # line 307 "../pcc1/mip/cgram.y" ! 887: { if( !(instruct&INSTRUCT) ) uerror( "field outside of structure" ); ! 888: if( yypvt[-0].intval<0 || yypvt[-0].intval >= FIELD ){ ! 889: uerror( "illegal field size" ); ! 890: yypvt[-0].intval = 1; ! 891: } ! 892: defid( tymerge(yypvt[-3].nodep,yypvt[-2].nodep), FIELD|yypvt[-0].intval ); ! 893: yyval.nodep = NIL; ! 894: } break; ! 895: case 57: ! 896: # line 317 "../pcc1/mip/cgram.y" ! 897: { if( !(instruct&INSTRUCT) ) uerror( "field outside of structure" ); ! 898: falloc( stab, yypvt[-0].intval, -1, yypvt[-2].nodep ); /* alignment or hole */ ! 899: yyval.nodep = NIL; ! 900: } break; ! 901: case 58: ! 902: # line 322 "../pcc1/mip/cgram.y" ! 903: { yyval.nodep = NIL; } break; ! 904: case 59: ! 905: # line 327 "../pcc1/mip/cgram.y" ! 906: { umul: ! 907: yyval.nodep = bdty( UNARY MUL, yypvt[-0].nodep, 0 ); } break; ! 908: case 60: ! 909: # line 330 "../pcc1/mip/cgram.y" ! 910: { uftn: ! 911: yyval.nodep = bdty( UNARY CALL, yypvt[-2].nodep, 0 ); } break; ! 912: case 61: ! 913: # line 333 "../pcc1/mip/cgram.y" ! 914: { uary: ! 915: yyval.nodep = bdty( LB, yypvt[-2].nodep, 0 ); } break; ! 916: case 62: ! 917: # line 336 "../pcc1/mip/cgram.y" ! 918: { bary: ! 919: if( (int)yypvt[-1].intval <= 0 ) werror( "zero or negative subscript" ); ! 920: yyval.nodep = bdty( LB, yypvt[-3].nodep, yypvt[-1].intval ); } break; ! 921: case 63: ! 922: # line 340 "../pcc1/mip/cgram.y" ! 923: { yyval.nodep = bdty( NAME, NIL, yypvt[-0].intval ); } break; ! 924: case 64: ! 925: # line 342 "../pcc1/mip/cgram.y" ! 926: { yyval.nodep=yypvt[-1].nodep; } break; ! 927: case 65: ! 928: # line 345 "../pcc1/mip/cgram.y" ! 929: { goto umul; } break; ! 930: case 66: ! 931: # line 347 "../pcc1/mip/cgram.y" ! 932: { goto uftn; } break; ! 933: case 67: ! 934: # line 349 "../pcc1/mip/cgram.y" ! 935: { goto uary; } break; ! 936: case 68: ! 937: # line 351 "../pcc1/mip/cgram.y" ! 938: { goto bary; } break; ! 939: case 69: ! 940: # line 353 "../pcc1/mip/cgram.y" ! 941: { yyval.nodep = yypvt[-1].nodep; } break; ! 942: case 70: ! 943: # line 355 "../pcc1/mip/cgram.y" ! 944: { ! 945: if( blevel!=0 ) uerror("function declaration in bad context"); ! 946: yyval.nodep = bdty( UNARY CALL, bdty(NAME,NIL,yypvt[-2].intval), 0 ); ! 947: stwart = 0; ! 948: } break; ! 949: case 71: ! 950: # line 361 "../pcc1/mip/cgram.y" ! 951: { ! 952: yyval.nodep = bdty( UNARY CALL, bdty(NAME,NIL,yypvt[-1].intval), 0 ); ! 953: stwart = 0; ! 954: } break; ! 955: case 72: ! 956: # line 368 "../pcc1/mip/cgram.y" ! 957: { ! 958: /* turn off typedefs for argument names */ ! 959: stwart = SEENAME; ! 960: if( stab[yypvt[-1].intval].sclass == SNULL ) ! 961: stab[yypvt[-1].intval].stype = FTN; ! 962: } break; ! 963: case 73: ! 964: # line 377 "../pcc1/mip/cgram.y" ! 965: { ftnarg( yypvt[-0].intval ); stwart = SEENAME; } break; ! 966: case 74: ! 967: # line 379 "../pcc1/mip/cgram.y" ! 968: { ftnarg( yypvt[-0].intval ); stwart = SEENAME; } break; ! 969: case 77: ! 970: # line 385 "../pcc1/mip/cgram.y" ! 971: {yyval.nodep=yypvt[-2].nodep;} break; ! 972: case 79: ! 973: # line 389 "../pcc1/mip/cgram.y" ! 974: { defid( yypvt[-0].nodep = tymerge(yypvt[-1].nodep,yypvt[-0].nodep), curclass); ! 975: beginit(yypvt[-0].nodep->tn.rval); ! 976: } break; ! 977: case 81: ! 978: # line 396 "../pcc1/mip/cgram.y" ! 979: { nidcl( tymerge(yypvt[-1].nodep,yypvt[-0].nodep) ); } break; ! 980: case 82: ! 981: # line 398 "../pcc1/mip/cgram.y" ! 982: { defid( tymerge(yypvt[-1].nodep,yypvt[-0].nodep), uclass(curclass) ); ! 983: } break; ! 984: case 83: ! 985: # line 402 "../pcc1/mip/cgram.y" ! 986: { doinit( yypvt[-0].nodep ); ! 987: endinit(); } break; ! 988: case 84: ! 989: # line 405 "../pcc1/mip/cgram.y" ! 990: { endinit(); } break; ! 991: case 88: ! 992: # line 415 "../pcc1/mip/cgram.y" ! 993: { doinit( yypvt[-0].nodep ); } break; ! 994: case 89: ! 995: # line 417 "../pcc1/mip/cgram.y" ! 996: { irbrace(); } break; ! 997: case 94: ! 998: # line 429 "../pcc1/mip/cgram.y" ! 999: { werror( "old-fashioned initialization: use =" ); } break; ! 1000: case 96: ! 1001: # line 434 "../pcc1/mip/cgram.y" ! 1002: { ilbrace(); } break; ! 1003: case 99: ! 1004: # line 444 "../pcc1/mip/cgram.y" ! 1005: { ! 1006: #ifndef LINT ! 1007: prcstab(blevel); ! 1008: #endif ! 1009: --blevel; ! 1010: if( blevel == 1 ) blevel = 0; ! 1011: clearst( blevel ); ! 1012: checkst( blevel ); ! 1013: autooff = *--psavbc; ! 1014: regvar = *--psavbc; ! 1015: } break; ! 1016: case 100: ! 1017: # line 458 "../pcc1/mip/cgram.y" ! 1018: { --blevel; ! 1019: if( blevel == 1 ) blevel = 0; ! 1020: clearst( blevel ); ! 1021: checkst( blevel ); ! 1022: autooff = *--psavbc; ! 1023: regvar = *--psavbc; ! 1024: } break; ! 1025: case 101: ! 1026: # line 468 "../pcc1/mip/cgram.y" ! 1027: { if( blevel == 1 ) dclargs(); ! 1028: ++blevel; ! 1029: if( psavbc > &asavbc[BCSZ-2] ) cerror( "nesting too deep" ); ! 1030: *psavbc++ = regvar; ! 1031: *psavbc++ = autooff; ! 1032: } break; ! 1033: case 102: ! 1034: # line 477 "../pcc1/mip/cgram.y" ! 1035: { ecomp( yypvt[-1].nodep ); } break; ! 1036: case 104: ! 1037: # line 480 "../pcc1/mip/cgram.y" ! 1038: { deflab(yypvt[-1].intval); ! 1039: reached = 1; ! 1040: } break; ! 1041: case 105: ! 1042: # line 484 "../pcc1/mip/cgram.y" ! 1043: { if( yypvt[-1].intval != NOLAB ){ ! 1044: deflab( yypvt[-1].intval ); ! 1045: reached = 1; ! 1046: } ! 1047: } break; ! 1048: case 106: ! 1049: # line 490 "../pcc1/mip/cgram.y" ! 1050: { branch( contlab ); ! 1051: deflab( brklab ); ! 1052: if( (flostat&FBRK) || !(flostat&FLOOP)) reached = 1; ! 1053: else reached = 0; ! 1054: resetbc(0); ! 1055: } break; ! 1056: case 107: ! 1057: # line 497 "../pcc1/mip/cgram.y" ! 1058: { deflab( contlab ); ! 1059: if( flostat & FCONT ) reached = 1; ! 1060: ecomp( buildtree( CBRANCH, buildtree( NOT, yypvt[-2].nodep, NIL ), bcon( yypvt[-6].intval ) ) ); ! 1061: deflab( brklab ); ! 1062: reached = 1; ! 1063: resetbc(0); ! 1064: } break; ! 1065: case 108: ! 1066: # line 505 "../pcc1/mip/cgram.y" ! 1067: { deflab( contlab ); ! 1068: if( flostat&FCONT ) reached = 1; ! 1069: if( yypvt[-2].nodep ) ecomp( yypvt[-2].nodep ); ! 1070: branch( yypvt[-3].intval ); ! 1071: deflab( brklab ); ! 1072: if( (flostat&FBRK) || !(flostat&FLOOP) ) reached = 1; ! 1073: else reached = 0; ! 1074: resetbc(0); ! 1075: } break; ! 1076: case 109: ! 1077: # line 515 "../pcc1/mip/cgram.y" ! 1078: { if( reached ) branch( brklab ); ! 1079: deflab( yypvt[-1].intval ); ! 1080: swend(); ! 1081: deflab(brklab); ! 1082: if( (flostat&FBRK) || !(flostat&FDEF) ) reached = 1; ! 1083: resetbc(FCONT); ! 1084: } break; ! 1085: case 110: ! 1086: # line 523 "../pcc1/mip/cgram.y" ! 1087: { if( brklab == NOLAB ) uerror( "illegal break"); ! 1088: else if(reached) branch( brklab ); ! 1089: flostat |= FBRK; ! 1090: if( brkflag ) goto rch; ! 1091: reached = 0; ! 1092: } break; ! 1093: case 111: ! 1094: # line 530 "../pcc1/mip/cgram.y" ! 1095: { if( contlab == NOLAB ) uerror( "illegal continue"); ! 1096: else branch( contlab ); ! 1097: flostat |= FCONT; ! 1098: goto rch; ! 1099: } break; ! 1100: case 112: ! 1101: # line 536 "../pcc1/mip/cgram.y" ! 1102: { retstat |= NRETVAL; ! 1103: branch( retlab ); ! 1104: rch: ! 1105: if( !reached ) werror( "statement not reached"); ! 1106: reached = 0; ! 1107: } break; ! 1108: case 113: ! 1109: # line 543 "../pcc1/mip/cgram.y" ! 1110: { register NODE *temp; ! 1111: idname = curftn; ! 1112: temp = buildtree( NAME, NIL, NIL ); ! 1113: if(temp->in.type == TVOID) ! 1114: uerror("void function %s cannot return value", ! 1115: stab[idname].sname); ! 1116: temp->in.type = DECREF( temp->in.type ); ! 1117: temp = buildtree( RETURN, temp, yypvt[-1].nodep ); ! 1118: /* now, we have the type of the RHS correct */ ! 1119: temp->in.left->in.op = FREE; ! 1120: temp->in.op = FREE; ! 1121: ecomp( buildtree( FORCE, temp->in.right, NIL ) ); ! 1122: retstat |= RETVAL; ! 1123: branch( retlab ); ! 1124: reached = 0; ! 1125: } break; ! 1126: case 114: ! 1127: # line 560 "../pcc1/mip/cgram.y" ! 1128: { register NODE *q; ! 1129: q = block( FREE, NIL, NIL, INT|ARY, 0, INT ); ! 1130: q->tn.rval = idname = yypvt[-1].intval; ! 1131: defid( q, ULABEL ); ! 1132: stab[idname].suse = -lineno; ! 1133: branch( stab[idname].offset ); ! 1134: goto rch; ! 1135: } break; ! 1136: case 119: ! 1137: # line 574 "../pcc1/mip/cgram.y" ! 1138: { register NODE *q; ! 1139: q = block( FREE, NIL, NIL, INT|ARY, 0, LABEL ); ! 1140: q->tn.rval = yypvt[-1].intval; ! 1141: defid( q, LABEL ); ! 1142: reached = 1; ! 1143: } break; ! 1144: case 120: ! 1145: # line 581 "../pcc1/mip/cgram.y" ! 1146: { addcase(yypvt[-1].nodep); ! 1147: reached = 1; ! 1148: } break; ! 1149: case 121: ! 1150: # line 585 "../pcc1/mip/cgram.y" ! 1151: { reached = 1; ! 1152: adddef(); ! 1153: flostat |= FDEF; ! 1154: } break; ! 1155: case 122: ! 1156: # line 591 "../pcc1/mip/cgram.y" ! 1157: { savebc(); ! 1158: if( !reached ) werror( "loop not entered at top"); ! 1159: brklab = getlab(); ! 1160: contlab = getlab(); ! 1161: deflab( yyval.intval = getlab() ); ! 1162: reached = 1; ! 1163: } break; ! 1164: case 123: ! 1165: # line 600 "../pcc1/mip/cgram.y" ! 1166: { ecomp( buildtree( CBRANCH, yypvt[-1].nodep, bcon( yyval.intval=getlab()) ) ) ; ! 1167: reached = 1; ! 1168: } break; ! 1169: case 124: ! 1170: # line 605 "../pcc1/mip/cgram.y" ! 1171: { if( reached ) branch( yyval.intval = getlab() ); ! 1172: else yyval.intval = NOLAB; ! 1173: deflab( yypvt[-2].intval ); ! 1174: reached = 1; ! 1175: } break; ! 1176: case 125: ! 1177: # line 613 "../pcc1/mip/cgram.y" ! 1178: { savebc(); ! 1179: if( !reached ) werror( "loop not entered at top"); ! 1180: if( yypvt[-1].nodep->in.op == ICON && yypvt[-1].nodep->tn.lval != 0 ) flostat = FLOOP; ! 1181: deflab( contlab = getlab() ); ! 1182: reached = 1; ! 1183: brklab = getlab(); ! 1184: if( flostat == FLOOP ) tfree( yypvt[-1].nodep ); ! 1185: else ecomp( buildtree( CBRANCH, yypvt[-1].nodep, bcon( brklab) ) ); ! 1186: } break; ! 1187: case 126: ! 1188: # line 624 "../pcc1/mip/cgram.y" ! 1189: { if( yypvt[-3].nodep ) ecomp( yypvt[-3].nodep ); ! 1190: else if( !reached ) werror( "loop not entered at top"); ! 1191: savebc(); ! 1192: contlab = getlab(); ! 1193: brklab = getlab(); ! 1194: deflab( yyval.intval = getlab() ); ! 1195: reached = 1; ! 1196: if( yypvt[-1].nodep ) ecomp( buildtree( CBRANCH, yypvt[-1].nodep, bcon( brklab) ) ); ! 1197: else flostat |= FLOOP; ! 1198: } break; ! 1199: case 127: ! 1200: # line 636 "../pcc1/mip/cgram.y" ! 1201: { savebc(); ! 1202: brklab = getlab(); ! 1203: ecomp( buildtree( FORCE, yypvt[-1].nodep, NIL ) ); ! 1204: branch( yyval.intval = getlab() ); ! 1205: swstart(); ! 1206: reached = 0; ! 1207: } break; ! 1208: case 128: ! 1209: # line 645 "../pcc1/mip/cgram.y" ! 1210: { yyval.intval=instruct; stwart=instruct=0; } break; ! 1211: case 129: ! 1212: # line 647 "../pcc1/mip/cgram.y" ! 1213: { yyval.intval = icons( yypvt[-0].nodep ); instruct=yypvt[-1].intval; } break; ! 1214: case 131: ! 1215: # line 651 "../pcc1/mip/cgram.y" ! 1216: { yyval.nodep=0; } break; ! 1217: case 133: ! 1218: # line 656 "../pcc1/mip/cgram.y" ! 1219: { goto bop; } break; ! 1220: case 134: ! 1221: # line 660 "../pcc1/mip/cgram.y" ! 1222: { ! 1223: preconf: ! 1224: if( yychar==RELOP||yychar==EQUOP||yychar==AND||yychar==OR||yychar==ER ){ ! 1225: precplaint: ! 1226: if( hflag ) werror( "precedence confusion possible: parenthesize!" ); ! 1227: } ! 1228: bop: ! 1229: yyval.nodep = buildtree( yypvt[-1].intval, yypvt[-2].nodep, yypvt[-0].nodep ); ! 1230: } break; ! 1231: case 135: ! 1232: # line 670 "../pcc1/mip/cgram.y" ! 1233: { yypvt[-1].intval = COMOP; ! 1234: goto bop; ! 1235: } break; ! 1236: case 136: ! 1237: # line 674 "../pcc1/mip/cgram.y" ! 1238: { goto bop; } break; ! 1239: case 137: ! 1240: # line 676 "../pcc1/mip/cgram.y" ! 1241: { if(yychar==SHIFTOP) goto precplaint; else goto bop; } break; ! 1242: case 138: ! 1243: # line 678 "../pcc1/mip/cgram.y" ! 1244: { if(yychar==SHIFTOP ) goto precplaint; else goto bop; } break; ! 1245: case 139: ! 1246: # line 680 "../pcc1/mip/cgram.y" ! 1247: { if(yychar==PLUS||yychar==MINUS) goto precplaint; else goto bop; } break; ! 1248: case 140: ! 1249: # line 682 "../pcc1/mip/cgram.y" ! 1250: { goto bop; } break; ! 1251: case 141: ! 1252: # line 684 "../pcc1/mip/cgram.y" ! 1253: { goto preconf; } break; ! 1254: case 142: ! 1255: # line 686 "../pcc1/mip/cgram.y" ! 1256: { if( yychar==RELOP||yychar==EQUOP ) goto preconf; else goto bop; } break; ! 1257: case 143: ! 1258: # line 688 "../pcc1/mip/cgram.y" ! 1259: { if(yychar==RELOP||yychar==EQUOP) goto preconf; else goto bop; } break; ! 1260: case 144: ! 1261: # line 690 "../pcc1/mip/cgram.y" ! 1262: { if(yychar==RELOP||yychar==EQUOP) goto preconf; else goto bop; } break; ! 1263: case 145: ! 1264: # line 692 "../pcc1/mip/cgram.y" ! 1265: { goto bop; } break; ! 1266: case 146: ! 1267: # line 694 "../pcc1/mip/cgram.y" ! 1268: { goto bop; } break; ! 1269: case 147: ! 1270: # line 696 "../pcc1/mip/cgram.y" ! 1271: { abop: ! 1272: yyval.nodep = buildtree( ASG yypvt[-2].intval, yypvt[-3].nodep, yypvt[-0].nodep ); ! 1273: } break; ! 1274: case 148: ! 1275: # line 700 "../pcc1/mip/cgram.y" ! 1276: { goto abop; } break; ! 1277: case 149: ! 1278: # line 702 "../pcc1/mip/cgram.y" ! 1279: { goto abop; } break; ! 1280: case 150: ! 1281: # line 704 "../pcc1/mip/cgram.y" ! 1282: { goto abop; } break; ! 1283: case 151: ! 1284: # line 706 "../pcc1/mip/cgram.y" ! 1285: { goto abop; } break; ! 1286: case 152: ! 1287: # line 708 "../pcc1/mip/cgram.y" ! 1288: { goto abop; } break; ! 1289: case 153: ! 1290: # line 710 "../pcc1/mip/cgram.y" ! 1291: { goto abop; } break; ! 1292: case 154: ! 1293: # line 712 "../pcc1/mip/cgram.y" ! 1294: { goto abop; } break; ! 1295: case 155: ! 1296: # line 714 "../pcc1/mip/cgram.y" ! 1297: { yyval.nodep=buildtree(QUEST, yypvt[-4].nodep, buildtree( COLON, yypvt[-2].nodep, yypvt[-0].nodep ) ); ! 1298: } break; ! 1299: case 156: ! 1300: # line 717 "../pcc1/mip/cgram.y" ! 1301: { werror( "old-fashioned assignment operator" ); goto bop; } break; ! 1302: case 157: ! 1303: # line 719 "../pcc1/mip/cgram.y" ! 1304: { goto bop; } break; ! 1305: case 159: ! 1306: # line 723 "../pcc1/mip/cgram.y" ! 1307: { yyval.nodep = buildtree( yypvt[-0].intval, yypvt[-1].nodep, bcon(1) ); } break; ! 1308: case 160: ! 1309: # line 725 "../pcc1/mip/cgram.y" ! 1310: { ubop: ! 1311: yyval.nodep = buildtree( UNARY yypvt[-1].intval, yypvt[-0].nodep, NIL ); ! 1312: } break; ! 1313: case 161: ! 1314: # line 729 "../pcc1/mip/cgram.y" ! 1315: { if( ISFTN(yypvt[-0].nodep->in.type) || ISARY(yypvt[-0].nodep->in.type) ){ ! 1316: werror( "& before array or function: ignored" ); ! 1317: yyval.nodep = yypvt[-0].nodep; ! 1318: } ! 1319: else goto ubop; ! 1320: } break; ! 1321: case 162: ! 1322: # line 736 "../pcc1/mip/cgram.y" ! 1323: { goto ubop; } break; ! 1324: case 163: ! 1325: # line 738 "../pcc1/mip/cgram.y" ! 1326: { ! 1327: yyval.nodep = buildtree( yypvt[-1].intval, yypvt[-0].nodep, NIL ); ! 1328: } break; ! 1329: case 164: ! 1330: # line 742 "../pcc1/mip/cgram.y" ! 1331: { yyval.nodep = buildtree( yypvt[-1].intval==INCR ? ASG PLUS : ASG MINUS, ! 1332: yypvt[-0].nodep, ! 1333: bcon(1) ); ! 1334: } break; ! 1335: case 165: ! 1336: # line 747 "../pcc1/mip/cgram.y" ! 1337: { yyval.nodep = doszof( yypvt[-0].nodep ); } break; ! 1338: case 166: ! 1339: # line 749 "../pcc1/mip/cgram.y" ! 1340: { yyval.nodep = buildtree( CAST, yypvt[-2].nodep, yypvt[-0].nodep ); ! 1341: yyval.nodep->in.left->in.op = FREE; ! 1342: yyval.nodep->in.op = FREE; ! 1343: yyval.nodep = yyval.nodep->in.right; ! 1344: } break; ! 1345: case 167: ! 1346: # line 755 "../pcc1/mip/cgram.y" ! 1347: { yyval.nodep = doszof( yypvt[-1].nodep ); } break; ! 1348: case 168: ! 1349: # line 757 "../pcc1/mip/cgram.y" ! 1350: { yyval.nodep = buildtree( UNARY MUL, buildtree( PLUS, yypvt[-3].nodep, yypvt[-1].nodep ), NIL ); } break; ! 1351: case 169: ! 1352: # line 759 "../pcc1/mip/cgram.y" ! 1353: { yyval.nodep=buildtree(UNARY CALL,yypvt[-1].nodep,NIL); } break; ! 1354: case 170: ! 1355: # line 761 "../pcc1/mip/cgram.y" ! 1356: { yyval.nodep=buildtree(CALL,yypvt[-2].nodep,yypvt[-1].nodep); } break; ! 1357: case 171: ! 1358: # line 763 "../pcc1/mip/cgram.y" ! 1359: { if( yypvt[-1].intval == DOT ){ ! 1360: if( notlval( yypvt[-2].nodep ) )uerror("structure reference must be addressable"); ! 1361: yypvt[-2].nodep = buildtree( UNARY AND, yypvt[-2].nodep, NIL ); ! 1362: } ! 1363: idname = yypvt[-0].intval; ! 1364: yyval.nodep = buildtree( STREF, yypvt[-2].nodep, buildtree( NAME, NIL, NIL ) ); ! 1365: } break; ! 1366: case 172: ! 1367: # line 771 "../pcc1/mip/cgram.y" ! 1368: { idname = yypvt[-0].intval; ! 1369: /* recognize identifiers in initializations */ ! 1370: if( blevel==0 && stab[idname].stype == UNDEF ) { ! 1371: register NODE *q; ! 1372: #ifndef FLEXNAMES ! 1373: werror( "undeclared initializer name %.8s", stab[idname].sname ); ! 1374: #else ! 1375: werror( "undeclared initializer name %s", stab[idname].sname ); ! 1376: #endif ! 1377: q = block( FREE, NIL, NIL, INT, 0, INT ); ! 1378: q->tn.rval = idname; ! 1379: defid( q, EXTERN ); ! 1380: } ! 1381: yyval.nodep=buildtree(NAME,NIL,NIL); ! 1382: stab[yypvt[-0].intval].suse = -lineno; ! 1383: } break; ! 1384: case 173: ! 1385: # line 788 "../pcc1/mip/cgram.y" ! 1386: { yyval.nodep=bcon(0); ! 1387: yyval.nodep->tn.lval = lastcon; ! 1388: yyval.nodep->tn.rval = NONAME; ! 1389: if( yypvt[-0].intval ) yyval.nodep->fn.csiz = yyval.nodep->in.type = ctype(LONG); ! 1390: } break; ! 1391: case 174: ! 1392: # line 794 "../pcc1/mip/cgram.y" ! 1393: { yyval.nodep=buildtree(FCON,NIL,NIL); ! 1394: yyval.nodep->fpn.dval = dcon; ! 1395: } break; ! 1396: case 175: ! 1397: # line 798 "../pcc1/mip/cgram.y" ! 1398: { yyval.nodep = getstr(); /* get string contents */ } break; ! 1399: case 176: ! 1400: # line 800 "../pcc1/mip/cgram.y" ! 1401: { yyval.nodep=yypvt[-1].nodep; } break; ! 1402: case 177: ! 1403: # line 804 "../pcc1/mip/cgram.y" ! 1404: { ! 1405: yyval.nodep = tymerge( yypvt[-1].nodep, yypvt[-0].nodep ); ! 1406: yyval.nodep->in.op = NAME; ! 1407: yypvt[-1].nodep->in.op = FREE; ! 1408: } break; ! 1409: case 178: ! 1410: # line 812 "../pcc1/mip/cgram.y" ! 1411: { yyval.nodep = bdty( NAME, NIL, -1 ); } break; ! 1412: case 179: ! 1413: # line 814 "../pcc1/mip/cgram.y" ! 1414: { yyval.nodep = bdty( UNARY CALL, bdty(NAME,NIL,-1),0); } break; ! 1415: case 180: ! 1416: # line 816 "../pcc1/mip/cgram.y" ! 1417: { yyval.nodep = bdty( UNARY CALL, yypvt[-3].nodep, 0 ); } break; ! 1418: case 181: ! 1419: # line 818 "../pcc1/mip/cgram.y" ! 1420: { goto umul; } break; ! 1421: case 182: ! 1422: # line 820 "../pcc1/mip/cgram.y" ! 1423: { goto uary; } break; ! 1424: case 183: ! 1425: # line 822 "../pcc1/mip/cgram.y" ! 1426: { goto bary; } break; ! 1427: case 184: ! 1428: # line 824 "../pcc1/mip/cgram.y" ! 1429: { yyval.nodep = yypvt[-1].nodep; } break; ! 1430: case 185: ! 1431: # line 828 "../pcc1/mip/cgram.y" ! 1432: { if( stab[yypvt[-1].intval].stype == UNDEF ){ ! 1433: register NODE *q; ! 1434: q = block( FREE, NIL, NIL, FTN|INT, 0, INT ); ! 1435: q->tn.rval = yypvt[-1].intval; ! 1436: defid( q, EXTERN ); ! 1437: } ! 1438: idname = yypvt[-1].intval; ! 1439: yyval.nodep=buildtree(NAME,NIL,NIL); ! 1440: stab[idname].suse = -lineno; ! 1441: } break; ! 1442: } ! 1443: goto yystack; /* stack new state and value */ ! 1444: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.