Annotation of researchv10no/cmd/cfront/ooptcfront/y.tab.c, revision 1.1

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

unix.superglobalmegacorp.com

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