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