Annotation of researchv10no/cmd/cfront/cfront2.00/y.tab.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.