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