|
|
1.1 ! root 1: ! 2: # line 24 "gram.y" ! 3: #include "cfront.h" ! 4: #include "size.h" ! 5: // include tqueue.h after YYSTYPE is defined ... ! 6: ! 7: #define YYMAXDEPTH 600 ! 8: ! 9: #ifdef DBG ! 10: #ifndef YYDEBUG ! 11: #define YYDEBUG 1 ! 12: #endif ! 13: #endif ! 14: ! 15: static init_seen = 0; ! 16: static cdi = 0; ! 17: static Pnlist cd = 0, cd_vec[BLMAX]; ! 18: static char stmt_seen = 0, stmt_vec[BLMAX]; ! 19: ! 20: //local class ! 21: static Plist tn_vec[BLMAX], lcl_tn_vec[BLMAX], lcl_blk_vec[BLMAX]; ! 22: extern void local_restore(); ! 23: extern void local_name(); ! 24: ! 25: //nested class ! 26: static Plist nested_tn_vec[BLMAX], nested_type_vec[BLMAX]; ! 27: extern void nested_restore(); ! 28: extern char *class_typedef; ! 29: ! 30: static Pname err_name = 0; ! 31: ! 32: // fcts put into norm2.c just to get them out of gram.y ! 33: void sig_name(Pname); ! 34: Ptype tok_to_type(TOK); ! 35: void memptrdcl(Pname, Pname, Ptype, Pname); ! 36: ! 37: static Pptr doptr(TOK p, TOK t) ! 38: { ! 39: Pptr r = new ptr(p,0); ! 40: switch (t) { ! 41: case CONST: ! 42: r->rdo = 1; ! 43: // if (p == RPTR) error('w',"redundant `const' after &"); ! 44: break; ! 45: case VOLATILE: ! 46: error('w',"\"volatile\" not implemented (ignored)"); ! 47: break; ! 48: default: ! 49: error("syntax error: *%k",t); ! 50: } ! 51: return r; ! 52: } ! 53: ! 54: static Pbcl dobase(TOK pr, Pname n, TOK v = 0) ! 55: { ! 56: Pbcl b = new basecl(0,0); ! 57: ! 58: if (pr == PROTECTED) { ! 59: pr = PUBLIC; ! 60: error("protectedBC"); ! 61: } ! 62: b->ppp = pr; // save protection indicator ! 63: ! 64: if (n) { ! 65: if (n->base != TNAME) { ! 66: error("BN%n not aTN",n); ! 67: return 0; ! 68: } ! 69: ! 70: Pbase bt = Pbase(n->tp); ! 71: while (bt->base == TYPE) bt = Pbase(bt->b_name->tp); ! 72: ! 73: if (bt->base != COBJ) { ! 74: error("BN%n not aCN",n); ! 75: return 0; ! 76: } ! 77: ! 78: if (v) { ! 79: if (v != VIRTUAL) error("syntax error:%k inBCD",v); ! 80: b->base = VIRTUAL; ! 81: } ! 82: else ! 83: b->base = NAME; ! 84: ! 85: b->bclass = Pclass(bt->b_name->tp); ! 86: } ! 87: ! 88: return b; ! 89: } ! 90: ! 91: ! 92: #define Ndata(a,b) b->normalize(Pbase(a),0,0) ! 93: #define Ncast(a,b) b->normalize(Pbase(a),0,1) ! 94: #define Nfct(a,b,c) b->normalize(Pbase(a),Pblock(c),0) ! 95: #define Ncopy(n) (n->base==TNAME)?new name(n->string):n ! 96: ! 97: #define Finit(p) Pfct(p)->f_init ! 98: #define Fargdcl(p,q,r) Pfct(p)->argdcl(q,r) ! 99: #define Freturns(p) Pfct(p)->returns ! 100: #define Vtype(v) Pvec(v)->typ ! 101: #define Ptyp(p) Pptr(p)->typ ! 102: ! 103: /* avoid redefinitions */ ! 104: #undef EOFTOK ! 105: #undef ASM ! 106: #undef BREAK ! 107: #undef CASE ! 108: #undef CONTINUE ! 109: #undef DEFAULT ! 110: #undef DELETE ! 111: #undef DO ! 112: #undef ELSE ! 113: #undef ENUM ! 114: #undef FOR ! 115: #undef FORTRAN ! 116: #undef GOTO ! 117: #undef IF ! 118: #undef NEW ! 119: #undef OPERATOR ! 120: #undef RETURN ! 121: #undef SIZEOF ! 122: #undef SWITCH ! 123: #undef THIS ! 124: #undef WHILE ! 125: #undef LP ! 126: #undef RP ! 127: #undef LB ! 128: #undef RB ! 129: #undef REF ! 130: #undef DOT ! 131: #undef NOT ! 132: #undef COMPL ! 133: #undef MUL ! 134: #undef AND ! 135: #undef PLUS ! 136: #undef MINUS ! 137: #undef ER ! 138: #undef OR ! 139: #undef ANDAND ! 140: #undef OROR ! 141: #undef QUEST ! 142: #undef COLON ! 143: #undef ASSIGN ! 144: #undef CM ! 145: #undef SM ! 146: #undef LC ! 147: #undef RC ! 148: #undef ID ! 149: #undef STRING ! 150: #undef ICON ! 151: #undef FCON ! 152: #undef CCON ! 153: #undef ZERO ! 154: #undef ASOP ! 155: #undef RELOP ! 156: #undef EQUOP ! 157: #undef DIVOP ! 158: #undef SHIFTOP ! 159: #undef ICOP ! 160: #undef TYPE ! 161: #undef TNAME ! 162: #undef EMPTY ! 163: #undef NO_ID ! 164: #undef NO_EXPR ! 165: #undef FDEF ! 166: #undef ELLIPSIS ! 167: #undef AGGR ! 168: #undef MEM ! 169: #undef MEMPTR ! 170: #undef PR ! 171: #undef TSCOPE ! 172: #undef DECL_MARKER ! 173: #undef REFMUL ! 174: #undef LDOUBLE ! 175: #undef LINKAGE ! 176: #undef LOCAL ! 177: #undef NESTED ! 178: ! 179: # line 201 "gram.y" ! 180: typedef union { ! 181: char* s; ! 182: TOK t; ! 183: int i; ! 184: loc l; ! 185: Pname pn; ! 186: Ptype pt; ! 187: Pexpr pe; ! 188: Pstmt ps; ! 189: Pbase pb; ! 190: Pnlist nl; ! 191: Pslist sl; ! 192: Pelist el; ! 193: Pbcl pbc; ! 194: Pptr pp; ! 195: PP p; // fudge: pointer to all class node objects ! 196: Plist pl; ! 197: toknode* q; // token queue ! 198: } YYSTYPE; ! 199: ! 200: # line 221 "gram.y" ! 201: #include "tqueue.h" ! 202: extern YYSTYPE yylval, yyval; ! 203: extern int yyparse(); ! 204: ! 205: // in_typedef should allow for nested in_typedef ! 206: extern int declTag; // !1: inline, virtual mod permitted ! 207: int in_sizeof = 0; ! 208: Ptype in_typedef = 0; // catch redefinition of TNAME ! 209: Pname in_tag = 0; // handle complex typedefs: int (*)() ! 210: extern int defer_check; // redefinition typedef check delay ! 211: Pname curr_scope; ! 212: ! 213: extern int must_be_id; // !0, TNAME => ID, i.e., int X ! 214: int DECL_TYPE = 0; // lalex() wants this set for global x(*fp)() ! 215: int in_arg_list=0; // !0 when parsing argument list ! 216: static int in_binit_list=0; ! 217: int in_class_decl=0; // !0 when processing class definition ! 218: int parsing_class_members=0; // !0 when parsing class def but not member function body ! 219: int in_mem_fct=0; // !0 when parsing member function definition ! 220: ! 221: #define yylex lalex ! 222: #define NEXTTOK() ( (yychar==-1) ? (yychar=yylex(),yychar) : yychar ) ! 223: #define EXPECT_ID() must_be_id = 1 ! 224: #define NOT_EXPECT_ID() must_be_id = 0 ! 225: ! 226: Pname syn() ! 227: { ! 228: ll: ! 229: switch (yyparse()) { ! 230: case 0: return 0; // EOF ! 231: case 1: goto ll; // no action needed ! 232: default: return yyval.pn; ! 233: } ! 234: } ! 235: ! 236: # define EOFTOK 0 ! 237: # define ASM 1 ! 238: # define BREAK 3 ! 239: # define CASE 4 ! 240: # define CONTINUE 7 ! 241: # define DEFAULT 8 ! 242: # define DELETE 9 ! 243: # define DO 10 ! 244: # define ELSE 12 ! 245: # define ENUM 13 ! 246: # define FOR 16 ! 247: # define FORTRAN 17 ! 248: # define GOTO 19 ! 249: # define IF 20 ! 250: # define NEW 23 ! 251: # define OPERATOR 24 ! 252: # define RETURN 28 ! 253: # define SIZEOF 30 ! 254: # define SWITCH 33 ! 255: # define THIS 34 ! 256: # define WHILE 39 ! 257: # define LP 40 ! 258: # define RP 41 ! 259: # define LB 42 ! 260: # define RB 43 ! 261: # define REF 44 ! 262: # define DOT 45 ! 263: # define NOT 46 ! 264: # define COMPL 47 ! 265: # define MUL 50 ! 266: # define AND 52 ! 267: # define PLUS 54 ! 268: # define MINUS 55 ! 269: # define ER 64 ! 270: # define OR 65 ! 271: # define ANDAND 66 ! 272: # define OROR 67 ! 273: # define QUEST 68 ! 274: # define COLON 69 ! 275: # define ASSIGN 70 ! 276: # define CM 71 ! 277: # define SM 72 ! 278: # define LC 73 ! 279: # define RC 74 ! 280: # define MEMPTR 173 ! 281: # define ID 80 ! 282: # define STRING 81 ! 283: # define ICON 82 ! 284: # define FCON 83 ! 285: # define CCON 84 ! 286: # define ZERO 86 ! 287: # define ASOP 90 ! 288: # define RELOP 91 ! 289: # define EQUOP 92 ! 290: # define DIVOP 93 ! 291: # define SHIFTOP 94 ! 292: # define ICOP 95 ! 293: # define TYPE 97 ! 294: # define TNAME 123 ! 295: # define EMPTY 124 ! 296: # define NO_ID 125 ! 297: # define NO_EXPR 126 ! 298: # define FDEF 127 ! 299: # define ELLIPSIS 155 ! 300: # define AGGR 156 ! 301: # define MEM 160 ! 302: # define PR 175 ! 303: # define TSCOPE 178 ! 304: # define DECL_MARKER 179 ! 305: # define REFMUL 180 ! 306: # define LDOUBLE 181 ! 307: # define LINKAGE 182 ! 308: # define LOCAL 183 ! 309: # define NESTED 190 ! 310: #define yyclearin yychar = -1 ! 311: #define yyerrok yyerrflag = 0 ! 312: extern int yychar; ! 313: extern short yyerrflag; ! 314: #ifndef YYMAXDEPTH ! 315: #define YYMAXDEPTH 150 ! 316: #endif ! 317: YYSTYPE yylval, yyval; ! 318: # define YYERRCODE 256 ! 319: ! 320: # line 1947 "gram.y" ! 321: ! 322: ! 323: static void ! 324: check_tag() ! 325: /* ! 326: Allow the case of inline/virtual/overload as ! 327: modifiers of return type of form struct/class/union x foo() ! 328: SM, COLON, LC ==> real class declaration, not return type ! 329: */ ! 330: { ! 331: switch ( NEXTTOK() ) { ! 332: case SM: case COLON: case LC: ! 333: declTag = 1; ! 334: break; ! 335: default: ! 336: declTag = 0; ! 337: break; ! 338: } ! 339: } ! 340: ! 341: static void ! 342: end_al( Plist mtn, int rst ) ! 343: // unhide type names hidden by arg names ! 344: // mtn == saved modified_tn ! 345: { ! 346: if ( rst == 0 ) { ! 347: // not really an arg list, or we are entering a function def ! 348: // merge modified_tn and don't restore ! 349: if ( modified_tn == 0 ) modified_tn = mtn; ! 350: else { ! 351: for ( Plist l = modified_tn; l->l; l = l->l ) ; ! 352: l->l = mtn; ! 353: } ! 354: } else { ! 355: restore(); ! 356: modified_tn = mtn; ! 357: } ! 358: } ! 359: static void ! 360: arg_redec( Pname fn ) ! 361: { ! 362: if ( fn==0 || fn->tp->base != FCT ) ! 363: error('i',"bad inline rewrite!"); ! 364: Pname al = Pfct(fn->tp)->argtype; ! 365: Pname n = 0; ! 366: for ( ; al; al = al->n_list ) { ! 367: DB( if(Ydebug>=1)error('d',"arg_redec: %n %d",al,al->lex_level); ); ! 368: // nested function args should have lex_level >= 1 ! 369: if ( al->lex_level==1 && (n=ktbl->look(al->string,0)) ) ! 370: n->hide(); ! 371: else if ( al->lex_level>1 && (n=ktbl->look(al->string,LOCAL)) ) ! 372: n->hide(); ! 373: DB( if(Ydebug>=1)error('d'," %n",n); ); ! 374: } ! 375: } ! 376: ! 377: ! 378: short yyexca[] ={ ! 379: -1, 1, ! 380: 0, -1, ! 381: -2, 0, ! 382: -1, 40, ! 383: 71, 31, ! 384: 72, 31, ! 385: -2, 30, ! 386: -1, 57, ! 387: 155, 307, ! 388: -2, 245, ! 389: -1, 62, ! 390: 13, 302, ! 391: 97, 302, ! 392: 123, 302, ! 393: 155, 302, ! 394: 156, 302, ! 395: 160, 302, ! 396: 178, 302, ! 397: 179, 302, ! 398: 182, 302, ! 399: -2, 245, ! 400: -1, 111, ! 401: 73, 69, ! 402: -2, 64, ! 403: -1, 346, ! 404: 1, 164, ! 405: 3, 164, ! 406: 4, 164, ! 407: 7, 164, ! 408: 8, 164, ! 409: 9, 164, ! 410: 10, 164, ! 411: 13, 164, ! 412: 16, 164, ! 413: 19, 164, ! 414: 20, 164, ! 415: 23, 164, ! 416: 24, 164, ! 417: 28, 164, ! 418: 30, 164, ! 419: 33, 164, ! 420: 34, 164, ! 421: 39, 164, ! 422: 40, 164, ! 423: 46, 164, ! 424: 47, 164, ! 425: 50, 164, ! 426: 52, 164, ! 427: 54, 164, ! 428: 55, 164, ! 429: 72, 164, ! 430: 73, 164, ! 431: 80, 164, ! 432: 81, 164, ! 433: 82, 164, ! 434: 83, 164, ! 435: 84, 164, ! 436: 86, 164, ! 437: 95, 164, ! 438: 97, 164, ! 439: 123, 164, ! 440: 156, 164, ! 441: 160, 164, ! 442: 178, 164, ! 443: 179, 164, ! 444: 182, 164, ! 445: -2, 0, ! 446: }; ! 447: # define YYNPROD 320 ! 448: # define YYLAST 2463 ! 449: short yyact[]={ ! 450: ! 451: 129, 423, 8, 461, 165, 345, 159, 7, 238, 391, ! 452: 266, 58, 262, 291, 333, 336, 273, 201, 168, 169, ! 453: 388, 55, 140, 200, 188, 292, 131, 63, 400, 142, ! 454: 236, 114, 232, 16, 233, 235, 28, 61, 35, 77, ! 455: 68, 78, 76, 240, 12, 22, 269, 27, 294, 23, ! 456: 158, 50, 69, 9, 156, 67, 63, 348, 45, 254, ! 457: 111, 118, 46, 32, 19, 154, 61, 177, 109, 108, ! 458: 26, 10, 155, 29, 25, 30, 29, 37, 30, 446, ! 459: 107, 114, 255, 69, 63, 231, 67, 63, 473, 27, ! 460: 338, 521, 51, 27, 61, 36, 66, 61, 160, 180, ! 461: 29, 171, 30, 48, 68, 29, 126, 30, 171, 32, ! 462: 120, 37, 26, 193, 175, 253, 26, 192, 265, 29, ! 463: 213, 30, 21, 73, 25, 486, 293, 202, 226, 36, ! 464: 270, 479, 241, 242, 243, 244, 245, 246, 247, 248, ! 465: 249, 37, 206, 67, 346, 70, 25, 73, 25, 17, ! 466: 424, 473, 186, 27, 12, 471, 472, 237, 68, 36, ! 467: 239, 37, 261, 219, 194, 160, 250, 258, 189, 413, ! 468: 234, 344, 205, 301, 302, 207, 26, 242, 25, 36, ! 469: 209, 34, 195, 37, 289, 37, 252, 67, 68, 280, ! 470: 265, 256, 25, 257, 479, 37, 31, 251, 203, 31, ! 471: 67, 36, 389, 36, 24, 38, 45, 161, 460, 70, ! 472: 46, 67, 492, 36, 283, 37, 282, 45, 300, 296, ! 473: 35, 46, 370, 31, 362, 37, 299, 298, 31, 37, ! 474: 320, 288, 286, 36, 67, 328, 275, 296, 338, 323, ! 475: 295, 331, 31, 36, 332, 263, 264, 36, 29, 285, ! 476: 30, 241, 68, 260, 189, 414, 326, 322, 329, 363, ! 477: 324, 123, 124, 342, 343, 303, 304, 305, 306, 307, ! 478: 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, ! 479: 318, 341, 319, 252, 271, 353, 45, 325, 350, 37, ! 480: 46, 352, 357, 358, 339, 354, 340, 297, 45, 469, ! 481: 467, 27, 46, 466, 21, 334, 371, 36, 66, 265, ! 482: 27, 65, 287, 171, 368, 32, 199, 337, 213, 364, ! 483: 366, 182, 211, 212, 26, 29, 32, 30, 65, 375, ! 484: 25, 185, 392, 26, 534, 125, 29, 32, 30, 59, ! 485: 275, 275, 455, 60, 62, 379, 59, 427, 381, 380, ! 486: 60, 116, 369, 383, 384, 274, 407, 181, 114, 386, ! 487: 394, 219, 351, 34, 385, 378, 17, 37, 252, 353, ! 488: 353, 31, 114, 393, 405, 395, 374, 401, 377, 354, ! 489: 354, 397, 398, 73, 359, 36, 24, 409, 254, 161, ! 490: 349, 402, 379, 403, 151, 381, 381, 415, 56, 334, ! 491: 59, 25, 337, 337, 60, 408, 279, 418, 410, 25, ! 492: 59, 255, 411, 59, 60, 25, 420, 60, 114, 267, ! 493: 204, 428, 184, 422, 426, 164, 454, 404, 436, 462, ! 494: 429, 437, 435, 421, 419, 456, 488, 410, 37, 464, ! 495: 393, 416, 32, 463, 253, 465, 37, 259, 31, 54, ! 496: 149, 258, 37, 489, 252, 39, 36, 119, 533, 31, ! 497: 230, 25, 525, 495, 36, 497, 494, 499, 503, 12, ! 498: 36, 454, 454, 454, 454, 454, 454, 454, 454, 454, ! 499: 454, 454, 454, 454, 454, 454, 454, 68, 459, 520, ! 500: 121, 35, 523, 25, 64, 20, 382, 59, 37, 468, ! 501: 527, 60, 528, 529, 491, 531, 501, 20, 57, 500, ! 502: 498, 458, 229, 367, 20, 20, 36, 496, 230, 32, ! 503: 396, 59, 457, 502, 37, 60, 230, 537, 487, 387, ! 504: 37, 361, 539, 454, 473, 57, 542, 541, 471, 472, ! 505: 113, 284, 36, 66, 545, 522, 347, 114, 36, 548, ! 506: 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, ! 507: 514, 515, 516, 517, 518, 519, 57, 153, 15, 57, ! 508: 32, 417, 59, 290, 198, 21, 60, 479, 477, 536, ! 509: 44, 114, 538, 56, 360, 59, 399, 72, 75, 60, ! 510: 25, 268, 473, 150, 18, 105, 471, 472, 365, 546, ! 511: 355, 25, 115, 115, 166, 20, 49, 170, 103, 141, ! 512: 167, 431, 540, 49, 49, 35, 430, 56, 20, 59, ! 513: 425, 106, 162, 60, 25, 173, 27, 37, 106, 106, ! 514: 412, 41, 162, 480, 34, 479, 477, 191, 37, 236, ! 515: 110, 232, 32, 233, 235, 36, 112, 122, 163, 26, ! 516: 33, 174, 29, 35, 30, 20, 36, 24, 163, 117, ! 517: 161, 37, 14, 213, 27, 1, 276, 211, 212, 390, ! 518: 2, 187, 0, 0, 20, 13, 190, 0, 15, 36, ! 519: 32, 0, 17, 0, 0, 0, 0, 26, 40, 162, ! 520: 29, 75, 30, 0, 231, 71, 74, 106, 162, 21, ! 521: 0, 0, 0, 57, 197, 0, 219, 217, 0, 51, ! 522: 173, 35, 42, 0, 0, 163, 0, 49, 0, 105, ! 523: 48, 56, 0, 59, 163, 25, 0, 60, 44, 56, ! 524: 183, 59, 32, 0, 0, 60, 174, 43, 32, 272, ! 525: 0, 0, 29, 0, 30, 106, 0, 75, 29, 0, ! 526: 30, 52, 0, 53, 49, 0, 0, 0, 34, 0, ! 527: 0, 0, 37, 25, 0, 106, 0, 115, 0, 0, ! 528: 276, 276, 274, 49, 0, 31, 57, 196, 274, 0, ! 529: 36, 24, 0, 0, 161, 0, 473, 0, 474, 73, ! 530: 471, 472, 0, 106, 0, 43, 34, 0, 162, 208, ! 531: 37, 327, 0, 330, 0, 0, 0, 173, 272, 0, ! 532: 0, 0, 0, 31, 0, 25, 0, 0, 36, 47, ! 533: 272, 25, 105, 115, 163, 0, 0, 480, 478, 479, ! 534: 477, 0, 0, 174, 106, 0, 208, 162, 0, 0, ! 535: 0, 0, 0, 356, 0, 0, 106, 0, 106, 106, ! 536: 0, 0, 37, 0, 34, 281, 0, 0, 37, 0, ! 537: 0, 115, 115, 163, 0, 31, 0, 99, 0, 106, ! 538: 36, 31, 0, 0, 0, 0, 36, 47, 0, 0, ! 539: 0, 98, 0, 0, 0, 0, 0, 106, 106, 0, ! 540: 0, 0, 173, 0, 0, 0, 0, 0, 91, 0, ! 541: 92, 0, 100, 0, 93, 94, 0, 0, 81, 0, ! 542: 82, 0, 79, 80, 0, 115, 0, 0, 174, 0, ! 543: 0, 0, 84, 83, 89, 90, 0, 0, 97, 101, ! 544: 0, 115, 0, 115, 0, 115, 0, 0, 0, 0, ! 545: 0, 106, 0, 0, 0, 0, 162, 0, 96, 88, ! 546: 86, 87, 85, 95, 0, 104, 0, 106, 0, 106, ! 547: 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, ! 548: 0, 0, 163, 0, 0, 162, 0, 0, 162, 0, ! 549: 0, 25, 115, 0, 0, 0, 0, 0, 451, 0, ! 550: 447, 444, 0, 173, 448, 445, 452, 450, 0, 0, ! 551: 35, 163, 0, 440, 163, 0, 449, 438, 106, 0, ! 552: 130, 151, 0, 0, 0, 433, 0, 139, 37, 174, ! 553: 441, 148, 0, 0, 0, 0, 439, 154, 0, 0, ! 554: 0, 0, 0, 136, 137, 0, 36, 132, 102, 133, ! 555: 0, 135, 134, 0, 0, 0, 0, 473, 0, 474, ! 556: 0, 471, 472, 213, 0, 214, 0, 211, 212, 432, ! 557: 346, 476, 127, 0, 0, 0, 35, 442, 146, 144, ! 558: 145, 147, 0, 143, 0, 0, 130, 151, 0, 0, ! 559: 0, 0, 138, 139, 434, 0, 0, 148, 480, 478, ! 560: 479, 477, 0, 154, 220, 218, 219, 217, 0, 136, ! 561: 137, 0, 0, 132, 0, 133, 0, 135, 134, 0, ! 562: 443, 213, 0, 0, 0, 211, 212, 473, 0, 474, ! 563: 0, 471, 472, 0, 0, 0, 157, 0, 0, 0, ! 564: 0, 476, 475, 149, 146, 144, 145, 147, 0, 143, ! 565: 0, 0, 0, 34, 0, 0, 0, 453, 138, 0, ! 566: 172, 0, 220, 127, 219, 217, 0, 35, 480, 478, ! 567: 479, 477, 0, 0, 0, 36, 24, 130, 151, 161, ! 568: 0, 0, 0, 0, 139, 0, 25, 0, 148, 0, ! 569: 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, ! 570: 136, 137, 0, 0, 132, 0, 133, 0, 135, 134, ! 571: 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, ! 572: 473, 0, 0, 128, 471, 472, 0, 0, 0, 127, ! 573: 0, 0, 0, 0, 149, 146, 144, 145, 147, 0, ! 574: 143, 36, 24, 130, 151, 161, 0, 0, 213, 138, ! 575: 139, 172, 211, 212, 148, 0, 0, 0, 0, 0, ! 576: 154, 480, 478, 479, 477, 0, 136, 137, 35, 0, ! 577: 132, 0, 133, 0, 135, 134, 0, 25, 0, 0, ! 578: 0, 0, 473, 0, 474, 0, 471, 472, 0, 220, ! 579: 218, 219, 217, 157, 0, 338, 476, 475, 481, 0, ! 580: 149, 146, 144, 145, 147, 29, 143, 30, 0, 0, ! 581: 34, 0, 0, 127, 128, 138, 0, 152, 0, 0, ! 582: 0, 0, 0, 480, 478, 479, 477, 130, 151, 0, ! 583: 0, 0, 36, 24, 139, 0, 161, 0, 148, 0, ! 584: 0, 0, 0, 25, 154, 0, 0, 0, 0, 0, ! 585: 136, 137, 43, 0, 132, 0, 133, 0, 135, 134, ! 586: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 587: 0, 0, 0, 0, 0, 0, 0, 0, 25, 452, ! 588: 128, 0, 0, 0, 149, 146, 144, 145, 147, 0, ! 589: 143, 0, 0, 130, 151, 0, 0, 0, 36, 138, ! 590: 139, 152, 0, 0, 148, 0, 0, 0, 35, 0, ! 591: 154, 34, 130, 151, 0, 37, 136, 137, 0, 139, ! 592: 132, 0, 133, 148, 135, 134, 0, 25, 31, 154, ! 593: 0, 524, 0, 36, 47, 136, 137, 0, 0, 132, ! 594: 0, 133, 0, 135, 134, 29, 0, 30, 0, 0, ! 595: 149, 146, 144, 145, 147, 0, 143, 0, 0, 0, ! 596: 0, 0, 0, 0, 128, 138, 0, 152, 0, 149, ! 597: 146, 144, 145, 147, 0, 143, 0, 0, 130, 151, ! 598: 0, 0, 36, 0, 138, 139, 152, 0, 0, 148, ! 599: 0, 0, 43, 25, 0, 154, 0, 490, 0, 0, ! 600: 0, 136, 137, 0, 0, 132, 0, 133, 0, 135, ! 601: 134, 0, 25, 0, 0, 213, 0, 214, 25, 211, ! 602: 212, 0, 0, 0, 0, 0, 0, 0, 0, 216, ! 603: 453, 0, 0, 0, 0, 149, 146, 144, 145, 147, ! 604: 0, 143, 0, 0, 0, 0, 0, 0, 36, 228, ! 605: 138, 34, 152, 130, 151, 37, 220, 218, 219, 217, ! 606: 139, 0, 0, 0, 148, 0, 0, 36, 31, 0, ! 607: 154, 0, 321, 36, 47, 0, 136, 137, 25, 0, ! 608: 132, 0, 133, 0, 135, 134, 0, 0, 0, 0, ! 609: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 610: 0, 0, 0, 0, 0, 0, 0, 4, 11, 0, ! 611: 149, 146, 144, 145, 147, 228, 143, 130, 151, 0, ! 612: 35, 0, 0, 0, 139, 138, 0, 152, 148, 0, ! 613: 0, 27, 0, 36, 154, 0, 227, 0, 0, 0, ! 614: 136, 137, 0, 0, 132, 0, 133, 32, 135, 134, ! 615: 0, 0, 0, 25, 26, 0, 0, 29, 0, 30, ! 616: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 617: 0, 0, 0, 0, 149, 146, 144, 145, 147, 3, ! 618: 143, 6, 0, 0, 0, 0, 0, 17, 0, 138, ! 619: 228, 152, 130, 151, 0, 0, 473, 0, 474, 139, ! 620: 471, 472, 0, 148, 21, 0, 0, 0, 36, 154, ! 621: 476, 475, 481, 482, 485, 136, 137, 25, 0, 132, ! 622: 0, 133, 0, 135, 134, 0, 0, 213, 0, 214, ! 623: 25, 211, 212, 0, 0, 0, 0, 480, 478, 479, ! 624: 477, 216, 215, 221, 222, 225, 0, 0, 0, 149, ! 625: 146, 144, 145, 147, 228, 143, 0, 0, 0, 0, ! 626: 0, 0, 0, 34, 138, 0, 152, 37, 220, 218, ! 627: 219, 217, 36, 0, 0, 0, 130, 151, 0, 0, ! 628: 31, 0, 0, 139, 0, 36, 24, 148, 0, 5, ! 629: 0, 0, 25, 154, 0, 130, 151, 0, 0, 136, ! 630: 137, 0, 139, 132, 0, 133, 148, 135, 134, 0, ! 631: 0, 0, 154, 0, 0, 0, 0, 0, 136, 137, ! 632: 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, ! 633: 0, 0, 0, 278, 146, 144, 145, 147, 0, 143, ! 634: 0, 0, 0, 0, 0, 0, 0, 36, 138, 0, ! 635: 152, 0, 149, 146, 144, 145, 147, 213, 143, 214, ! 636: 0, 211, 212, 0, 0, 127, 0, 138, 0, 152, ! 637: 0, 216, 215, 221, 0, 0, 25, 0, 0, 130, ! 638: 151, 0, 0, 0, 0, 0, 139, 0, 0, 0, ! 639: 148, 0, 0, 0, 0, 25, 154, 178, 220, 218, ! 640: 219, 217, 136, 137, 0, 0, 176, 0, 133, 0, ! 641: 135, 134, 213, 228, 214, 0, 211, 212, 0, 0, ! 642: 0, 0, 0, 0, 0, 0, 216, 215, 0, 157, ! 643: 0, 36, 228, 0, 547, 0, 149, 146, 144, 145, ! 644: 147, 0, 143, 213, 0, 214, 0, 211, 212, 0, ! 645: 36, 138, 0, 220, 218, 219, 217, 216, 215, 221, ! 646: 222, 225, 0, 210, 224, 0, 0, 0, 0, 0, ! 647: 0, 0, 0, 0, 213, 0, 214, 0, 211, 212, ! 648: 0, 0, 0, 223, 220, 218, 219, 217, 216, 215, ! 649: 221, 222, 225, 0, 210, 224, 544, 0, 543, 0, ! 650: 0, 0, 0, 0, 0, 213, 0, 214, 0, 211, ! 651: 212, 0, 0, 0, 223, 220, 218, 219, 217, 216, ! 652: 215, 221, 222, 225, 0, 210, 224, 0, 0, 179, ! 653: 535, 0, 0, 0, 0, 0, 0, 213, 0, 214, ! 654: 0, 211, 212, 0, 0, 223, 220, 218, 219, 217, ! 655: 0, 216, 215, 221, 222, 225, 0, 210, 224, 0, ! 656: 0, 0, 0, 0, 0, 0, 0, 0, 473, 0, ! 657: 474, 0, 471, 472, 0, 0, 0, 223, 220, 218, ! 658: 219, 217, 476, 475, 481, 482, 485, 532, 470, 484, ! 659: 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, ! 660: 0, 214, 0, 211, 212, 0, 0, 0, 483, 480, ! 661: 478, 479, 477, 216, 215, 221, 222, 225, 530, 210, ! 662: 224, 526, 0, 0, 0, 0, 0, 0, 0, 0, ! 663: 213, 0, 214, 0, 211, 212, 0, 0, 0, 223, ! 664: 220, 218, 219, 217, 216, 215, 221, 222, 225, 0, ! 665: 210, 224, 0, 0, 0, 0, 0, 0, 0, 0, ! 666: 0, 213, 0, 214, 0, 211, 212, 0, 0, 0, ! 667: 223, 220, 218, 219, 217, 216, 215, 221, 222, 225, ! 668: 0, 210, 224, 493, 0, 406, 0, 0, 0, 0, ! 669: 0, 0, 213, 0, 214, 0, 211, 212, 0, 0, ! 670: 0, 223, 220, 218, 219, 217, 216, 215, 221, 222, ! 671: 225, 0, 210, 224, 0, 0, 376, 0, 0, 0, ! 672: 0, 0, 0, 213, 0, 214, 0, 211, 212, 0, ! 673: 0, 0, 223, 220, 218, 219, 217, 216, 215, 221, ! 674: 222, 225, 0, 210, 224, 0, 0, 373, 0, 0, ! 675: 0, 0, 0, 0, 213, 0, 214, 0, 211, 212, ! 676: 0, 0, 0, 223, 220, 218, 219, 217, 216, 215, ! 677: 221, 222, 225, 0, 210, 224, 0, 0, 0, 0, ! 678: 0, 0, 0, 0, 0, 213, 0, 214, 0, 211, ! 679: 212, 0, 0, 0, 223, 220, 218, 219, 217, 216, ! 680: 215, 221, 222, 225, 372, 210, 224, 335, 0, 0, ! 681: 0, 0, 0, 0, 0, 0, 213, 0, 214, 0, ! 682: 211, 212, 0, 0, 0, 223, 220, 218, 219, 217, ! 683: 216, 215, 221, 222, 225, 0, 210, 224, 0, 0, ! 684: 277, 0, 0, 0, 0, 0, 0, 213, 0, 214, ! 685: 0, 211, 212, 0, 0, 0, 223, 220, 218, 219, ! 686: 217, 216, 215, 221, 222, 225, 0, 210, 224, 0, ! 687: 0, 0, 0, 0, 0, 0, 0, 0, 473, 0, ! 688: 474, 0, 471, 472, 0, 0, 0, 223, 220, 218, ! 689: 219, 217, 476, 475, 481, 482, 485, 0, 470, 484, ! 690: 0, 0, 0, 0, 0, 0, 0, 0, 0, 473, ! 691: 0, 474, 0, 471, 472, 0, 0, 0, 483, 480, ! 692: 478, 479, 477, 476, 475, 481, 482, 485, 213, 470, ! 693: 214, 0, 211, 212, 0, 0, 0, 0, 0, 0, ! 694: 0, 0, 216, 215, 221, 222, 225, 0, 210, 483, ! 695: 480, 478, 479, 477, 0, 0, 0, 0, 0, 0, ! 696: 0, 0, 0, 0, 0, 0, 0, 0, 223, 220, ! 697: 218, 219, 217 }; ! 698: short yypact[]={ ! 699: ! 700: 1597,-1000,-1000,-1000,-1000, 132,-1000,-1000,-1000,-1000, ! 701: -1000, 415, 640, 681,-1000, 304,-1000, 283, 129, 286, ! 702: 69,-1000,-1000,-1000,-1000,-1000, -81, 858,-1000, -17, ! 703: -28, -29,-1000,-1000, 467, 278,-1000,-1000,-1000, 29, ! 704: 577, 190,-1000,-1000, 304,-1000,-1000,-1000, 266, 65, ! 705: -1000,1294,1210,-1000, 478,-1000, 384,1053,-1000,1294, ! 706: -1000,-1000,1846,-1000, 478, 277,-1000,-1000,-1000,-1000, ! 707: 276, 358, 304,-1000, 689, 304,-1000,-1000,-1000,-1000, ! 708: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, ! 709: -1000, 381, 288,-1000,-1000,-1000,-1000,-1000,-1000,-1000, ! 710: -1000,-1000,-1000, 55,-1000,-1000, -19,-1000,-1000,-1000, ! 711: 602, 247,-1000,-1000,-1000,-1000, 47, 125,-1000,-1000, ! 712: 379, 478,1210, 23,-1000,1294,2368,1584, 503, -10, ! 713: 25,1659,1659,1659,1659,1659,1659,1659,1659,1659, ! 714: -1000,-1000,1144,-1000,-1000,-1000,-1000,-1000,-1000,-1000, ! 715: 35, 858, 411, 407,-1000, 181,2368,1210, 121,-1000, ! 716: 640,-1000,-1000, -83,-1000, 378, -25, 213,-1000,-1000, ! 717: -1000, 698, 411, 407, 364,2287,1743, 365,-1000, 69, ! 718: -1000,-1000, 277,-1000,-1000,-1000,-1000,-1000,-1000, 26, ! 719: -1000,-1000,-1000, 177, 160,-1000, 243, 129, 111, -49, ! 720: 166,-1000, 227, 47, 154, 49,-1000,-1000, 577,2368, ! 721: 1294,1294,1294,1294,1294,1294,1294,1294,1294,1294, ! 722: 1294,1294,1294,1294,1294,1294, -10,1294, 437,1520, ! 723: 25,-1000,1294, 370,1659, 370,1210,-1000,-1000,1053, ! 724: 1385, 599, -10, -10, -10, -10, 599, 599, 599, 599, ! 725: 1762,2256,1245,-1000, 858, 1,-1000,-1000,1210,1210, ! 726: -1000, 97, 71,-1000,-1000,-1000, -40,-1000, 349, 207, ! 727: -1000,1210,-1000, 530,-1000, 692, 275,-1000, 343,-1000, ! 728: -40, 543,-1000,-1000,-1000,-1000,-1000,-1000, 152,-1000, ! 729: 188,-1000,-1000, 501, 338,-1000, 47,1294, 148,-1000, ! 730: 71,-1000,-1000,2368, 70, 70,-1000,1188,1455,1003, ! 731: 268,1061,-1000, 613,1852,1797,2368,2368,2225,2194, ! 732: -10,1294,-1000,-1000,1053,2163,-1000,-1000, 599,-1000, ! 733: -1000, 337, 324, 368, 26,-1000, 455, 50, 198,-1000, ! 734: -1000,-1000, 323, 318,-1000,-1000, -54, 292,-1000,-1000, ! 735: -1000,-1000,-1000,-1000,-1000,1210,-1000, 297, 479, 402, ! 736: 402, -99,-1000, -49,-1000, 1,-1000, 1,-1000,2368, ! 737: -1000,-1000,1294,1659,2132, 315,-1000,-1000, 25,-1000, ! 738: 368,-1000,-1000, 368, 371,-1000,-1000,-1000,-1000, 95, ! 739: 184,-1000,1210, 401, -40,-1000,-1000,-1000,-1000,-1000, ! 740: -1000,-1000,-1000,-1000,1667, -10,1659, 25,-1000,-1000, ! 741: 478, 297, 76,-1000, 292, 306,1210, 240, -10,-1000, ! 742: -1000,-1000,-1000,-1000,-1000, 987,-1000,-1000, 301, 71, ! 743: -1000,-1000,-1000,1294, 127,-1000,-1000,-1000, 389, 389, ! 744: 399, 389, 234, 231,-1000, 230,2318,-1000,-1000, 45, ! 745: -1000, 396,1445, 495, -10,-1000,-1000,-1000, 140,2101, ! 746: 71,-1000,1294,-1000,-1000,-1000,-1000,-1000,1294,-1000, ! 747: 1360,1360,1360,1360,1360,1360,1360,1360,1360,1360, ! 748: 1360,1360,1360,1360,1360,1360,-1000,-1000, 10, -10, ! 749: 1294,1379,-1000,-1000,-1000, 450,2070,-1000,-1000,-1000, ! 750: -1000,-1000,2039,-1000,2349, 38, 38,-1000,1160, 997, ! 751: 736, 101, 542,-1000, 484,1067,1222,2349,2349,2008, ! 752: 419, 293,1977, -10,1294,-1000,-1000,1294,-1000,-1000, ! 753: -1000,-1000,1360, 389,-1000,1659,1945,-1000,1914,-1000, ! 754: 1636,-1000, -10,1659,1294, -10,1883,-1000,-1000 }; ! 755: short yypgo[]={ ! 756: ! 757: 0, 670, 71, 53, 2, 449, 12, 669, 9, 6, ! 758: 665, 11, 64, 43, 662, 49, 23, 17, 25, 659, ! 759: 650, 45, 640, 637, 51, 631, 33, 675, 19, 630, ! 760: 1, 620, 5, 616, 611, 610, 4, 54, 79, 0, ! 761: 22, 609, 15, 26, 24, 41, 608, 16, 18, 607, ! 762: 21, 604, 14, 8, 3, 36, 593, 567, 39, 591, ! 763: 586, 574, 573, 13, 10, 494, 50, 571, 546, 541, ! 764: 531, 529, 528, 522, 511, 510, 509, 506, 499, 468, ! 765: 29 }; ! 766: short yyr1[]={ ! 767: ! 768: 0, 10, 10, 10, 10, 10, 1, 1, 1, 1, ! 769: 1, 2, 2, 4, 4, 4, 3, 3, 3, 67, ! 770: 60, 66, 68, 6, 6, 7, 7, 8, 8, 5, ! 771: 5, 24, 24, 24, 24, 25, 25, 9, 9, 14, ! 772: 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, ! 773: 13, 13, 19, 19, 15, 15, 15, 16, 16, 17, ! 774: 17, 17, 69, 21, 21, 21, 70, 70, 61, 61, ! 775: 62, 62, 63, 63, 63, 63, 63, 20, 20, 18, ! 776: 18, 22, 22, 23, 23, 23, 23, 23, 23, 23, ! 777: 23, 26, 26, 26, 26, 58, 58, 58, 58, 58, ! 778: 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, ! 779: 58, 58, 58, 58, 58, 58, 58, 58, 58, 56, ! 780: 56, 57, 57, 64, 64, 27, 27, 27, 27, 27, ! 781: 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, ! 782: 27, 27, 47, 47, 47, 47, 47, 47, 47, 52, ! 783: 52, 52, 42, 42, 42, 42, 42, 44, 44, 29, ! 784: 29, 30, 31, 54, 71, 32, 32, 32, 34, 34, ! 785: 34, 34, 72, 34, 34, 74, 73, 33, 33, 33, ! 786: 33, 33, 33, 33, 33, 33, 33, 75, 33, 33, ! 787: 76, 33, 77, 33, 78, 33, 79, 33, 36, 35, ! 788: 35, 28, 28, 38, 38, 38, 38, 38, 38, 38, ! 789: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, ! 790: 38, 38, 38, 38, 37, 37, 37, 37, 37, 37, ! 791: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, ! 792: 37, 37, 37, 37, 37, 37, 39, 39, 39, 39, ! 793: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, ! 794: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, ! 795: 39, 39, 39, 39, 39, 39, 41, 41, 41, 41, ! 796: 41, 41, 41, 55, 55, 40, 40, 40, 40, 40, ! 797: 40, 40, 43, 80, 46, 46, 46, 46, 45, 53, ! 798: 49, 49, 65, 50, 51, 51, 48, 48, 59, 59, ! 799: 59, 12, 12, 12, 12, 12, 12, 12, 11, 11 }; ! 800: short yyr2[]={ ! 801: ! 802: 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, ! 803: 5, 4, 2, 6, 5, 5, 5, 4, 4, 0, ! 804: 4, 0, 0, 3, 0, 1, 3, 3, 4, 2, ! 805: 0, 1, 3, 2, 3, 1, 3, 3, 2, 1, ! 806: 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, ! 807: 2, 2, 1, 1, 4, 5, 2, 1, 3, 1, ! 808: 3, 0, 0, 5, 2, 2, 0, 2, 2, 0, ! 809: 1, 3, 1, 2, 2, 3, 3, 2, 4, 1, ! 810: 1, 2, 0, 1, 2, 2, 1, 1, 1, 2, ! 811: 3, 1, 2, 2, 2, 1, 1, 1, 1, 1, ! 812: 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, ! 813: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ! 814: 2, 2, 1, 0, 2, 2, 4, 2, 4, 6, ! 815: 4, 4, 6, 1, 3, 2, 4, 2, 2, 2, ! 816: 2, 3, 1, 2, 0, 2, 2, 2, 3, 0, ! 817: 2, 2, 0, 2, 2, 4, 4, 0, 2, 0, ! 818: 2, 2, 0, 3, 0, 4, 2, 3, 1, 1, ! 819: 1, 2, 0, 5, 4, 0, 2, 2, 1, 3, ! 820: 3, 1, 1, 1, 3, 5, 3, 0, 9, 3, ! 821: 0, 4, 0, 4, 0, 5, 0, 4, 1, 1, ! 822: 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, ! 823: 3, 3, 3, 3, 3, 3, 3, 3, 5, 2, ! 824: 5, 3, 6, 1, 3, 3, 3, 3, 3, 3, ! 825: 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, ! 826: 2, 5, 3, 6, 1, 0, 2, 2, 3, 3, ! 827: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ! 828: 2, 4, 3, 3, 3, 3, 3, 1, 1, 3, ! 829: 1, 1, 1, 1, 1, 1, 4, 4, 5, 5, ! 830: 6, 6, 4, 1, 1, 1, 2, 2, 3, 2, ! 831: 3, 3, 4, 1, 1, 1, 2, 2, 2, 2, ! 832: 2, 4, 1, 5, 3, 1, 1, 0, 0, 1, ! 833: 2, 1, 1, 2, 2, 2, 1, 2, 3, 1 }; ! 834: short yychk[]={ ! 835: ! 836: -1000, -10, -1, 72, 0, 182, 74, -9, -4, -3, ! 837: -2, 1, -13, -27, -14, -57, -26, 80, -56, -12, ! 838: -65, 97, -21, -15, 179, 123, 47, 24, -55, 50, ! 839: 52, 173, 40, -20, 156, 13, 178, 160, 73, 40, ! 840: -27, -25, 72, 97, -57, -21, -15, 179, 80, -56, ! 841: -24, 69, 70, 72, -5, -50, 40, -65, -11, 42, ! 842: 46, -50, 40, -11, -65, 45, 179, -55, 123, -26, ! 843: 80, -27, -57, 97, -27, -57, 123, -58, -45, 54, ! 844: 55, 50, 52, 65, 64, 94, 92, 93, 91, 66, ! 845: 67, 40, 42, 46, 47, 95, 90, 70, 23, 9, ! 846: 44, 71, 180, -46, 97, -57, -56, 97, 97, 97, ! 847: -22, -18, 179, 73, 80, -57, 73, -19, -18, 179, ! 848: 81, -5, 70, 71, 72, 69, -37, 9, 160, -39, ! 849: 23, -43, 50, 52, 55, 54, 46, 47, 95, 30, ! 850: -40, -41, -80, 86, 82, 83, 81, 84, 34, 80, ! 851: -56, 24, 97, -57, 40, -28, -37, 73, -66, -9, ! 852: -13, 182, -57, -56, 41, -36, -51, -35, -48, -28, ! 853: -49, -13, 97, -57, -56, -37, 50, -36, 41, 173, ! 854: -26, 80, 45, 41, 41, 43, 97, -57, -44, -12, ! 855: 74, -23, -9, -4, -3, -2, 175, -56, -61, 69, ! 856: -16, -17, 80, 73, 41, -66, -28, -24, -27, -37, ! 857: 70, 54, 55, 50, 52, 65, 64, 94, 92, 93, ! 858: 91, 66, 67, 90, 71, 68, -39, 42, 160, 9, ! 859: 23, 95, 42, 44, 180, 45, 40, -43, -53, -80, ! 860: -13, -39, -39, -39, -39, -39, -39, -39, -39, -39, ! 861: -43, -37, -13, 80, 24, 47, -58, -45, 40, 40, ! 862: 72, -36, -6, 124, 125, 69, -64, 41, -59, 71, ! 863: 155, 71, -57, -47, 80, -12, -65, 43, 80, 41, ! 864: -64, -27, -26, -44, -69, 72, 72, 69, -26, 73, ! 865: -62, -63, -18, 175, 97, 74, 71, 70, -16, 72, ! 866: -6, 124, 125, -37, -37, -37, -37, -37, -37, -37, ! 867: -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, ! 868: -39, 42, -43, -53, -80, -37, -40, -57, -39, -40, ! 869: -57, -36, -36, -52, -12, 41, -42, -12, 40, -58, ! 870: -45, -18, -36, -36, 74, -32, 73, -68, 97, 41, ! 871: -48, 155, -28, -11, -50, 70, -57, -47, -47, 41, ! 872: 41, -70, 72, 71, -18, 97, -18, 175, -17, -37, ! 873: 74, -32, 69, 43, -37, -36, 43, 41, 41, -11, ! 874: -52, -11, 41, -42, -42, 41, 41, -71, 74, 256, ! 875: -7, -8, 40, -18, -64, -28, 41, -50, -50, -60, ! 876: 127, -63, -18, -18, -37, -39, 43, 41, -43, -53, ! 877: -80, 41, -29, 74, 71, -36, 40, -67, -39, -43, ! 878: -53, -50, -11, -30, 74, -31, -8, 41, -36, -6, ! 879: -33, -34, 72, 28, 97, -9, -4, -32, 20, 39, ! 880: 16, 33, 80, 123, 4, 8, -38, 3, 7, 19, ! 881: 10, 1, 9, 160, -39, 41, -32, -73, -74, -37, ! 882: 81, -54, 40, -54, 40, -54, 69, 69, -78, 69, ! 883: 70, 54, 55, 50, 52, 65, 64, 94, 92, 93, ! 884: 91, 66, 67, 90, 71, 68, 80, -72, 40, -39, ! 885: 42, 9, 72, 72, -32, -30, -37, -30, -75, -30, ! 886: -76, -77, -37, -79, -38, -38, -38, -38, -38, -38, ! 887: -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, ! 888: -30, 81, -37, -39, 42, 12, 41, -30, -30, -30, ! 889: 69, -30, 69, 39, 41, 43, -37, -30, -37, -30, ! 890: -38, -54, -39, 43, 72, -39, -37, 41, -30 }; ! 891: short yydef[]={ ! 892: ! 893: 0, -2, 1, 2, 3, 40, 5, 6, 7, 8, ! 894: 9, 0, 0, 30, 46, 41, 133, 91, 0, 0, ! 895: 0, 39, 43, 44, 45, 122, 0, 0, 119, 311, ! 896: 312, 316, 302, 82, 0, 0, 283, 284, 4, 0, ! 897: -2, 0, 38, 47, 48, 49, 50, 51, 91, 0, ! 898: 35, 245, 245, 12, 21, 125, 302, -2, 140, 245, ! 899: 319, 127, -2, 139, 307, 0, 42, 120, 121, 135, ! 900: 91, 137, 138, 314, 0, 0, 92, 93, 94, 95, ! 901: 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, ! 902: 106, 0, 0, 109, 110, 111, 112, 113, 114, 115, ! 903: 116, 117, 118, 157, 294, 295, 0, 313, 315, 317, ! 904: 0, -2, 65, 77, 79, 80, 61, 56, 52, 53, ! 905: 0, 21, 245, 0, 37, 245, 33, 0, 284, 244, ! 906: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 907: 267, 268, 245, 270, 271, 272, 273, 274, 275, 285, ! 908: 0, 0, 0, 0, 293, 0, 201, 245, 24, 29, ! 909: 0, 40, 41, 0, 123, 0, 308, 198, 305, 199, ! 910: 306, 144, 39, 41, 0, 0, 0, 0, 123, 0, ! 911: 134, 91, 0, 141, 107, 108, 296, 297, 298, 157, ! 912: 62, 81, 83, 87, 86, 88, 0, 0, 0, 0, ! 913: 0, 57, 59, 61, 0, 24, 34, 36, 31, 32, ! 914: 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, ! 915: 245, 245, 245, 245, 245, 245, 240, 245, 284, 0, ! 916: 0, 250, 245, 0, 0, 0, 245, 246, 247, 245, ! 917: 149, 251, 252, 253, 254, 255, 256, 257, 258, 259, ! 918: 260, 0, 152, 286, 0, 0, 287, 289, 245, 245, ! 919: 11, 0, 0, 17, 18, 22, 126, 128, 0, 307, ! 920: 309, 245, 48, 300, 142, 144, 144, 318, 285, 130, ! 921: 131, 0, 136, 158, 66, 84, 85, 89, 135, 78, ! 922: 68, 70, 72, 0, 0, 54, 61, 245, 0, 10, ! 923: 0, 14, 15, 224, 225, 226, 227, 228, 229, 230, ! 924: 231, 232, 233, 234, 235, 236, 237, 238, 0, 0, ! 925: 242, 245, 248, 249, 245, 0, 262, 264, 263, 265, ! 926: 266, 0, 0, 299, 149, 269, 0, 152, 152, 288, ! 927: 290, 291, 0, 0, 202, 16, -2, 0, 124, 123, ! 928: 304, 310, 200, 146, 147, 245, 143, 145, 0, 0, ! 929: 0, 63, 90, 0, 73, 0, 74, 0, 58, 60, ! 930: 55, 13, 245, 0, 0, 0, 261, 282, 0, 151, ! 931: 150, 154, 292, 153, 0, 276, 277, 159, 166, 0, ! 932: 23, 25, 245, 0, 303, 301, 148, 129, 132, 67, ! 933: 19, 71, 75, 76, 239, 241, 0, 0, 278, 279, ! 934: 0, 0, 162, 167, 0, 0, 245, 24, 243, 280, ! 935: 281, 155, 156, 160, 165, 0, 26, 27, 0, 0, ! 936: 161, 175, 178, 245, 39, 181, 182, 183, 0, 0, ! 937: 0, 0, 285, 122, 194, 0, 168, 169, 170, 0, ! 938: 172, 0, 0, 284, 223, 28, 20, 177, 0, 0, ! 939: 0, 162, 245, 162, 187, 162, 190, 192, 245, 196, ! 940: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 941: 0, 0, 0, 0, 0, 0, 171, 162, 0, 219, ! 942: 245, 0, 176, 179, 180, 184, 0, 186, 162, 189, ! 943: 162, 162, 0, 162, 203, 204, 205, 206, 207, 208, ! 944: 209, 210, 211, 212, 213, 214, 215, 216, 217, 0, ! 945: 0, 0, 0, 221, 245, 162, 163, 245, 191, 193, ! 946: 162, 197, 0, 0, 174, 0, 0, 185, 0, 195, ! 947: 218, 173, 220, 0, 245, 222, 0, 162, 188 }; ! 948: # ifdef YYDEBUG ! 949: # include "y.debug" ! 950: # endif ! 951: ! 952: # define YYFLAG -1000 ! 953: # define YYERROR goto yyerrlab ! 954: # define YYACCEPT return(0) ! 955: # define YYABORT return(1) ! 956: ! 957: /* parser for yacc output */ ! 958: ! 959: #ifdef YYDEBUG ! 960: int yydebug = 0; /* 1 for debugging */ ! 961: #endif ! 962: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ ! 963: int yychar = -1; /* current input token number */ ! 964: int yynerrs = 0; /* number of errors */ ! 965: short yyerrflag = 0; /* error recovery flag */ ! 966: ! 967: yyparse() ! 968: { short yys[YYMAXDEPTH]; ! 969: int yyj, yym; ! 970: register YYSTYPE *yypvt; ! 971: register int yystate, yyn; ! 972: register short *yyps; ! 973: register YYSTYPE *yypv; ! 974: register short *yyxi; ! 975: ! 976: yystate = 0; ! 977: yychar = -1; ! 978: yynerrs = 0; ! 979: yyerrflag = 0; ! 980: yyps= &yys[-1]; ! 981: yypv= &yyv[-1]; ! 982: ! 983: yystack: /* put a state and value onto the stack */ ! 984: #ifdef YYDEBUG ! 985: if(yydebug >= 3) ! 986: if(yychar < 0 || yytoknames[yychar] == 0) ! 987: printf("char %d in %s", yychar, yystates[yystate]); ! 988: else ! 989: printf("%s in %s", yytoknames[yychar], yystates[yystate]); ! 990: #endif ! 991: if( ++yyps >= &yys[YYMAXDEPTH] ) { ! 992: yyerror( "yacc stack overflow" ); ! 993: return(1); ! 994: } ! 995: *yyps = yystate; ! 996: ++yypv; ! 997: *yypv = yyval; ! 998: yynewstate: ! 999: yyn = yypact[yystate]; ! 1000: if(yyn <= YYFLAG) goto yydefault; /* simple state */ ! 1001: if(yychar<0) { ! 1002: yychar = yylex(); ! 1003: #ifdef YYDEBUG ! 1004: if(yydebug >= 2) { ! 1005: if(yychar <= 0) ! 1006: printf("lex EOF\n"); ! 1007: else if(yytoknames[yychar]) ! 1008: printf("lex %s\n", yytoknames[yychar]); ! 1009: else ! 1010: printf("lex (%c)\n", yychar); ! 1011: } ! 1012: #endif ! 1013: if(yychar < 0) ! 1014: yychar = 0; ! 1015: } ! 1016: if((yyn += yychar) < 0 || yyn >= YYLAST) ! 1017: goto yydefault; ! 1018: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ ! 1019: yychar = -1; ! 1020: yyval = yylval; ! 1021: yystate = yyn; ! 1022: if( yyerrflag > 0 ) --yyerrflag; ! 1023: goto yystack; ! 1024: } ! 1025: yydefault: ! 1026: /* default state action */ ! 1027: if( (yyn=yydef[yystate]) == -2 ) { ! 1028: if(yychar < 0) { ! 1029: yychar = yylex(); ! 1030: #ifdef YYDEBUG ! 1031: if(yydebug >= 2) ! 1032: if(yychar < 0) ! 1033: printf("lex EOF\n"); ! 1034: else ! 1035: printf("lex %s\n", yytoknames[yychar]); ! 1036: #endif ! 1037: if(yychar < 0) ! 1038: yychar = 0; ! 1039: } ! 1040: /* look through exception table */ ! 1041: for(yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate); ! 1042: yyxi += 2 ) ; /* VOID */ ! 1043: while( *(yyxi+=2) >= 0 ){ ! 1044: if( *yyxi == yychar ) break; ! 1045: } ! 1046: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ ! 1047: } ! 1048: if( yyn == 0 ){ /* error */ ! 1049: /* error ... attempt to resume parsing */ ! 1050: switch( yyerrflag ){ ! 1051: case 0: /* brand new error */ ! 1052: #ifdef YYDEBUG ! 1053: yyerror("syntax error\n%s", yystates[yystate]); ! 1054: if(yytoknames[yychar]) ! 1055: yyerror("saw %s\n", yytoknames[yychar]); ! 1056: else if(yychar >= ' ' && yychar < '\177') ! 1057: yyerror("saw `%c'\n", yychar); ! 1058: else if(yychar == 0) ! 1059: yyerror("saw EOF\n"); ! 1060: else ! 1061: yyerror("saw char 0%o\n", yychar); ! 1062: #else ! 1063: yyerror( "syntax error" ); ! 1064: #endif ! 1065: yyerrlab: ! 1066: ++yynerrs; ! 1067: case 1: ! 1068: case 2: /* incompletely recovered error ... try again */ ! 1069: yyerrflag = 3; ! 1070: /* find a state where "error" is a legal shift action */ ! 1071: while ( yyps >= yys ) { ! 1072: yyn = yypact[*yyps] + YYERRCODE; ! 1073: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ ! 1074: yystate = yyact[yyn]; /* simulate a shift of "error" */ ! 1075: goto yystack; ! 1076: } ! 1077: yyn = yypact[*yyps]; ! 1078: /* the current yyps has no shift onn "error", pop stack */ ! 1079: #ifdef YYDEBUG ! 1080: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] ); ! 1081: #endif ! 1082: --yyps; ! 1083: --yypv; ! 1084: } ! 1085: /* there is no state on the stack with an error shift ... abort */ ! 1086: yyabort: ! 1087: return(1); ! 1088: case 3: /* no shift yet; clobber input char */ ! 1089: #ifdef YYDEBUG ! 1090: if( yydebug ) { ! 1091: printf("error recovery discards "); ! 1092: if(yytoknames[yychar]) ! 1093: printf("%s\n", yytoknames[yychar]); ! 1094: else if(yychar >= ' ' && yychar < '\177') ! 1095: printf("`%c'\n", yychar); ! 1096: else if(yychar == 0) ! 1097: printf("EOF\n"); ! 1098: else ! 1099: printf("char 0%o\n", yychar); ! 1100: } ! 1101: #endif ! 1102: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ ! 1103: yychar = -1; ! 1104: goto yynewstate; /* try again in the same state */ ! 1105: } ! 1106: } ! 1107: /* reduction by production yyn */ ! 1108: #ifdef YYDEBUG ! 1109: if(yydebug) { char *s; ! 1110: printf("reduce %d in:\n\t", yyn); ! 1111: for(s = yystates[yystate]; *s; s++) { ! 1112: putchar(*s); ! 1113: if(*s == '\n' && *(s+1)) ! 1114: putchar('\t'); ! 1115: } ! 1116: } ! 1117: #endif ! 1118: yyps -= yyr2[yyn]; ! 1119: yypvt = yypv; ! 1120: yypv -= yyr2[yyn]; ! 1121: yyval = yypv[1]; ! 1122: yym=yyn; ! 1123: /* consult goto table to find next state */ ! 1124: yyn = yyr1[yyn]; ! 1125: yyj = yypgo[yyn] + *yyps + 1; ! 1126: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; ! 1127: switch(yym){ ! 1128: ! 1129: case 1: ! 1130: # line 415 "gram.y" ! 1131: { return 2; } break; ! 1132: case 2: ! 1133: # line 416 "gram.y" ! 1134: { return 1; } break; ! 1135: case 3: ! 1136: # line 417 "gram.y" ! 1137: { return 0; } break; ! 1138: case 4: ! 1139: # line 419 "gram.y" ! 1140: { ! 1141: set_linkage(yypvt[-1].s); ! 1142: bl_level--; ! 1143: return 1; ! 1144: } break; ! 1145: case 5: ! 1146: # line 425 "gram.y" ! 1147: { ! 1148: set_linkage(0); ! 1149: bl_level++; ! 1150: return 1; ! 1151: } break; ! 1152: case 6: ! 1153: # line 433 "gram.y" ! 1154: { ! 1155: /* if function declartion with arguments ! 1156: * need to make sure modified_tn is traversed */ ! 1157: if ( yypvt[-0].pn != 0 ! 1158: && yypvt[-0].pn->tp->base == FCT ! 1159: && Pfct(yypvt[-0].pn->tp)->nargs !=0 ) ! 1160: goto mod; ! 1161: else { ! 1162: modified_tn = 0; ! 1163: curr_scope = 0; ! 1164: if (yypvt[-0].pn==0) yyval.i = 1; ! 1165: } ! 1166: } break; ! 1167: case 7: ! 1168: # line 447 "gram.y" ! 1169: { goto mod; } break; ! 1170: case 8: ! 1171: # line 449 "gram.y" ! 1172: { goto mod; } break; ! 1173: case 9: ! 1174: # line 451 "gram.y" ! 1175: { mod: if (modified_tn) { ! 1176: restore(); ! 1177: modified_tn = 0; ! 1178: } ! 1179: local_blk = 0; ! 1180: curr_scope = 0; ! 1181: if (local_tn) { ! 1182: local_restore(); ! 1183: local_tn = 0; ! 1184: } ! 1185: ! 1186: if (nested_tn) { // x::f(){} ! 1187: nested_restore(); ! 1188: nested_tn = 0; ! 1189: nested_type = 0; ! 1190: } ! 1191: } break; ! 1192: case 10: ! 1193: # line 469 "gram.y" ! 1194: { Pname n = new name(make_name('A')); ! 1195: n->tp = new basetype(ASM,0); ! 1196: Pbase(n->tp)->b_name = Pname(yypvt[-2].s); ! 1197: yyval.p = n; ! 1198: } break; ! 1199: case 11: ! 1200: # line 477 "gram.y" ! 1201: { ! 1202: err_name = yypvt[-3].pn; ! 1203: if(err_name) err_name->n_initializer = yypvt[-1].pe; ! 1204: goto fix; ! 1205: } break; ! 1206: case 12: ! 1207: # line 483 "gram.y" ! 1208: { ! 1209: Ptype t; ! 1210: err_name = yypvt[-1].pn; ! 1211: fix: ! 1212: if (err_name == 0) { ! 1213: error("syntax error:TX"); ! 1214: yyval.p = Ndata(defa_type,err_name); ! 1215: } ! 1216: else if ((t=err_name->tp) == 0) { ! 1217: error("TX for%n",err_name); ! 1218: yyval.p = Ndata(defa_type,err_name); ! 1219: } ! 1220: else if (t->base==FCT) { ! 1221: if (Pfct(t)->returns==0) ! 1222: yyval.p = Nfct(defa_type,err_name,0); ! 1223: else ! 1224: yyval.p = Ndata(0,err_name); ! 1225: } ! 1226: else { ! 1227: error("syntax error:TX for%k%n",t->base,err_name); ! 1228: yyval.p = Ndata(defa_type,err_name); ! 1229: } ! 1230: } break; ! 1231: case 13: ! 1232: # line 509 "gram.y" ! 1233: { Pname n = Nfct(yypvt[-5].p,yypvt[-4].pn,yypvt[-0].p); ! 1234: Fargdcl(n->tp,name_unlist(yypvt[-3].nl),n); ! 1235: Finit(n->tp) = yypvt[-1].pn; ! 1236: yyval.p = n; ! 1237: NOT_EXPECT_ID(); ! 1238: } break; ! 1239: case 14: ! 1240: # line 516 "gram.y" ! 1241: { ! 1242: Pname n = Nfct(yypvt[-4].p,yypvt[-3].pn,dummy); ! 1243: Fargdcl(n->tp,name_unlist(yypvt[-2].nl),n); ! 1244: yypvt[-0].q->retval.pn = n; ! 1245: yyval.p = n; ! 1246: NOT_EXPECT_ID(); ! 1247: } break; ! 1248: case 15: ! 1249: # line 524 "gram.y" ! 1250: { ! 1251: error(&yypvt[-3].pn->where,"syntax error -- did you forget a ';'?"); ! 1252: Pname n = Nfct(yypvt[-4].p,yypvt[-3].pn,0); ! 1253: yyval.p = n; ! 1254: NOT_EXPECT_ID(); ! 1255: } break; ! 1256: case 16: ! 1257: # line 533 "gram.y" ! 1258: { Pname n = Nfct(defa_type,yypvt[-4].pn,yypvt[-0].p); ! 1259: Fargdcl(n->tp,name_unlist(yypvt[-3].nl),n); ! 1260: if ( yypvt[-1].pn && yypvt[-1].pn->n_list && ! 1261: ccl && ccl->csu == UNION ) ! 1262: error( "multiple initializers in unionK %s::%n", yypvt[-4].pn->string, yypvt[-4].pn ); ! 1263: Finit(n->tp) = yypvt[-1].pn; ! 1264: yyval.p = n; ! 1265: NOT_EXPECT_ID(); ! 1266: } break; ! 1267: case 17: ! 1268: # line 543 "gram.y" ! 1269: { ! 1270: Pname n = Nfct(defa_type,yypvt[-3].pn,dummy); ! 1271: Fargdcl(n->tp,name_unlist(yypvt[-2].nl),n); ! 1272: yypvt[-0].q->retval.pn = n; ! 1273: yyval.p = n; ! 1274: NOT_EXPECT_ID(); ! 1275: } break; ! 1276: case 18: ! 1277: # line 551 "gram.y" ! 1278: { ! 1279: error(&yypvt[-3].pn->where,"badD of%n -- did you forget a ';'?",yypvt[-3].pn); ! 1280: Pname n = Nfct(defa_type,yypvt[-3].pn,0); ! 1281: yyval.p = n; ! 1282: NOT_EXPECT_ID(); ! 1283: } break; ! 1284: case 19: ! 1285: # line 559 "gram.y" ! 1286: { arg_redec(yypvt[-0].pn); } break; ! 1287: case 20: ! 1288: # line 561 "gram.y" ! 1289: { ! 1290: Finit(yypvt[-3].pn->tp) = yypvt[-1].pn; ! 1291: Pfct(yypvt[-3].pn->tp)->body = Pblock(yypvt[-0].p); ! 1292: yyval.pn = yypvt[-3].pn; ! 1293: NOT_EXPECT_ID(); ! 1294: } break; ! 1295: case 21: ! 1296: # line 571 "gram.y" ! 1297: { ! 1298: // if parsing implicit inline def, save body ! 1299: // of function for parsing after class def ! 1300: switch ( NEXTTOK() ) { ! 1301: case LC: case COLON: ! 1302: if ( in_class_decl ) { ! 1303: // mem or friend inline def ! 1304: // save text of mem_init & ftn ! 1305: la_backup(yychar,yylval); ! 1306: // yylval used as dummy... ! 1307: la_backup(FDEF, yylval); ! 1308: if ( yylval.q = save_text() ) ! 1309: yychar = EMPTY; ! 1310: else { // syntax error ! 1311: // just parse in place ! 1312: yylex(); // FDEF ! 1313: yychar = yylex(); ! 1314: } ! 1315: } // if in_class_decl ! 1316: break; ! 1317: default: ! 1318: la_backup(yychar,yylval); ! 1319: yychar = NO_ID; // 'graceful' recovery ! 1320: break; ! 1321: } ! 1322: } break; ! 1323: case 22: ! 1324: # line 599 "gram.y" ! 1325: { ++in_binit_list; } break; ! 1326: case 23: ! 1327: # line 600 "gram.y" ! 1328: { ! 1329: yyval.p = yypvt[-0].p; ! 1330: in_arg_list = 0; ! 1331: --in_binit_list; ! 1332: } break; ! 1333: case 24: ! 1334: # line 606 "gram.y" ! 1335: { yyval.p = 0; } break; ! 1336: case 25: ! 1337: # line 610 "gram.y" ! 1338: { yyval.p = yypvt[-0].p; } break; ! 1339: case 26: ! 1340: # line 612 "gram.y" ! 1341: { yyval.pn = yypvt[-0].pn; yyval.pn->n_list = yypvt[-2].pn; } break; ! 1342: case 27: ! 1343: # line 616 "gram.y" ! 1344: { ! 1345: yyval.pn = new name; ! 1346: yyval.pn->n_initializer = yypvt[-1].pe; ! 1347: } break; ! 1348: case 28: ! 1349: # line 621 "gram.y" ! 1350: { ! 1351: Pname n = Ncopy(yypvt[-3].pn); ! 1352: n->base = yypvt[-3].pn->base; ! 1353: n->tp = yypvt[-3].pn->tp; ! 1354: n->n_initializer = yypvt[-1].pe; ! 1355: yyval.pn = n; ! 1356: } break; ! 1357: case 29: ! 1358: # line 645 "gram.y" ! 1359: { if (yypvt[-0].pn == 0) ! 1360: error("badAD"); ! 1361: else if (yypvt[-0].pn->tp->base == FCT) ! 1362: error("FD inAL (%n)",yypvt[-0].pn); ! 1363: else if (yypvt[-1].p) ! 1364: yypvt[-1].nl->add_list(yypvt[-0].pn); ! 1365: else ! 1366: yyval.nl = new nlist(yypvt[-0].pn); ! 1367: } break; ! 1368: case 30: ! 1369: # line 655 "gram.y" ! 1370: { ! 1371: yyval.p = 0; ! 1372: } break; ! 1373: case 32: ! 1374: # line 662 "gram.y" ! 1375: { yyval.p = yypvt[-2].pn; ! 1376: yyval.pn->tp = new basetype(FIELD,yypvt[-0].pn); ! 1377: } break; ! 1378: case 33: ! 1379: # line 666 "gram.y" ! 1380: { yyval.p = new name; ! 1381: yyval.pn->tp = new basetype(FIELD,yypvt[-0].pn); ! 1382: } break; ! 1383: case 34: ! 1384: # line 670 "gram.y" ! 1385: { Pexpr e = yypvt[-0].pe; ! 1386: if (e == dummy) error("emptyIr"); ! 1387: yypvt[-2].pn->n_initializer = e; ! 1388: init_seen = 0; ! 1389: } break; ! 1390: case 35: ! 1391: # line 678 "gram.y" ! 1392: { ! 1393: if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn); ! 1394: if ( NEXTTOK() == CM && la_look() == TNAME ) ! 1395: EXPECT_ID(); ! 1396: } break; ! 1397: case 36: ! 1398: # line 684 "gram.y" ! 1399: { if (yypvt[-2].p) ! 1400: if (yypvt[-0].p) ! 1401: yypvt[-2].nl->add(yypvt[-0].pn); ! 1402: else ! 1403: error("DL syntax"); ! 1404: else { ! 1405: if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn); ! 1406: error("DL syntax"); ! 1407: } ! 1408: if ( NEXTTOK() == CM && la_look() == TNAME ) ! 1409: EXPECT_ID(); ! 1410: } break; ! 1411: case 37: ! 1412: # line 699 "gram.y" ! 1413: { ! 1414: extern int co_hack; ! 1415: co_hack = 1; ! 1416: /*$$ = Ndata($1,name_unlist($<nl>2));*/ ! 1417: Pname n = Ndata(yypvt[-2].p,name_unlist(yypvt[-1].nl)); ! 1418: if ( in_typedef && in_tag ) { ! 1419: if ( n->tp->check( in_tag->tp, 0 )) ! 1420: error("%nredefined: previous: %t now: %t", in_tag, in_tag->tp, n->tp ); ! 1421: } ! 1422: in_typedef = 0; ! 1423: class_typedef = 0; ! 1424: in_tag = 0; ! 1425: co_hack = 0; ! 1426: DECL_TYPE = 0; ! 1427: yyval.p = n; ! 1428: } break; ! 1429: case 38: ! 1430: # line 716 "gram.y" ! 1431: { ! 1432: yyval.p = yypvt[-1].pb->aggr(); ! 1433: in_typedef = 0; ! 1434: class_typedef = 0; ! 1435: in_tag = 0; ! 1436: DECL_TYPE = 0; ! 1437: } break; ! 1438: case 39: ! 1439: # line 727 "gram.y" ! 1440: { ! 1441: yyval.p = new basetype(yypvt[-0].t,0); ! 1442: if ( yypvt[-0].t == TYPEDEF ) in_typedef = yyval.pt; ! 1443: if (DECL_TYPE == -1) DECL_TYPE = 0; ! 1444: } break; ! 1445: case 40: ! 1446: # line 733 "gram.y" ! 1447: { yyval.p = new basetype(EXTERN,0); ! 1448: yyval.pb->b_linkage = yypvt[-0].s; ! 1449: if (DECL_TYPE == -1) DECL_TYPE = 0; ! 1450: } break; ! 1451: case 41: ! 1452: # line 738 "gram.y" ! 1453: { ! 1454: yyval.p = new basetype(TYPE,yypvt[-0].pn); ! 1455: if (DECL_TYPE == -1) DECL_TYPE = 0; ! 1456: } break; ! 1457: case 42: ! 1458: # line 743 "gram.y" ! 1459: { // modified tn_list TNAME ! 1460: yyval.p = new basetype(TYPE,yypvt[-0].pn); ! 1461: //xxx qualifier currently ignored... ! 1462: if (DECL_TYPE == -1) DECL_TYPE = 0; ! 1463: } break; ! 1464: case 45: ! 1465: # line 751 "gram.y" ! 1466: { ! 1467: if (DECL_TYPE == TNAME) ! 1468: yyval.p = new basetype(TYPE,yypvt[-0].pn); ! 1469: // else if (DECL_TYPE == TSCOPE) ! 1470: // yyval.p = 0; ! 1471: else ! 1472: if (DECL_TYPE == 0 && ! 1473: yypvt[-0].p->base == TNAME) ! 1474: yyval.p = new basetype(TYPE,yypvt[-0].pn); ! 1475: else ! 1476: yyval.p = new basetype(yypvt[-0].t,0); ! 1477: DECL_TYPE = -1; ! 1478: } break; ! 1479: case 47: ! 1480: # line 768 "gram.y" ! 1481: { ! 1482: if ( DECL_TYPE != -1 ) ! 1483: yyval.p = yypvt[-1].pb->type_adj(yypvt[-0].t); ! 1484: DECL_TYPE = 0; ! 1485: } break; ! 1486: case 48: ! 1487: # line 774 "gram.y" ! 1488: { ! 1489: //error('d',"decl_type: %d $1: %t $2: %n",DECL_TYPE,yypvt[-1].pb,yypvt[-0].pn); ! 1490: if ( DECL_TYPE != -1 ) ! 1491: yyval.p = yypvt[-1].pb->name_adj(yypvt[-0].pn); ! 1492: /*XXX*/ else if(yypvt[-1].pb==0) yyval.p=new basetype(TYPE,yypvt[-0].pn); ! 1493: DECL_TYPE = 0; ! 1494: } break; ! 1495: case 49: ! 1496: # line 781 "gram.y" ! 1497: { yyval.p = yypvt[-1].pb->base_adj(yypvt[-0].pb); } break; ! 1498: case 50: ! 1499: # line 782 "gram.y" ! 1500: { yyval.p = yypvt[-1].pb->base_adj(yypvt[-0].pb); } break; ! 1501: case 51: ! 1502: # line 784 "gram.y" ! 1503: { ! 1504: if (DECL_TYPE == TYPE) ! 1505: yyval.p = yypvt[-1].pb->type_adj(yypvt[-0].t); ! 1506: /*XXX*/ else if (DECL_TYPE == TSCOPE) { ! 1507: /*XXX*/ error('i',"type decl_marker(tscope)"); ! 1508: /*XXX*/ // yyval.p = yypvt[-1].p;//ignore(?) ! 1509: /*XXX*/ } ! 1510: else ! 1511: yyval.p = yypvt[-1].pb->name_adj(yypvt[-0].pn); ! 1512: DECL_TYPE = -1; ! 1513: } break; ! 1514: case 52: ! 1515: # line 800 "gram.y" ! 1516: { enumcheck: ! 1517: Ptype tx = yypvt[-0].pn->tp; ! 1518: yyval.p = yypvt[-0].p; ! 1519: if ( tx->base == TYPE ) { ! 1520: yyval.p = Pbase(tx)->b_name; ! 1521: tx = yyval.pn->tp; ! 1522: if ( tx->base != EOBJ ! 1523: || strcmp(yyval.pn->string,yypvt[-0].pn->string) ! 1524: ) ! 1525: error("%n of type%t redeclared as enum.",yypvt[-0].pn,tx); ! 1526: } else if ( tx->base != EOBJ ) ! 1527: error("%n of type%t redeclared as enum",yypvt[-0].pn,tx); ! 1528: } break; ! 1529: case 53: ! 1530: # line 813 "gram.y" ! 1531: { goto enumcheck; } break; ! 1532: case 54: ! 1533: # line 816 "gram.y" ! 1534: { yyval.p = end_enum(0,yypvt[-1].pn); } break; ! 1535: case 55: ! 1536: # line 817 "gram.y" ! 1537: { yyval.p = end_enum(yypvt[-3].pn,yypvt[-1].pn); } break; ! 1538: case 56: ! 1539: # line 818 "gram.y" ! 1540: { yyval.pb = (Pbase)yypvt[-0].pn->tp; } break; ! 1541: case 57: ! 1542: # line 822 "gram.y" ! 1543: { if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn); } break; ! 1544: case 58: ! 1545: # line 824 "gram.y" ! 1546: { if( yypvt[-0].p) ! 1547: if (yypvt[-2].p) ! 1548: yypvt[-2].nl->add(yypvt[-0].pn); ! 1549: else ! 1550: yyval.nl = new nlist(yypvt[-0].pn); ! 1551: } break; ! 1552: case 59: ! 1553: # line 833 "gram.y" ! 1554: { yyval.p = yypvt[-0].pn; yyval.pn->tp = moe_type; } break; ! 1555: case 60: ! 1556: # line 835 "gram.y" ! 1557: { yyval.p = yypvt[-2].pn; ! 1558: yyval.pn->tp = moe_type; ! 1559: yyval.pn->n_initializer = yypvt[-0].pe; ! 1560: } break; ! 1561: case 61: ! 1562: # line 840 "gram.y" ! 1563: { yyval.p = 0; } break; ! 1564: case 62: ! 1565: # line 844 "gram.y" ! 1566: { parsing_class_members = 0; ! 1567: switch ( NEXTTOK() ) { ! 1568: case TYPE: case AGGR: case ENUM: case EOFTOK: ! 1569: error("`;' or declaratorX afterCD"); ! 1570: la_backup(yychar,yylval); ! 1571: yychar = SM; ! 1572: break; ! 1573: } ! 1574: la_backup(yychar,yylval); ! 1575: yychar = -1; ! 1576: restore_text(); ! 1577: ++bl_level; // scope weirdness! ! 1578: ++in_mem_fct; ! 1579: } break; ! 1580: case 63: ! 1581: # line 859 "gram.y" ! 1582: { ! 1583: --in_mem_fct; ! 1584: --bl_level; // scope weirdness! ! 1585: if ( yychar == ID ) { ! 1586: // (yuk!) adjust lex level ! 1587: --yylval.pn->lex_level; ! 1588: } ! 1589: ccl->mem_list = name_unlist(yypvt[-3].nl); ! 1590: if ( --in_class_decl ) // nested class ! 1591: // continue to parse enclosing class ! 1592: parsing_class_members = 1; ! 1593: ccl->nest_list = nested_type; ! 1594: if ( nested_tn ) nested_restore(); ! 1595: nested_type = nested_type_vec[in_class_decl]; ! 1596: nested_tn = nested_tn_vec[in_class_decl]; ! 1597: end_cl(); ! 1598: declTag = 1; ! 1599: } break; ! 1600: case 64: ! 1601: # line 878 "gram.y" ! 1602: { aggrcheck: ! 1603: yyval.pb = (Pbase)yypvt[-0].pn->tp; ! 1604: if ( yyval.p->base == TYPE ) { ! 1605: Pname nx = yyval.pb->b_name; ! 1606: yyval.pb = (Pbase)nx->tp; ! 1607: if ( yyval.p->base != COBJ ! 1608: || strcmp(nx->string,yypvt[-0].pn->string) ! 1609: ) ! 1610: error("%n of type%t redeclared as%k.",yypvt[-0].pn,yyval.pb,yypvt[-1].t); ! 1611: } else if ( yyval.p->base != COBJ ) ! 1612: error("%n of type%t redeclared as%k",yypvt[-0].pn,yyval.pb,yypvt[-1].t); ! 1613: check_tag(); ! 1614: } break; ! 1615: case 65: ! 1616: # line 893 "gram.y" ! 1617: { ! 1618: goto aggrcheck; ! 1619: } break; ! 1620: case 68: ! 1621: # line 903 "gram.y" ! 1622: { yyval.pbc = yypvt[-0].pbc; } break; ! 1623: case 69: ! 1624: # line 904 "gram.y" ! 1625: { yyval.pbc = 0; } break; ! 1626: case 71: ! 1627: # line 909 "gram.y" ! 1628: { if (yypvt[-0].pbc) { yyval.pbc = yypvt[-0].pbc; yyval.pbc->next = yypvt[-2].pbc; } } break; ! 1629: case 72: ! 1630: # line 912 "gram.y" ! 1631: { yyval.pbc = dobase(0,yypvt[-0].pn); } break; ! 1632: case 73: ! 1633: # line 913 "gram.y" ! 1634: { yyval.pbc = dobase(yypvt[-1].t,yypvt[-0].pn); } break; ! 1635: case 74: ! 1636: # line 914 "gram.y" ! 1637: { yyval.pbc = dobase(0,yypvt[-0].pn,yypvt[-1].t); } break; ! 1638: case 75: ! 1639: # line 915 "gram.y" ! 1640: { yyval.pbc = dobase(yypvt[-2].t,yypvt[-0].pn,yypvt[-1].t); } break; ! 1641: case 76: ! 1642: # line 916 "gram.y" ! 1643: { yyval.pbc = dobase(yypvt[-1].t,yypvt[-0].pn,yypvt[-2].t); } break; ! 1644: case 77: ! 1645: # line 920 "gram.y" ! 1646: { parsing_class_members = 1; ! 1647: yyval.p = start_cl(yypvt[-1].t,0,0); ! 1648: nested_tn_vec[in_class_decl] = nested_tn; ! 1649: nested_type_vec[in_class_decl++] = nested_type; ! 1650: nested_tn = nested_type = 0; ! 1651: } break; ! 1652: case 78: ! 1653: # line 928 "gram.y" ! 1654: { parsing_class_members = 1; ! 1655: yyval.p = start_cl(yypvt[-3].t,yypvt[-2].pn,yypvt[-1].pbc); ! 1656: nested_tn_vec[in_class_decl] = nested_tn; ! 1657: nested_type_vec[in_class_decl++] = nested_type; ! 1658: nested_tn = nested_type = 0; ! 1659: } break; ! 1660: case 79: ! 1661: # line 936 "gram.y" ! 1662: { yyval.p = yypvt[-0].pn; } break; ! 1663: case 80: ! 1664: # line 937 "gram.y" ! 1665: { yyval.p=yypvt[-0].p; } break; ! 1666: case 81: ! 1667: # line 941 "gram.y" ! 1668: { ! 1669: if (yypvt[-0].p) { ! 1670: if (yypvt[-1].p) ! 1671: yypvt[-1].nl->add_list(yypvt[-0].pn); ! 1672: else ! 1673: yyval.nl = new nlist(yypvt[-0].pn); ! 1674: } ! 1675: } break; ! 1676: case 82: ! 1677: # line 950 "gram.y" ! 1678: { yyval.p = 0; } break; ! 1679: case 89: ! 1680: # line 960 "gram.y" ! 1681: { yyval.p = new name; ! 1682: yyval.pn->base = yypvt[-1].t; ! 1683: } break; ! 1684: case 90: ! 1685: # line 970 "gram.y" ! 1686: { Pname n = Ncopy(yypvt[-1].pn); ! 1687: if (n->n_oper == TYPE) { ! 1688: error('s',"visibilityD for conversion operator"); ! 1689: // n->tp = Ptype(n->n_initializer); ! 1690: n->tp = Ptype(n->cond); ! 1691: n->cond = 0; ! 1692: // n->n_initializer = 0; ! 1693: n->n_oper = 0; ! 1694: sig_name(n); ! 1695: } ! 1696: n->n_qualifier = yypvt[-2].pn; ! 1697: n->base = PR; ! 1698: yyval.p = n; ! 1699: } break; ! 1700: case 91: ! 1701: # line 999 "gram.y" ! 1702: { yyval.p = yypvt[-0].pn; } break; ! 1703: case 92: ! 1704: # line 1001 "gram.y" ! 1705: { yyval.p = Ncopy(yypvt[-0].pn); ! 1706: yyval.pn->n_oper = DTOR; ! 1707: } break; ! 1708: case 93: ! 1709: # line 1005 "gram.y" ! 1710: { yyval.p = new name(oper_name(yypvt[-0].t)); ! 1711: yyval.pn->n_oper = yypvt[-0].t; ! 1712: } break; ! 1713: case 94: ! 1714: # line 1009 "gram.y" ! 1715: { Pname n = yypvt[-0].pn; ! 1716: n->string = "_type"; ! 1717: n->n_oper = TYPE; ! 1718: n->cond = Pexpr(n->tp); ! 1719: // n->n_initializer = Pexpr(n->tp); ! 1720: n->tp = 0; ! 1721: yyval.p = n; ! 1722: } break; ! 1723: case 107: ! 1724: # line 1031 "gram.y" ! 1725: { yyval.t = CALL; } break; ! 1726: case 108: ! 1727: # line 1032 "gram.y" ! 1728: { yyval.t = DEREF; } break; ! 1729: case 114: ! 1730: # line 1038 "gram.y" ! 1731: { yyval.t = NEW; } break; ! 1732: case 115: ! 1733: # line 1039 "gram.y" ! 1734: { yyval.t = DELETE; } break; ! 1735: case 116: ! 1736: # line 1040 "gram.y" ! 1737: { yyval.t = REF; } break; ! 1738: case 117: ! 1739: # line 1041 "gram.y" ! 1740: { yyval.t = CM; } break; ! 1741: case 118: ! 1742: # line 1042 "gram.y" ! 1743: { yyval.t = REFMUL; ! 1744: if (yypvt[-0].t == DOT) error(".* cannot be overloaded"); ! 1745: } break; ! 1746: case 119: ! 1747: # line 1048 "gram.y" ! 1748: { if ( yypvt[-0].pn != sta_name ) { ! 1749: // error('d',"tn_list: tscope: pn1: %s", yypvt[-0].pn->string); ! 1750: Ptype t = yypvt[-0].pn->tp; ! 1751: while ( t->base == TYPE ) ! 1752: t = Pbase(t)->b_name->tp; ! 1753: Pname n = Pbase(t)->b_name; ! 1754: if (NEXTTOK() == TNAME ! 1755: && strcmp(n->string,yylval.pn->string)==0){ ! 1756: // ctor -- change to ID to avoid ! 1757: // parsing as type spec ! 1758: yychar = ID; ! 1759: yylval.pn = Ncopy(yylval.pn); ! 1760: yylval.pn->n_oper = TNAME; ! 1761: } ! 1762: } ! 1763: yyval.pn = yypvt[-0].pn; ! 1764: } break; ! 1765: case 120: ! 1766: # line 1066 "gram.y" ! 1767: { error('s', "CNs do not nest, use typedef x::y y_in_x"); } break; ! 1768: case 121: ! 1769: # line 1071 "gram.y" ! 1770: { yyval.pn = yypvt[-0].pn; ! 1771: //xxx qualifier currently ignored... ! 1772: // yyval.pn = Ncopy( yypvt[-0].pn ); ! 1773: // yyval.pn->n_oper = TNAME; ! 1774: // yyval.pn->n_qualifier = yypvt[-1].pn; ! 1775: } break; ! 1776: case 122: ! 1777: # line 1078 "gram.y" ! 1778: { yyval.pn = yypvt[-0].pn; ! 1779: // yyval.pn = Ncopy( yypvt[-0].pn ); ! 1780: // yyval.pn->n_oper = TNAME; ! 1781: } break; ! 1782: case 123: ! 1783: # line 1085 "gram.y" ! 1784: { yyval.i = 0; } break; ! 1785: case 124: ! 1786: # line 1087 "gram.y" ! 1787: { /* const/volatile function */ ! 1788: switch ( yypvt[-0].t ) { ! 1789: case VOLATILE: ! 1790: error('s',"volatile functions"); ! 1791: break; ! 1792: case CONST: ! 1793: yyval.i = (yypvt[-1].i | 1); ! 1794: break; ! 1795: default: ! 1796: if ( NEXTTOK() != SM ! 1797: && yychar != COLON ! 1798: && yychar != LC ) { ! 1799: la_backup(yychar,yylval); ! 1800: yylval.t = yypvt[-0].t; ! 1801: la_backup(TYPE,yylval); ! 1802: yylval.t = SM; ! 1803: yychar = SM; ! 1804: error("syntax error: unexpected%k (did you forget a `;'?)",yypvt[-0].t); ! 1805: } else error("FD syntax: unexpected%k",yypvt[-0].t); ! 1806: break; ! 1807: } ! 1808: } break; ! 1809: case 125: ! 1810: # line 1112 "gram.y" ! 1811: { Freturns(yypvt[-0].p) = yypvt[-1].pn->tp; ! 1812: yypvt[-1].pn->tp = yypvt[-0].pt; ! 1813: } break; ! 1814: case 126: ! 1815: # line 1116 "gram.y" ! 1816: { /* function with no argument */ ! 1817: yypvt[-3].pn->tp = new fct(yypvt[-3].pn->tp,0,1); ! 1818: Pfct(yypvt[-3].pn->tp)->f_const = (yypvt[-0].i & 1); ! 1819: } break; ! 1820: case 127: ! 1821: # line 1121 "gram.y" ! 1822: { Pname n = yypvt[-1].pn; ! 1823: yyval.p = Ncopy(n); ! 1824: if (ccl && strcmp(n->string,ccl->string)) n->hide(); ! 1825: yyval.pn->n_oper = TNAME; ! 1826: Freturns(yypvt[-0].p) = yyval.pn->tp; ! 1827: yyval.pn->tp = yypvt[-0].pt; ! 1828: } break; ! 1829: case 128: ! 1830: # line 1133 "gram.y" ! 1831: { ! 1832: yypvt[-3].pn->tp = new fct(yypvt[-3].pn->tp,yypvt[-1].pn,1); ! 1833: in_arg_list = 0; ! 1834: end_al(yypvt[-2].pl,0); ! 1835: } break; ! 1836: case 129: ! 1837: # line 1139 "gram.y" ! 1838: { ! 1839: Pptr p = new ptr( PTR, 0 ); ! 1840: Ptyp(p) = new basetype(TYPE,yypvt[-5].pn); ! 1841: Freturns( yypvt[-0].p ) = Ptype(p); ! 1842: yypvt[-2].pn->tp = yypvt[-0].pt; ! 1843: yyval.p = yypvt[-2].pn; ! 1844: if (DECL_TYPE == -1) DECL_TYPE = 0; ! 1845: } break; ! 1846: case 130: ! 1847: # line 1148 "gram.y" ! 1848: { yyval.p = Ncopy(yypvt[-3].pn); ! 1849: yyval.pn->n_oper = TNAME; ! 1850: yyval.pn->tp = new fct(0,yypvt[-1].pn,1); ! 1851: } break; ! 1852: case 131: ! 1853: # line 1153 "gram.y" ! 1854: { /* function with no argument */ ! 1855: yyval.p = Ncopy(yypvt[-3].pn); ! 1856: yyval.pn->n_oper = TNAME; ! 1857: yyval.pn->tp = new fct(0,0,1); ! 1858: Pfct(yypvt[-3].pn->tp)->f_const = (yypvt[-0].i & 1); ! 1859: } break; ! 1860: case 132: ! 1861: # line 1160 "gram.y" ! 1862: { memptrdcl(yypvt[-3].pn,yypvt[-5].pn,yypvt[-0].pt,yypvt[-2].pn); ! 1863: yyval.p = yypvt[-2].p; ! 1864: } break; ! 1865: case 134: ! 1866: # line 1165 "gram.y" ! 1867: { yyval.p = Ncopy(yypvt[-0].pn); ! 1868: yyval.pn->n_qualifier = yypvt[-2].pn; ! 1869: error(strict_opt?0:'w',"`.' used for qualification; please use `::' (anachronism)"); ! 1870: } break; ! 1871: case 135: ! 1872: # line 1170 "gram.y" ! 1873: { yyval.p = yypvt[-0].p; ! 1874: if ( yypvt[-1].pn != sta_name ) { ! 1875: set_scope(yypvt[-1].pn); ! 1876: yyval.pn->n_qualifier = yypvt[-1].pn; ! 1877: } ! 1878: } break; ! 1879: case 136: ! 1880: # line 1177 "gram.y" ! 1881: { yyval.p = Ncopy(yypvt[-0].pn); ! 1882: yyval.pn->n_qualifier = yypvt[-2].pn; ! 1883: error(ansi_opt?0:'w',"anachronism `.' used for qualification; please use `::'"); ! 1884: if ( yypvt[-3].pn != sta_name ) { ! 1885: set_scope(yypvt[-3].pn); ! 1886: yypvt[-2].pn->n_qualifier = yypvt[-3].pn; ! 1887: } ! 1888: } break; ! 1889: case 137: ! 1890: # line 1195 "gram.y" ! 1891: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp; ! 1892: yypvt[-0].pn->tp = yypvt[-1].pt; ! 1893: yyval.p = yypvt[-0].p; ! 1894: } break; ! 1895: case 138: ! 1896: # line 1200 "gram.y" ! 1897: { yyval.p = Ncopy(yypvt[-0].pn); ! 1898: yyval.pn->n_oper = TNAME; ! 1899: // cannot evaluate at this point: defer until data_dcl ! 1900: if ( in_typedef ) { ! 1901: defer_check = 1; ! 1902: in_tag = yypvt[-0].pn; ! 1903: } ! 1904: yypvt[-0].pn->hide(); ! 1905: defer_check = 0; ! 1906: yyval.pn->tp = yypvt[-1].pt; ! 1907: } break; ! 1908: case 139: ! 1909: # line 1212 "gram.y" ! 1910: { yyval.p = Ncopy(yypvt[-1].pn); ! 1911: yyval.pn->n_oper = TNAME; ! 1912: if ( in_typedef ) { ! 1913: defer_check = 1; ! 1914: in_tag = yypvt[-0].pn; ! 1915: } ! 1916: yypvt[-1].pn->hide(); ! 1917: defer_check = 0; ! 1918: yyval.pn->tp = yypvt[-0].pt; ! 1919: } break; ! 1920: case 140: ! 1921: # line 1223 "gram.y" ! 1922: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp; ! 1923: yypvt[-1].pn->tp = yypvt[-0].pt; ! 1924: } break; ! 1925: case 141: ! 1926: # line 1240 "gram.y" ! 1927: { ! 1928: yyval.p = yypvt[-1].p; ! 1929: in_arg_list = 0; ! 1930: end_al(yypvt[-2].pl,0); ! 1931: } break; ! 1932: case 142: ! 1933: # line 1248 "gram.y" ! 1934: { yyval.p = yypvt[-0].pn; } break; ! 1935: case 143: ! 1936: # line 1250 "gram.y" ! 1937: { yyval.p = Ncopy(yypvt[-0].pn); ! 1938: yyval.pn->n_oper = TNAME; ! 1939: yypvt[-0].pn->hide(); ! 1940: yyval.pn->tp = yypvt[-1].pt; ! 1941: } break; ! 1942: case 144: ! 1943: # line 1256 "gram.y" ! 1944: { ! 1945: yyval.p = new name; ! 1946: NOT_EXPECT_ID(); ! 1947: } break; ! 1948: case 145: ! 1949: # line 1261 "gram.y" ! 1950: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp; ! 1951: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p; ! 1952: yyval.p = yypvt[-0].p; ! 1953: } break; ! 1954: case 146: ! 1955: # line 1266 "gram.y" ! 1956: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp; ! 1957: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p; ! 1958: } break; ! 1959: case 147: ! 1960: # line 1270 "gram.y" ! 1961: { Freturns(yypvt[-0].p) = yypvt[-1].pn->tp; ! 1962: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p; ! 1963: } break; ! 1964: case 148: ! 1965: # line 1286 "gram.y" ! 1966: { ! 1967: // error('d', "arg_lp arg_decl rp in_arg_list: %d", in_arg_list ); ! 1968: yyval.p = yypvt[-1].p; ! 1969: in_arg_list = 0; ! 1970: end_al(yypvt[-2].pl,0); ! 1971: } break; ! 1972: case 149: ! 1973: # line 1295 "gram.y" ! 1974: { yyval.p = new name; } break; ! 1975: case 150: ! 1976: # line 1297 "gram.y" ! 1977: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp; ! 1978: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p; ! 1979: yyval.p = yypvt[-0].p; ! 1980: NOT_EXPECT_ID(); ! 1981: } break; ! 1982: case 151: ! 1983: # line 1303 "gram.y" ! 1984: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp; ! 1985: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p; ! 1986: } break; ! 1987: case 152: ! 1988: # line 1308 "gram.y" ! 1989: { yyval.p = new name; } break; ! 1990: case 153: ! 1991: # line 1310 "gram.y" ! 1992: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp; ! 1993: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p; ! 1994: yyval.p = yypvt[-0].p; ! 1995: NOT_EXPECT_ID(); ! 1996: } break; ! 1997: case 154: ! 1998: # line 1316 "gram.y" ! 1999: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp; ! 2000: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p; ! 2001: } break; ! 2002: case 155: ! 2003: # line 1320 "gram.y" ! 2004: { Freturns(yypvt[-0].p) = yypvt[-2].pn->tp; ! 2005: yypvt[-2].pn->tp = yypvt[-0].pt; ! 2006: yyval.p = yypvt[-2].p; ! 2007: } break; ! 2008: case 156: ! 2009: # line 1325 "gram.y" ! 2010: { Vtype(yypvt[-0].p) = yypvt[-2].pn->tp; ! 2011: yypvt[-2].pn->tp = yypvt[-0].pt; ! 2012: yyval.p = yypvt[-2].p; ! 2013: } break; ! 2014: case 157: ! 2015: # line 1332 "gram.y" ! 2016: { yyval.p = new name; } break; ! 2017: case 158: ! 2018: # line 1334 "gram.y" ! 2019: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp; ! 2020: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p; ! 2021: yyval.p = yypvt[-0].p; ! 2022: } break; ! 2023: case 159: ! 2024: # line 1344 "gram.y" ! 2025: { ! 2026: yyval.p = 0; ! 2027: } break; ! 2028: case 160: ! 2029: # line 1348 "gram.y" ! 2030: { ! 2031: if (yypvt[-0].p) ! 2032: if (yypvt[-1].p) ! 2033: yypvt[-1].sl->add(yypvt[-0].ps); ! 2034: else { ! 2035: yyval.sl = new slist(yypvt[-0].ps); ! 2036: stmt_seen = 1; ! 2037: } ! 2038: } break; ! 2039: case 161: ! 2040: # line 1359 "gram.y" ! 2041: { ! 2042: yyval.p = yypvt[-0].p; ! 2043: if (yypvt[-0].p) stmt_seen = 1; ! 2044: } break; ! 2045: case 162: ! 2046: # line 1366 "gram.y" ! 2047: { ! 2048: yyval.p = 0; ! 2049: check_decl(); ! 2050: } break; ! 2051: case 163: ! 2052: # line 1373 "gram.y" ! 2053: { yyval.p = yypvt[-1].p; ! 2054: /* if ($<pe>$ == dummy) error("empty condition");*/ ! 2055: stmt_seen = 1; ! 2056: } break; ! 2057: case 164: ! 2058: # line 1380 "gram.y" ! 2059: { cd_vec[cdi] = cd; ! 2060: stmt_vec[cdi] = stmt_seen; ! 2061: tn_vec[cdi] = modified_tn; ! 2062: lcl_blk_vec[cdi++] = local_blk; ! 2063: lcl_tn_vec[cdi] = local_tn; ! 2064: local_blk = 0; ! 2065: local_tn = 0; ! 2066: cd = 0; ! 2067: stmt_seen = 0; ! 2068: modified_tn = 0; ! 2069: } break; ! 2070: case 165: ! 2071: # line 1392 "gram.y" ! 2072: { Pname n = name_unlist(cd); ! 2073: Pstmt ss = stmt_unlist(yypvt[-1].sl); ! 2074: yyval.p = new block(yypvt[-3].l,n,ss,yypvt[-0].l); ! 2075: if ( local_tn ) local_restore(); ! 2076: if ( local_blk ) local_name(); ! 2077: if (modified_tn) restore(); ! 2078: cd = cd_vec[--cdi]; ! 2079: stmt_seen = stmt_vec[cdi]; ! 2080: modified_tn = tn_vec[cdi]; ! 2081: local_tn = lcl_tn_vec[cdi]; ! 2082: local_blk = lcl_blk_vec[cdi]; ! 2083: if (cdi < 0) error('i',"block level(%d)",cdi); ! 2084: NOT_EXPECT_ID(); ! 2085: } break; ! 2086: case 166: ! 2087: # line 1407 "gram.y" ! 2088: { yyval.p = new block(yypvt[-1].l,0,0,yypvt[-0].l); NOT_EXPECT_ID();} break; ! 2089: case 167: ! 2090: # line 1409 "gram.y" ! 2091: { yyval.p = new block(yypvt[-2].l,0,0,yypvt[-0].l); NOT_EXPECT_ID();} break; ! 2092: case 168: ! 2093: # line 1413 "gram.y" ! 2094: { yyval.p = new estmt(SM,curloc,yypvt[-0].pe,0); } break; ! 2095: case 169: ! 2096: # line 1415 "gram.y" ! 2097: { yyval.p = new stmt(BREAK,yypvt[-0].l,0); } break; ! 2098: case 170: ! 2099: # line 1417 "gram.y" ! 2100: { yyval.p = new stmt(CONTINUE,yypvt[-0].l,0); } break; ! 2101: case 171: ! 2102: # line 1419 "gram.y" ! 2103: { yyval.p = new lstmt(GOTO,yypvt[-1].l,yypvt[-0].pn,0); } break; ! 2104: case 172: ! 2105: # line 1420 "gram.y" ! 2106: { stmt_seen=1; } break; ! 2107: case 173: ! 2108: # line 1421 "gram.y" ! 2109: { yyval.p = new estmt(DO,yypvt[-4].l,yypvt[-0].pe,yypvt[-2].ps); } break; ! 2110: case 174: ! 2111: # line 1423 "gram.y" ! 2112: { ! 2113: if (stmt_seen) ! 2114: yyval.p = new estmt(ASM,curloc,(Pexpr)yypvt[-1].s,0); ! 2115: else { ! 2116: Pname n = new name(make_name('A')); ! 2117: n->tp = new basetype(ASM,(Pname)yypvt[-1].s); ! 2118: if (cd) ! 2119: cd->add_list(n); ! 2120: else ! 2121: cd = new nlist(n); ! 2122: yyval.p = 0; ! 2123: } ! 2124: } break; ! 2125: case 175: ! 2126: # line 1438 "gram.y" ! 2127: { ! 2128: if ( NEXTTOK() != SM ) { ! 2129: error("`;' missing afterS"); ! 2130: la_backup(yychar,yylval); ! 2131: yychar = SM; ! 2132: } ! 2133: } break; ! 2134: case 178: ! 2135: # line 1449 "gram.y" ! 2136: { yyval.p = new estmt(SM,yypvt[-0].l,dummy,0); } break; ! 2137: case 179: ! 2138: # line 1451 "gram.y" ! 2139: { yyval.p = new estmt(RETURN,yypvt[-2].l,yypvt[-1].pe,0); } break; ! 2140: case 180: ! 2141: # line 1453 "gram.y" ! 2142: { ! 2143: error("local linkage specification"); ! 2144: yyval.p = yypvt[-0].pn; ! 2145: } break; ! 2146: case 181: ! 2147: # line 1458 "gram.y" ! 2148: { Pname n = yypvt[-0].pn; ! 2149: if (n) ! 2150: if (stmt_seen) { ! 2151: yyval.p = new block(n->where,n,0); ! 2152: yyval.ps->base = DCL; ! 2153: } ! 2154: else { ! 2155: if (cd) ! 2156: cd->add_list(n); ! 2157: else ! 2158: cd = new nlist(n); ! 2159: yyval.p = 0; ! 2160: } ! 2161: } break; ! 2162: case 182: ! 2163: # line 1473 "gram.y" ! 2164: { ! 2165: Pname n = yypvt[-0].pn; ! 2166: error(&n->where,"%n's definition is nested (did you forget a ``}''?)",n); ! 2167: if (cd) ! 2168: cd->add_list(n); ! 2169: else ! 2170: cd = new nlist(n); ! 2171: yyval.p = 0; ! 2172: } break; ! 2173: case 184: ! 2174: # line 1484 "gram.y" ! 2175: { yyval.p = new ifstmt(yypvt[-2].l,yypvt[-1].pe,yypvt[-0].ps,0); } break; ! 2176: case 185: ! 2177: # line 1486 "gram.y" ! 2178: { yyval.p = new ifstmt(yypvt[-4].l,yypvt[-3].pe,yypvt[-2].ps,yypvt[-0].ps); } break; ! 2179: case 186: ! 2180: # line 1488 "gram.y" ! 2181: { yyval.p = new estmt(WHILE,yypvt[-2].l,yypvt[-1].pe,yypvt[-0].ps); } break; ! 2182: case 187: ! 2183: # line 1489 "gram.y" ! 2184: { stmt_seen=1; } break; ! 2185: case 188: ! 2186: # line 1490 "gram.y" ! 2187: { yyval.p = new forstmt(yypvt[-8].l,yypvt[-5].ps,yypvt[-4].pe,yypvt[-2].pe,yypvt[-0].ps); } break; ! 2188: case 189: ! 2189: # line 1492 "gram.y" ! 2190: { yyval.p = new estmt(SWITCH,yypvt[-2].l,yypvt[-1].pe,yypvt[-0].ps); } break; ! 2191: case 190: ! 2192: # line 1493 "gram.y" ! 2193: { yyval.p = yypvt[-1].pn; stmt_seen=1; } break; ! 2194: case 191: ! 2195: # line 1494 "gram.y" ! 2196: { Pname n = yypvt[-1].pn; ! 2197: yyval.p = new lstmt(LABEL,n->where,n,yypvt[-0].ps); ! 2198: } break; ! 2199: case 192: ! 2200: # line 1497 "gram.y" ! 2201: { yyval.p = new name(yypvt[-1].pn->string); stmt_seen=1; } break; ! 2202: case 193: ! 2203: # line 1498 "gram.y" ! 2204: { Pname n = yypvt[-1].pn; ! 2205: yyval.p = new lstmt(LABEL,n->where,n,yypvt[-0].ps); ! 2206: } break; ! 2207: case 194: ! 2208: # line 1501 "gram.y" ! 2209: { stmt_seen=1; } break; ! 2210: case 195: ! 2211: # line 1502 "gram.y" ! 2212: { if (yypvt[-2].pe == dummy) error("empty case label"); ! 2213: yyval.p = new estmt(CASE,yypvt[-4].l,yypvt[-2].pe,yypvt[-0].ps); ! 2214: } break; ! 2215: case 196: ! 2216: # line 1505 "gram.y" ! 2217: { stmt_seen=1; } break; ! 2218: case 197: ! 2219: # line 1506 "gram.y" ! 2220: { yyval.p = new stmt(DEFAULT,yypvt[-3].l,yypvt[-0].ps); } break; ! 2221: case 198: ! 2222: # line 1513 "gram.y" ! 2223: { Pexpr e = expr_unlist(yypvt[-0].el); ! 2224: while (e && e->e1==dummy) { ! 2225: register Pexpr ee2 = e->e2; ! 2226: if (ee2) error("EX inEL"); ! 2227: delete e; ! 2228: e = ee2; ! 2229: } ! 2230: yyval.p = e; ! 2231: } break; ! 2232: case 199: ! 2233: # line 1525 "gram.y" ! 2234: { yyval.el = new elist(new expr(ELIST,yypvt[-0].pe,0)); } break; ! 2235: case 200: ! 2236: # line 1527 "gram.y" ! 2237: { yypvt[-2].el->add(new expr(ELIST,yypvt[-0].pe,0)); } break; ! 2238: case 202: ! 2239: # line 1532 "gram.y" ! 2240: { ! 2241: if ( in_arg_list ) ! 2242: error( "syntax error: IrL not permitted in AL" ); ! 2243: else if ( in_binit_list ) ! 2244: error( "syntax error: IrL not permitted inMIr" ); ! 2245: else ! 2246: init_seen = 1; ! 2247: Pexpr e; ! 2248: if (yypvt[-1].p) ! 2249: e = yypvt[-1].pe; ! 2250: else ! 2251: e = new expr(ELIST,dummy,0); ! 2252: yyval.p = new expr(ILIST,e,0); ! 2253: } break; ! 2254: case 203: ! 2255: # line 1549 "gram.y" ! 2256: { bbinop: yyval.p = new expr(yypvt[-1].t,yypvt[-2].pe,yypvt[-0].pe); } break; ! 2257: case 204: ! 2258: # line 1550 "gram.y" ! 2259: { goto bbinop; } break; ! 2260: case 205: ! 2261: # line 1551 "gram.y" ! 2262: { goto bbinop; } break; ! 2263: case 206: ! 2264: # line 1552 "gram.y" ! 2265: { goto bbinop; } break; ! 2266: case 207: ! 2267: # line 1553 "gram.y" ! 2268: { goto bbinop; } break; ! 2269: case 208: ! 2270: # line 1554 "gram.y" ! 2271: { goto bbinop; } break; ! 2272: case 209: ! 2273: # line 1555 "gram.y" ! 2274: { goto bbinop; } break; ! 2275: case 210: ! 2276: # line 1556 "gram.y" ! 2277: { goto bbinop; } break; ! 2278: case 211: ! 2279: # line 1557 "gram.y" ! 2280: { goto bbinop; } break; ! 2281: case 212: ! 2282: # line 1558 "gram.y" ! 2283: { goto bbinop; } break; ! 2284: case 213: ! 2285: # line 1559 "gram.y" ! 2286: { goto bbinop; } break; ! 2287: case 214: ! 2288: # line 1560 "gram.y" ! 2289: { goto bbinop; } break; ! 2290: case 215: ! 2291: # line 1561 "gram.y" ! 2292: { goto bbinop; } break; ! 2293: case 216: ! 2294: # line 1562 "gram.y" ! 2295: { goto bbinop; } break; ! 2296: case 217: ! 2297: # line 1563 "gram.y" ! 2298: { goto bbinop; } break; ! 2299: case 218: ! 2300: # line 1565 "gram.y" ! 2301: { yyval.p = new qexpr(yypvt[-4].pe,yypvt[-2].pe,yypvt[-0].pe); } break; ! 2302: case 219: ! 2303: # line 1567 "gram.y" ! 2304: { yyval.p = new expr(DELETE,yypvt[-0].pe,0); } break; ! 2305: case 220: ! 2306: # line 1569 "gram.y" ! 2307: { ! 2308: if(yypvt[-2].pe != dummy) { ! 2309: if ( warning_opt || strict_opt ) ! 2310: error(strict_opt?0:'w',"v in `delete[v]' is redundant; use `delete[] instead (anachronism)"); ! 2311: } ! 2312: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe); ! 2313: } break; ! 2314: case 221: ! 2315: # line 1577 "gram.y" ! 2316: { yyval.p = new expr(GDELETE,yypvt[-0].pe,0); } break; ! 2317: case 222: ! 2318: # line 1579 "gram.y" ! 2319: { ! 2320: if(yypvt[-2].pe != dummy) { ! 2321: if ( warning_opt || strict_opt ) ! 2322: error(strict_opt?0:'w',"v in `::delete[v]' is redundant; use `::delete[] instead (anachronism)"); ! 2323: } ! 2324: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe); ! 2325: } break; ! 2326: case 224: ! 2327: # line 1590 "gram.y" ! 2328: { binop: yyval.p = new expr(yypvt[-1].t,yypvt[-2].pe,yypvt[-0].pe); } break; ! 2329: case 225: ! 2330: # line 1591 "gram.y" ! 2331: { goto binop; } break; ! 2332: case 226: ! 2333: # line 1592 "gram.y" ! 2334: { goto binop; } break; ! 2335: case 227: ! 2336: # line 1593 "gram.y" ! 2337: { goto binop; } break; ! 2338: case 228: ! 2339: # line 1594 "gram.y" ! 2340: { goto binop; } break; ! 2341: case 229: ! 2342: # line 1595 "gram.y" ! 2343: { goto binop; } break; ! 2344: case 230: ! 2345: # line 1596 "gram.y" ! 2346: { goto binop; } break; ! 2347: case 231: ! 2348: # line 1597 "gram.y" ! 2349: { goto binop; } break; ! 2350: case 232: ! 2351: # line 1598 "gram.y" ! 2352: { goto binop; } break; ! 2353: case 233: ! 2354: # line 1599 "gram.y" ! 2355: { goto binop; } break; ! 2356: case 234: ! 2357: # line 1600 "gram.y" ! 2358: { goto binop; } break; ! 2359: case 235: ! 2360: # line 1601 "gram.y" ! 2361: { goto binop; } break; ! 2362: case 236: ! 2363: # line 1602 "gram.y" ! 2364: { goto binop; } break; ! 2365: case 237: ! 2366: # line 1603 "gram.y" ! 2367: { goto binop; } break; ! 2368: case 238: ! 2369: # line 1604 "gram.y" ! 2370: { goto binop; } break; ! 2371: case 239: ! 2372: # line 1606 "gram.y" ! 2373: { yyval.p = new qexpr(yypvt[-4].pe,yypvt[-2].pe,yypvt[-0].pe); } break; ! 2374: case 240: ! 2375: # line 1608 "gram.y" ! 2376: { yyval.p = new expr(DELETE,yypvt[-0].pe,0); } break; ! 2377: case 241: ! 2378: # line 1610 "gram.y" ! 2379: { ! 2380: if(yypvt[-2].pe != dummy) { ! 2381: if ( warning_opt || strict_opt ) ! 2382: error(strict_opt?0:'w',"v in `delete[v]' is redundant; use `delete[] instead (anachronism)"); ! 2383: } ! 2384: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe); ! 2385: } break; ! 2386: case 242: ! 2387: # line 1618 "gram.y" ! 2388: { yyval.p = new expr(GDELETE,yypvt[-0].pe,0); } break; ! 2389: case 243: ! 2390: # line 1620 "gram.y" ! 2391: { ! 2392: if(yypvt[-2].pe != dummy) { ! 2393: if ( warning_opt || strict_opt ) ! 2394: error(strict_opt?0:'w',"v in `::delete[v]' is redundant; use `::delete[] instead (anachronism)"); ! 2395: } ! 2396: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe); ! 2397: } break; ! 2398: case 244: ! 2399: # line 1627 "gram.y" ! 2400: { ! 2401: init_seen = 0; ! 2402: } break; ! 2403: case 245: ! 2404: # line 1631 "gram.y" ! 2405: { yyval.p = dummy; } break; ! 2406: case 246: ! 2407: # line 1634 "gram.y" ! 2408: { goto new1; } break; ! 2409: case 247: ! 2410: # line 1636 "gram.y" ! 2411: { new1: ! 2412: Ptype t = yypvt[-0].pn->tp; ! 2413: yyval.p = new texpr(NEW,t,0); ! 2414: } break; ! 2415: case 248: ! 2416: # line 1640 "gram.y" ! 2417: { goto new3; } break; ! 2418: case 249: ! 2419: # line 1642 "gram.y" ! 2420: { new3: ! 2421: Ptype t = yypvt[-0].pn->tp; ! 2422: yyval.p = new texpr(GNEW,t,0); ! 2423: } break; ! 2424: case 250: ! 2425: # line 1647 "gram.y" ! 2426: { yyval.p = new expr(yypvt[-0].t,yypvt[-1].pe,0); } break; ! 2427: case 251: ! 2428: # line 1649 "gram.y" ! 2429: { yyval.p = new texpr(CAST,yypvt[-1].pn->tp,yypvt[-0].pe); } break; ! 2430: case 252: ! 2431: # line 1651 "gram.y" ! 2432: { yyval.p = new expr(DEREF,yypvt[-0].pe,0); } break; ! 2433: case 253: ! 2434: # line 1653 "gram.y" ! 2435: { yyval.p = new expr(ADDROF,0,yypvt[-0].pe); } break; ! 2436: case 254: ! 2437: # line 1655 "gram.y" ! 2438: { yyval.p = new expr(UMINUS,0,yypvt[-0].pe); } break; ! 2439: case 255: ! 2440: # line 1657 "gram.y" ! 2441: { yyval.p = new expr(UPLUS,0,yypvt[-0].pe); } break; ! 2442: case 256: ! 2443: # line 1659 "gram.y" ! 2444: { yyval.p = new expr(NOT,0,yypvt[-0].pe); } break; ! 2445: case 257: ! 2446: # line 1661 "gram.y" ! 2447: { yyval.p = new expr(COMPL,0,yypvt[-0].pe); } break; ! 2448: case 258: ! 2449: # line 1663 "gram.y" ! 2450: { yyval.p = new expr(yypvt[-1].t,0,yypvt[-0].pe); } break; ! 2451: case 259: ! 2452: # line 1665 "gram.y" ! 2453: { ! 2454: yyval.p = new texpr(SIZEOF,0,yypvt[-0].pe); ! 2455: in_sizeof = 0; ! 2456: } break; ! 2457: case 260: ! 2458: # line 1670 "gram.y" ! 2459: { ! 2460: yyval.p = new texpr(SIZEOF,yypvt[-0].pn->tp,0); ! 2461: in_sizeof = 0; ! 2462: } break; ! 2463: case 261: ! 2464: # line 1675 "gram.y" ! 2465: { yyval.p = new expr(DEREF,yypvt[-3].pe,yypvt[-1].pe); } break; ! 2466: case 262: ! 2467: # line 1677 "gram.y" ! 2468: { yyval.p = new ref(REF,yypvt[-2].pe,yypvt[-0].pn); } break; ! 2469: case 263: ! 2470: # line 1679 "gram.y" ! 2471: { yyval.p = new expr(yypvt[-1].t,yypvt[-2].pe,yypvt[-0].pe); } break; ! 2472: case 264: ! 2473: # line 1681 "gram.y" ! 2474: { yyval.p = new ref(REF,yypvt[-2].pe,Ncopy(yypvt[-0].pn)); } break; ! 2475: case 265: ! 2476: # line 1683 "gram.y" ! 2477: { yyval.p = new ref(DOT,yypvt[-2].pe,yypvt[-0].pn); } break; ! 2478: case 266: ! 2479: # line 1685 "gram.y" ! 2480: { yyval.p = new ref(DOT,yypvt[-2].pe,Ncopy(yypvt[-0].pn)); } break; ! 2481: case 268: ! 2482: # line 1688 "gram.y" ! 2483: { ! 2484: if ( init_seen ) ! 2485: error( "syntax error:IrL illegal within ()"); ! 2486: } break; ! 2487: case 269: ! 2488: # line 1694 "gram.y" ! 2489: { ! 2490: if ( yypvt[-1].p == dummy ) ! 2491: error("syntax error: nullE"); ! 2492: yyval.p = yypvt[-1].p; ! 2493: } break; ! 2494: case 270: ! 2495: # line 1700 "gram.y" ! 2496: { yyval.p = zero; } break; ! 2497: case 271: ! 2498: # line 1702 "gram.y" ! 2499: { yyval.p = new expr(ICON,0,0); ! 2500: yyval.pe->string = yypvt[-0].s; ! 2501: } break; ! 2502: case 272: ! 2503: # line 1706 "gram.y" ! 2504: { yyval.p = new expr(FCON,0,0); ! 2505: yyval.pe->string = yypvt[-0].s; ! 2506: } break; ! 2507: case 273: ! 2508: # line 1710 "gram.y" ! 2509: { yyval.p = new expr(STRING,0,0); ! 2510: yyval.pe->string = yypvt[-0].s; ! 2511: } break; ! 2512: case 274: ! 2513: # line 1714 "gram.y" ! 2514: { yyval.p = new expr(CCON,0,0); ! 2515: yyval.pe->string = yypvt[-0].s; ! 2516: } break; ! 2517: case 275: ! 2518: # line 1718 "gram.y" ! 2519: { yyval.p = new expr(THIS,0,0); } break; ! 2520: case 276: ! 2521: # line 1722 "gram.y" ! 2522: { yyval.p = new texpr(VALUE,tok_to_type(yypvt[-3].t),yypvt[-1].pe); } break; ! 2523: case 277: ! 2524: # line 1724 "gram.y" ! 2525: { yyval.p = new texpr(VALUE,yypvt[-3].pn->tp,yypvt[-1].pe); } break; ! 2526: case 278: ! 2527: # line 1725 "gram.y" ! 2528: { goto new2; } break; ! 2529: case 279: ! 2530: # line 1727 "gram.y" ! 2531: { new2: ! 2532: Ptype t = yypvt[-0].pn->tp; ! 2533: yyval.p=new texpr(NEW,t,0); ! 2534: yyval.pe->e2 = yypvt[-2].pe; ! 2535: } break; ! 2536: case 280: ! 2537: # line 1732 "gram.y" ! 2538: { goto new4; } break; ! 2539: case 281: ! 2540: # line 1734 "gram.y" ! 2541: { new4: ! 2542: Ptype t = yypvt[-0].pn->tp; ! 2543: yyval.p = new texpr(GNEW,t,0); ! 2544: yyval.pe->e2 = yypvt[-2].pe; ! 2545: } break; ! 2546: case 282: ! 2547: # line 1740 "gram.y" ! 2548: { ! 2549: Pexpr ee = yypvt[-1].pe; ! 2550: Pexpr e = yypvt[-3].pe; ! 2551: if (e->base==NEW || e->base==GNEW) ! 2552: e->e1 = ee; ! 2553: else ! 2554: yyval.p = new call(e,ee); ! 2555: } break; ! 2556: case 283: ! 2557: # line 1751 "gram.y" ! 2558: { ! 2559: yyval.pn = yypvt[-0].pn; ! 2560: curr_scope = yypvt[-0].pn; ! 2561: } break; ! 2562: case 284: ! 2563: # line 1756 "gram.y" ! 2564: { yyval.pn = sta_name; } break; ! 2565: case 285: ! 2566: # line 1761 "gram.y" ! 2567: { yyval.p = yypvt[-0].pn; } break; ! 2568: case 286: ! 2569: # line 1763 "gram.y" ! 2570: { yyval.p = Ncopy(yypvt[-0].pn); ! 2571: yyval.pn->n_qualifier = yypvt[-1].pn; ! 2572: } break; ! 2573: case 287: ! 2574: # line 1767 "gram.y" ! 2575: { yyval.p = new name(oper_name(yypvt[-0].t)); ! 2576: yyval.pn->n_oper = yypvt[-0].t; ! 2577: } break; ! 2578: case 288: ! 2579: # line 1771 "gram.y" ! 2580: { yyval.p = new name(oper_name(yypvt[-0].t)); ! 2581: yyval.pn->n_oper = yypvt[-0].t; ! 2582: yyval.pn->n_qualifier = yypvt[-2].pn; ! 2583: } break; ! 2584: case 289: ! 2585: # line 1776 "gram.y" ! 2586: { yyval.p = yypvt[-0].p; ! 2587: sig_name(yyval.pn); ! 2588: } break; ! 2589: case 290: ! 2590: # line 1780 "gram.y" ! 2591: { yyval.p = yypvt[-0].p; ! 2592: sig_name(yyval.pn); ! 2593: yyval.pn->n_qualifier = yypvt[-2].pn; ! 2594: } break; ! 2595: case 291: ! 2596: # line 1785 "gram.y" ! 2597: { ! 2598: if (strcmp(yypvt[-2].pn->string,yypvt[-0].pn->string)) error("syntax error: inconsistent destructor notation"); ! 2599: yyval.p = new name(oper_name(DTOR)); ! 2600: yyval.pn->n_oper = DTOR; ! 2601: yyval.pn->n_qualifier = yypvt[-2].pn; ! 2602: } break; ! 2603: case 292: ! 2604: # line 1797 "gram.y" ! 2605: { yyval.p = Ncast(yypvt[-2].p,yypvt[-1].pn); } break; ! 2606: case 293: ! 2607: # line 1800 "gram.y" ! 2608: { check_cast(); } break; ! 2609: case 294: ! 2610: # line 1804 "gram.y" ! 2611: { ! 2612: TOK t = yypvt[-0].t; ! 2613: ! 2614: switch (t) { ! 2615: case FRIEND: ! 2616: case OVERLOAD: ! 2617: case REGISTER: ! 2618: case STATIC: ! 2619: case EXTERN: ! 2620: case AUTO: ! 2621: case VIRTUAL: ! 2622: error("%k in operatorT",t); ! 2623: t = INT; ! 2624: ! 2625: } ! 2626: ! 2627: yyval.p = new basetype(t,0); ! 2628: ! 2629: } break; ! 2630: case 295: ! 2631: # line 1823 "gram.y" ! 2632: { yyval.p = new basetype(TYPE,yypvt[-0].pn); } break; ! 2633: case 296: ! 2634: # line 1825 "gram.y" ! 2635: { ! 2636: if ( DECL_TYPE != -1 ) ! 2637: yyval.p = yypvt[-1].pb->type_adj(yypvt[-0].t); ! 2638: DECL_TYPE = 0; ! 2639: } break; ! 2640: case 297: ! 2641: # line 1831 "gram.y" ! 2642: { ! 2643: if ( DECL_TYPE != -1 ) ! 2644: yyval.p = yypvt[-1].pb->name_adj(yypvt[-0].pn); ! 2645: DECL_TYPE = 0; ! 2646: } break; ! 2647: case 298: ! 2648: # line 1838 "gram.y" ! 2649: { yyval.p = Ncast(yypvt[-1].p,yypvt[-0].pn); } break; ! 2650: case 299: ! 2651: # line 1841 "gram.y" ! 2652: { yyval.p = Ncast(yypvt[-1].p,yypvt[-0].pn); } break; ! 2653: case 300: ! 2654: # line 1844 "gram.y" ! 2655: { yyval.p = Ndata(yypvt[-1].p,yypvt[-0].pn); } break; ! 2656: case 301: ! 2657: # line 1846 "gram.y" ! 2658: { yyval.p = Ndata(yypvt[-3].p,yypvt[-2].pn); ! 2659: yyval.pn->n_initializer = yypvt[-0].pe; ! 2660: } break; ! 2661: case 302: ! 2662: # line 1852 "gram.y" ! 2663: { ! 2664: check_decl(); ! 2665: in_arg_list=1; ! 2666: yyval.pl = modified_tn; ! 2667: modified_tn = 0; ! 2668: } break; ! 2669: case 303: ! 2670: # line 1861 "gram.y" ! 2671: { ! 2672: yyval.p = new fct(0,name_unlist(yypvt[-3].nl),yypvt[-2].t); ! 2673: if ( NEXTTOK() != COLON ) in_arg_list=0; ! 2674: //in_arg_list=0; ! 2675: Pfct(yyval.pt)->f_const = (yypvt[-0].i & 1); ! 2676: if ( parsing_class_members ! 2677: || (NEXTTOK()!=LC && yychar!=COLON)) ! 2678: end_al(yypvt[-4].pl,1); ! 2679: else ! 2680: end_al(yypvt[-4].pl,0); ! 2681: } break; ! 2682: case 304: ! 2683: # line 1875 "gram.y" ! 2684: { ! 2685: if (yypvt[-0].p) ! 2686: if (yypvt[-2].p) ! 2687: yypvt[-2].nl->add(yypvt[-0].pn); ! 2688: else { ! 2689: error("AD syntax"); ! 2690: yyval.nl = new nlist(yypvt[-0].pn); ! 2691: } ! 2692: else ! 2693: error("AD syntax"); ! 2694: } break; ! 2695: case 305: ! 2696: # line 1887 "gram.y" ! 2697: { ! 2698: if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn); ! 2699: } break; ! 2700: case 307: ! 2701: # line 1893 "gram.y" ! 2702: { yyval.p = 0; } break; ! 2703: case 308: ! 2704: # line 1897 "gram.y" ! 2705: { yyval.t = 1; } break; ! 2706: case 309: ! 2707: # line 1899 "gram.y" ! 2708: { yyval.t = ELLIPSIS; } break; ! 2709: case 310: ! 2710: # line 1901 "gram.y" ! 2711: { yyval.t = ELLIPSIS; } break; ! 2712: case 311: ! 2713: # line 1905 "gram.y" ! 2714: { ! 2715: yyval.p = new ptr(PTR,0); ! 2716: EXPECT_ID(); ! 2717: } break; ! 2718: case 312: ! 2719: # line 1910 "gram.y" ! 2720: { ! 2721: yyval.p = new ptr(RPTR,0); ! 2722: EXPECT_ID(); ! 2723: } break; ! 2724: case 313: ! 2725: # line 1915 "gram.y" ! 2726: { yyval.p = doptr(PTR,yypvt[-0].t); } break; ! 2727: case 314: ! 2728: # line 1917 "gram.y" ! 2729: { ! 2730: switch ( yypvt[-0].t ) { ! 2731: case CONST: ! 2732: yypvt[-1].pp->rdo = 1; break; ! 2733: case VOLATILE: ! 2734: error('w',"\"volatile\" not implemented (ignored)"); ! 2735: break; ! 2736: default: ! 2737: error( "syntax error: *%k", yypvt[-0].t ); ! 2738: } ! 2739: yyval.p = yypvt[-1].pp; ! 2740: } break; ! 2741: case 315: ! 2742: # line 1930 "gram.y" ! 2743: { yyval.p = doptr(RPTR,yypvt[-0].t); } break; ! 2744: case 316: ! 2745: # line 1932 "gram.y" ! 2746: { ! 2747: yyval.p = new ptr(PTR,0); ! 2748: yyval.pp->memof = Pclass(Pbase(yypvt[-0].pn->tp)->b_name->tp); ! 2749: EXPECT_ID(); ! 2750: } break; ! 2751: case 317: ! 2752: # line 1938 "gram.y" ! 2753: { yyval.p = doptr(PTR,yypvt[-0].t); ! 2754: yyval.pp->memof = Pclass(Pbase(yypvt[-1].pn->tp)->b_name->tp); ! 2755: } break; ! 2756: case 318: ! 2757: # line 1943 "gram.y" ! 2758: { yyval.p = new vec(0,yypvt[-1].pe!=dummy?yypvt[-1].pe:0 ); } break; ! 2759: case 319: ! 2760: # line 1944 "gram.y" ! 2761: { yyval.p = new vec(0,0); } break; ! 2762: } ! 2763: goto yystack; /* stack new state and value */ ! 2764: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.