Annotation of researchv9/jerq/sgs/ld/lex.yy.c, revision 1.1

1.1     ! root        1: # include "stdio.h"
        !             2: # define U(x) x
        !             3: # define NLSTATE yyprevious=YYNEWLINE
        !             4: # define BEGIN yybgin = yysvec + 1 +
        !             5: # define INITIAL 0
        !             6: # define YYLERR yysvec
        !             7: # define YYSTATE (yyestate-yysvec-1)
        !             8: # define YYOPTIM 1
        !             9: # define YYLMAX BUFSIZ
        !            10: # define output(c) putc(c,yyout)
        !            11: # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
        !            12: # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
        !            13: # define yymore() (yymorfg=1)
        !            14: # define ECHO fprintf(yyout, "%s",yytext)
        !            15: # define REJECT { nstr = yyreject(); goto yyfussy;}
        !            16: int yyleng; extern char yytext[];
        !            17: int yymorfg;
        !            18: extern char *yysptr, yysbuf[];
        !            19: int yytchar;
        !            20: FILE *yyin = {stdin}, *yyout = {stdout};
        !            21: extern int yylineno;
        !            22: struct yysvf { 
        !            23:        struct yywork *yystoff;
        !            24:        struct yysvf *yyother;
        !            25:        int *yystops;};
        !            26: struct yysvf *yyestate;
        !            27: extern struct yysvf yysvec[], *yybgin;
        !            28: static char ID[] = "@(#) ld.lex: 1.10 12/1/83";
        !            29: #include "system.h"
        !            30: #include <stdio.h>
        !            31: #include <signal.h>
        !            32: #include "bool.h"
        !            33: #include "paths.h"
        !            34: #include "sgs.h"
        !            35: #include "structs.h"           /* global structure definitions  */
        !            36: #include "extrns.h"            /* external function definitions */
        !            37: #include "y.tab.h"             /* tokens generated by yacc      */
        !            38: 
        !            39: #if !ONEPROC || TRVEC
        !            40: #include "tv.h"
        !            41: #include "ldtv.h"
        !            42: #endif
        !            43: 
        !            44: #include "aouthdr.h"
        !            45: #if ONEPROC
        !            46: #include "instr.h"
        !            47: #endif
        !            48: 
        !            49: extern char version[];         /* ld version information */
        !            50: 
        !            51: /*
        !            52:  *     There are four start states for the lex parse:
        !            53:  *
        !            54:  *     A       : look for initial keyword of a ld directive
        !            55:  *     MEMoREG : scan a ld directive
        !            56:  *     COMA    : skip a stand-alone comment
        !            57:  *     COMoMR  : skip a comment at the end of a directive
        !            58:  */
        !            59: 
        !            60: #define RET1(a)   {yylval.ivalue=a;moveit(1,a);return(a);}
        !            61: #define RET2(a,b) {yylval.sptr=a;moveit(2,yylval.sptr);return(b);}
        !            62: #define RET3(a,b) {yylval.lptr=a;moveit(3,yylval.lptr);return(b);}
        !            63: 
        !            64: 
        !            65: 
        !            66: #define LSAVSIZE 6
        !            67: static long lsavarea[LSAVSIZE];        /* local save area for integer tokens */
        !            68: static int lsavndx = 0;
        !            69: extern long *savelng();
        !            70: 
        !            71: #define CSAVSIZE 1024
        !            72: static char csavarea[CSAVSIZE];        /* local save area for string tokens */
        !            73: static char *csavptr = &csavarea[0];
        !            74: extern char *savestr();
        !            75: 
        !            76: char inline[256];              /* global save area for the current input line */
        !            77: char *inptr = &inline[0];
        !            78: 
        !            79: char **argptr;         /* main procedure argument list */
        !            80: int argcnt;            /*      and count               */
        !            81: 
        !            82: 
        !            83: extern int in_y_exp;   /*      in_y_exp :
        !            84:                         *              TRUE  : yacc is parsing assignment
        !            85:                         *              FALSE : yacc is not in assignment
        !            86:                         *
        !            87:                         *      See explanation is ld.yac.
        !            88:                         */
        !            89: 
        !            90: int    assigncnt;      /* number of assignment slots           */
        !            91: 
        !            92: 
        !            93: #if FLEXNAMES
        !            94: #      define STRBASE 6144
        !            95: #else
        !            96: #      define STRBASE 3072
        !            97: #endif
        !            98: /*eject*/
        !            99: # define A 2
        !           100: # define MEMoREG 4
        !           101: # define COMA 6
        !           102: # define COMoMR 8
        !           103: # define YYNEWLINE 10
        !           104: yylex(){
        !           105: int nstr; extern int yyprevious;
        !           106:                long longint;   /* local variables used in processing */
        !           107:                char *p;        /* numbers and strings                */
        !           108: while((nstr = yylook()) >= 0)
        !           109: yyfussy: switch(nstr){
        !           110: case 0:
        !           111: if(yywrap()) return(0); break;
        !           112: case 1:
        !           113:        BEGIN COMA;
        !           114: break;
        !           115: case 2:
        !           116: BEGIN COMoMR;
        !           117: break;
        !           118: case 3:
        !           119: BEGIN A;
        !           120: break;
        !           121: case 4:
        !           122: BEGIN MEMoREG;
        !           123: break;
        !           124: case 5:
        !           125: ;
        !           126: break;
        !           127: case 6:
        !           128: { BEGIN MEMoREG; RET1(MEMORY); }
        !           129: break;
        !           130: case 7:
        !           131: { BEGIN MEMoREG; RET1(REGIONS); }
        !           132: break;
        !           133: case 8:
        !           134:        { BEGIN MEMoREG; RET1(TV); }
        !           135: break;
        !           136: case 9:
        !           137: RET1(SECTIONS);
        !           138: break;
        !           139: case 10:
        !           140: RET1(DSECT);
        !           141: break;
        !           142: case 11:
        !           143: RET1(NOLOAD);
        !           144: break;
        !           145: case 12:
        !           146:        RET1(COPY);
        !           147: break;
        !           148: case 13:
        !           149:        RET1(INFO);
        !           150: break;
        !           151: case 14:
        !           152:        { BEGIN A; RET1(RBRACE); }
        !           153: break;
        !           154: case 15:
        !           155:   RET1(ORG);
        !           156: break;
        !           157: case 16:
        !           158:   RET1(LEN);
        !           159: break;
        !           160: case 17:
        !           161: RET1(SPARE);
        !           162: break;
        !           163: case 18:
        !           164: RET1(RANGE);
        !           165: break;
        !           166: case 19:
        !           167: RET1(ASSIGN);
        !           168: break;
        !           169: case 20:
        !           170:        RET1(DOT);
        !           171: break;
        !           172: case 21:
        !           173:        RET1(RBRACE);
        !           174: break;
        !           175: case 22:
        !           176:        RET1(LBRACE);
        !           177: break;
        !           178: case 23:
        !           179:        RET1(RPAREN);
        !           180: break;
        !           181: case 24:
        !           182:        RET1(LPAREN);
        !           183: break;
        !           184: case 25:
        !           185:        RET1(COLON);
        !           186: break;
        !           187: case 26:
        !           188:        RET1(SEMICOL);
        !           189: break;
        !           190: case 27:
        !           191:        RET1(MINUS);
        !           192: break;
        !           193: case 28:
        !           194:        RET1(EQ);
        !           195: break;
        !           196: case 29:
        !           197:        RET1(GT);
        !           198: break;
        !           199: case 30:
        !           200:        RET1(COMMA);
        !           201: break;
        !           202: case 31:
        !           203:        RET1(AND);
        !           204: break;
        !           205: case 32:
        !           206:        RET1(ANDAND);
        !           207: break;
        !           208: case 33:
        !           209:        RET1(OR);
        !           210: break;
        !           211: case 34:
        !           212:        RET1(OROR);
        !           213: break;
        !           214: case 35:
        !           215:        RET1(EQEQ);
        !           216: break;
        !           217: case 36:
        !           218:        RET1(NE);
        !           219: break;
        !           220: case 37:
        !           221:        RET1(BNOT);
        !           222: break;
        !           223: case 38:
        !           224:        RET1(NOT);
        !           225: break;
        !           226: case 39:
        !           227:        RET1(DIV);
        !           228: break;
        !           229: case 40:
        !           230:        RET1(MULT);
        !           231: break;
        !           232: case 41:
        !           233:        RET1(PC);
        !           234: break;
        !           235: case 42:
        !           236:        RET1(LT);
        !           237: break;
        !           238: case 43:
        !           239:        RET1(GE);
        !           240: break;
        !           241: case 44:
        !           242:        RET1(LE);
        !           243: break;
        !           244: case 45:
        !           245:        RET1(LSHIFT);
        !           246: break;
        !           247: case 46:
        !           248:        RET1(RSHIFT);
        !           249: break;
        !           250: case 47:
        !           251:        RET1(PLUS);
        !           252: break;
        !           253: case 48:
        !           254:        RET1(PLUSEQ);
        !           255: break;
        !           256: case 49:
        !           257:        RET1(MINUSEQ);
        !           258: break;
        !           259: case 50:
        !           260:        RET1(MULTEQ);
        !           261: break;
        !           262: case 51:
        !           263:        RET1(DIVEQ);
        !           264: break;
        !           265: case 52:
        !           266: RET1(ALIGN);
        !           267: break;
        !           268: case 53:
        !           269: RET1(BLOCK);
        !           270: break;
        !           271: case 54:
        !           272: RET1(GROUP);
        !           273: break;
        !           274: case 55:
        !           275: RET1(PHY);
        !           276: break;
        !           277: case 56:
        !           278: {
        !           279:        lineno++;
        !           280:        inptr = &inline[0];
        !           281:        }
        !           282: break;
        !           283: case 57:
        !           284: {
        !           285:        *inptr++ = ' ';
        !           286:        *inptr   = '\0';
        !           287:        }
        !           288: break;
        !           289: case 58:
        !           290: {
        !           291:                longint = 0L;
        !           292:                for(p=yytext+1; *p != '\0'; p++)  {
        !           293:                        longint = longint * 8 + (*p-'0');
        !           294:                        }
        !           295:                RET3(savelng(longint), LONGINT);
        !           296:                }
        !           297: break;
        !           298: case 59:
        !           299: {
        !           300:                longint = 0L;
        !           301:                for(p=yytext; *p != '\0'; p++)  {
        !           302:                        longint = longint * 10 + (*p-'0');
        !           303:                        }
        !           304:                RET3(savelng(longint), LONGINT);
        !           305:                }
        !           306: break;
        !           307: case 60:
        !           308:  {
        !           309:                longint = 0L;
        !           310:                for(p=yytext+2; *p != '\0'; p++)  {
        !           311:                        longint = longint << 4;
        !           312:                        if (*p >= '0' && *p <= '9')
        !           313:                                longint += *p-'0';
        !           314:                        else if (*p >= 'a' && *p <= 'f')
        !           315:                                longint += *p-'a'+10;
        !           316:                        else longint += *p-'A'+10;
        !           317:                        }
        !           318:                RET3(savelng(longint), LONGINT);
        !           319:                }
        !           320: break;
        !           321: case 61:
        !           322: {
        !           323:                        yyless(yyleng-2);
        !           324:                        RET2(savestr(yytext), NAME);
        !           325:                }
        !           326: break;
        !           327: case 62:
        !           328: {
        !           329:                        if ( in_y_exp )
        !           330:                                REJECT;
        !           331:                        yyless(yyleng-2);
        !           332:                        RET2(savestr(yytext), FILENAME);
        !           333:                }
        !           334: break;
        !           335: case 63:
        !           336:        {
        !           337:                        RET2(savestr(yytext), NAME);
        !           338:                }
        !           339: break;
        !           340: case 64:
        !           341:        {
        !           342:                        if ( in_y_exp )
        !           343:                                REJECT;
        !           344:                        RET2(savestr(yytext), FILENAME);
        !           345:                }
        !           346: break;
        !           347: case -1:
        !           348: break;
        !           349: default:
        !           350: fprintf(yyout,"bad switch yylook %d",nstr);
        !           351: } return(0); }
        !           352: /* end of yylex */
        !           353: /*eject*/
        !           354: main(argc,argv)
        !           355: int argc;
        !           356: char *argv[];
        !           357: {
        !           358: 
        !           359: /*
        !           360:  * This is the MAIN procdure for PASS 1 of ld
        !           361:  *
        !           362:  * PASS 1 is the parsing pass:
        !           363:  *     1. The ld command line, and any specified ifiles, are
        !           364:  *             scanned for good syntax.
        !           365:  *     2. Control blocks are constructed, containing the information
        !           366:  *             extracted from the input.
        !           367:  *     3. If there are no errors, the control blocks are written out
        !           368:  *             to a "transfer file", for reading by PASS 2.
        !           369:  *     4. If there are no errors, PASS 2 is called via a system 
        !           370:  *             "execl" call.
        !           371:  */
        !           372: 
        !           373: /*
        !           374:  * Initialize PASS 1
        !           375:  */
        !           376: 
        !           377:        initpass1();
        !           378:        argptr = argv;
        !           379:        argcnt = argc;
        !           380:        if ( argcnt <= 1 )
        !           381:        {
        !           382:                fprintf( stderr, "Usage: %sld [ options ] file ...\n", SGS );
        !           383:                exit(1);
        !           384:        }
        !           385: 
        !           386: /*
        !           387:  * Process the command-line arguments to ld
        !           388:  */
        !           389: 
        !           390:        lineno = 0;
        !           391:        curfilnm = savefn("*command line*");
        !           392: 
        !           393:        while( --argcnt )
        !           394:                if( **++argptr == '-' )
        !           395:                        /*
        !           396:                         * The argument is a flag
        !           397:                         */
        !           398:                        pflags( ++(*argptr), FALSE );
        !           399:                else {
        !           400:                        /*
        !           401:                         * The argument is a file name
        !           402:                         */
        !           403:                        BEGIN A;
        !           404:                        filespec(*argptr);
        !           405:                        }
        !           406: 
        !           407: /*
        !           408:  * Perform a consistency check among the ld flags:
        !           409:  *     1. "-h" and "-X" flags
        !           410:  *     2. "-ild", "-r", and "-a" flags
        !           411:  *     3. "-r" and "-s" flags
        !           412:  *     4. "-p" and "-B" flags
        !           413:  *
        !           414:  * Assign default values to the ld flags
        !           415:  *     1. "-h" flag
        !           416:  *     2. "-a" flag
        !           417:  *     3. "-p" flag
        !           418:  */
        !           419: 
        !           420:        if( Xflag )
        !           421:                if( hflag > 0 ) {
        !           422:                        if( hflag < sizeof(AOUTHDR) )
        !           423:                                lderror(1, 0,NULL, "optional header size (%d bytes) is too small to contain the UNIX a.out header (%d bytes)",
        !           424:                                        hflag, sizeof(AOUTHDR) );
        !           425:                        }
        !           426:                else
        !           427:                        hflag = sizeof(AOUTHDR);
        !           428: #if ILDOPT
        !           429:        if (ildflag) {
        !           430:                rflag = 1;
        !           431:                if (sflag) {
        !           432:                        lderror (0, 0, NULL, "both -ild and -s flags are set. -s flag turned off");
        !           433:                        sflag = 0;
        !           434:                }
        !           435:        }
        !           436: #endif
        !           437:        if( rflag  &&  sflag ) {
        !           438:                lderror(0, 0,NULL, "both -r and -s flags are set. -s flag turned off" );
        !           439:                sflag = 0;
        !           440:                }
        !           441:        if ( Bflag && (pflag > 0) && (pflag < Bflag)) {
        !           442:                lderror(0, 0, NULL, "pflag(%d) less than Bflag, set to value of Bflag(%d)\n",
        !           443:                        pflag, Bflag);
        !           444:                pflag = Bflag;
        !           445:                }
        !           446:        if( ! rflag )
        !           447:                aflag = 1;
        !           448: 
        !           449: /*
        !           450:  * Supply version information
        !           451:  */
        !           452: 
        !           453:        if( Vflag ) {
        !           454:                fprintf( stderr, "\n%sld : %s : Version %s",
        !           455:                        SGSNAME, RELEASE, version );
        !           456:                if( Vflag == 2 ) {
        !           457: #if AR16WR
        !           458:                        fprintf( stderr, " : PDP 11/70-45 : " );
        !           459: #endif
        !           460: #if AR32WR
        !           461:                        fprintf( stderr, " : VAX 11/780 : " );
        !           462: #endif
        !           463: #if ! AR16WR && ! AR32WR
        !           464: #ifdef u3b
        !           465:                        fprintf( stderr, " : 3B-20 : " );
        !           466: #else
        !           467:                        fprintf( stderr, " : non-DEC : ");
        !           468: #endif
        !           469: #endif
        !           470: #if TS
        !           471:                        fprintf( stderr, "UN*X TS" );
        !           472: #else
        !           473:                        fprintf( stderr, "UN*X" );
        !           474: #endif
        !           475:                        }
        !           476:                fprintf( stderr, "\n" );
        !           477:                }
        !           478: 
        !           479: /*
        !           480:  * Exit if any errors were found, or if this is a "parse only"
        !           481:  * run
        !           482:  */
        !           483: 
        !           484:        if( (errlev != 0)  ||  (cflag == 1) ) {
        !           485: #if !ONEPROC
        !           486:                unlink( trnname );
        !           487: #endif
        !           488:                exit(errlev);
        !           489:                }
        !           490: 
        !           491: /*
        !           492:  * Call PASS 2
        !           493:  */
        !           494: 
        !           495: #if ONEPROC
        !           496:        pass2();
        !           497: }
        !           498: #else
        !           499:        callpass2();
        !           500: 
        !           501:        unlink( trnname );
        !           502:        lderror(2, 0,NULL, "failure to load pass 2 of %sld", SGS);
        !           503: }
        !           504: /*eject*/
        !           505: ldexit()
        !           506: {
        !           507: 
        !           508: /*
        !           509:   * PASS 1: clean up and exit after a fatal error
        !           510:  */
        !           511: 
        !           512:        signal(SIGINT, SIG_IGN);
        !           513:        signal(SIGQUIT, SIG_DFL);
        !           514:        signal(SIGTERM, SIG_IGN);
        !           515:        signal(SIGHUP, SIG_DFL);
        !           516: 
        !           517:        exit(13);  /* unlucky break */
        !           518: }
        !           519: /*eject*/
        !           520: #endif
        !           521: long *
        !           522: savelng(l)
        !           523: long l;
        !           524: {
        !           525: 
        !           526: /*
        !           527:  * Copy a long token into local save area and return a pointer to it.
        !           528:  *
        !           529:  * The save area is used as a circular buffer
        !           530:  */
        !           531: 
        !           532:        lsavndx++;
        !           533:        lsavndx %= LSAVSIZE;
        !           534:        lsavarea[lsavndx] = l;
        !           535: 
        !           536:        return( &lsavarea[lsavndx] );
        !           537: }
        !           538: 
        !           539: 
        !           540: 
        !           541: 
        !           542: char *
        !           543: savestr(p) 
        !           544: char *p;
        !           545: {
        !           546: 
        !           547: /*
        !           548:  * Copy a string into local save area and return a pointer to it
        !           549:  *
        !           550:  * The save area is used as a circular buffer
        !           551:  */
        !           552: 
        !           553:        register char *saveptr;
        !           554: 
        !           555:        if( csavptr > (csavarea + CSAVSIZE - 256) )
        !           556:                csavptr = csavarea;
        !           557:        saveptr = csavptr;
        !           558: 
        !           559:        while( *csavptr++ = *p++ );
        !           560: 
        !           561:        return( saveptr );
        !           562: }
        !           563: 
        !           564: 
        !           565: 
        !           566: 
        !           567: moveit(type, value)
        !           568: int type, value;
        !           569: {
        !           570:        register char *p;
        !           571: 
        !           572:        p = &yytext[0];
        !           573: 
        !           574:        while( *inptr++ = *p++ );
        !           575:        inptr--;
        !           576: 
        !           577: #if DEBUG
        !           578:        if( dflag > 3 ) {
        !           579:                fprintf(stderr, "line: <%s> return: <", inline);
        !           580:                switch( type ) {
        !           581:                case 1:
        !           582:                        fprintf(stderr, "%d>\n", value);
        !           583:                        break;
        !           584:                case 2:
        !           585:                        fprintf(stderr, "%s>\n", (char *) value);
        !           586:                        break;
        !           587:                case 3:
        !           588:                        fprintf(stderr, "%08lx>\n", * (long *) value);
        !           589:                        break;
        !           590:                }
        !           591:                }
        !           592: #endif
        !           593: }
        !           594: /*eject*/
        !           595: initpass1()
        !           596: {
        !           597:        register int oldmode;
        !           598:        int ldexit();
        !           599: #if ONEPROC
        !           600:        long times();
        !           601: #endif
        !           602: 
        !           603: /*
        !           604:  * Set the following signals to be caught, unless ld is running in the
        !           605:  * background. In this case, leave them set at "ignore"
        !           606:  */
        !           607: 
        !           608:        if( signal(SIGINT, ldexit)  ==  SIG_IGN )
        !           609:                signal(SIGINT, SIG_IGN);
        !           610:        if( signal(SIGHUP, ldexit)  ==  SIG_IGN )
        !           611:                signal(SIGHUP, SIG_IGN);
        !           612:        if( signal(SIGQUIT, ldexit)  ==  SIG_IGN )
        !           613:                signal(SIGQUIT, SIG_IGN);
        !           614: 
        !           615: 
        !           616: #if ONEPROC
        !           617:        ttime = times(&ptimes);
        !           618: #else
        !           619: /*
        !           620:  * Create the "transfer file" used to pass information to PASS 2
        !           621:  */
        !           622: 
        !           623:        sprintf(trnname, "%s/%s", TMPDIR, "ldXXXXX");
        !           624:        mktemp(trnname);
        !           625: 
        !           626:        oldmode = umask( 0 );
        !           627:        if( close( creat(trnname,0644) ) == -1 ) {
        !           628:                umask( oldmode );
        !           629:                lderror(2, 0,NULL, "can't create intermediate %sld file %s",
        !           630:                        SGS, trnname);
        !           631:                }
        !           632:        umask( oldmode );
        !           633: #endif
        !           634: 
        !           635: /*
        !           636:  * Allocate the global file name save area
        !           637:  */
        !           638: 
        !           639:        strbase = myalloc(STRBASE);
        !           640:        strnext = strbase;
        !           641:        strlimit = strbase + STRBASE;
        !           642: 
        !           643: #if ONEPROC && (!NOSDP)
        !           644:        /*
        !           645:         * Initialize the Software Demand Paging System
        !           646:         */
        !           647:        syminit();
        !           648: #endif
        !           649: }
        !           650: /*eject*/
        !           651: #if !ONEPROC
        !           652: callpass2()
        !           653: {
        !           654: 
        !           655: /*
        !           656:  * Output PASS 1 information to the "transfer file"
        !           657:  *
        !           658:  *     1. reserve space for flags and list headers
        !           659:  *     2. output lists
        !           660:  *     3. output flags and list headers
        !           661:  */
        !           662: 
        !           663:        trnfdes = fopen(trnname, "w");
        !           664:        skp_tf_hdr();
        !           665:        wrt_tf();
        !           666:        wrt_tf_hdr();
        !           667:        fclose( trnfdes );
        !           668: 
        !           669: /*
        !           670:  * Exit, if this is a "generate transfer file run" only
        !           671:  */
        !           672: 
        !           673:        if( cflag == 2 ) {
        !           674:                fprintf( stderr, "ld transfer file name: %s\n", trnname );
        !           675:                exit(0);
        !           676:                }
        !           677: #if DEBUG
        !           678:        if( dflag > 2 )
        !           679:                fprintf( stderr, "ld transfer file name: %s\n", trnname );
        !           680: #endif
        !           681: 
        !           682: /*
        !           683:  * Execute PASS 2
        !           684:  */
        !           685: 
        !           686:        execl(LD2, LD2, trnname, 0);
        !           687: 
        !           688: }
        !           689: /*eject*/
        !           690: skp_tf_hdr()
        !           691: {
        !           692: 
        !           693: /*
        !           694:  * Reserve space for control and descriptor information collected during
        !           695:  * PASS 1
        !           696:  *
        !           697:  * This information is of fixed length, and comes at the very beginning
        !           698:  * of the transfer file
        !           699:  */
        !           700: 
        !           701:        register long length;
        !           702: 
        !           703:        length = 
        !           704:                7 * sizeof(int)             +   /* list sizes       */
        !           705:                13 * sizeof(char)           +   /* flags            */
        !           706: #if UNIX || XL
        !           707:                1 * sizeof(char)            +   /* xflag            */
        !           708: #endif
        !           709: #if ILDOPT
        !           710:                1 * sizeof(char)            +   /* ildflag          */
        !           711: #endif
        !           712: #if PAGING
        !           713:                1 * sizeof(char)            +   /* Fflag            */
        !           714: #endif
        !           715: #if PAGING
        !           716:                1 * sizeof(char)            +   /* zflag            */
        !           717: #endif
        !           718: #if COMMON
        !           719:                2 * sizeof(char)            +   /* tflag and Mflag  */
        !           720: #endif
        !           721:                3 * sizeof(int)             +   /* control values   */
        !           722:                3 * sizeof(short)           +   /* VStamp, fill and magic   */
        !           723:                128                         +   /* output file name */
        !           724:                8                           +   /* program entry pt */
        !           725:                sizeof(TVINFO)              +   /* tv information   */
        !           726:                1 * sizeof(int);                /* flags + counts   */
        !           727: 
        !           728:        fseek( trnfdes, length, 0 );
        !           729: }
        !           730: /*eject*/
        !           731: wrt_tf()
        !           732: {
        !           733: 
        !           734: /*
        !           735:  * Output the bulk of the information extracted from PASS 1:
        !           736:  *
        !           737:  *     1. The names of input ifiles, input *.o and archive files, and
        !           738:  *             output sections
        !           739:  *     2. The data structures describing the ld directives
        !           740:  */
        !           741: 
        !           742:        MEMTYPE *outds1();
        !           743:        REGION *outds2();
        !           744:        ACTITEM *outds3(), *outds4(), *outds6();
        !           745:        TVASSIGN *outds8();
        !           746: 
        !           747: /*
        !           748:  * 1. Output saved strings
        !           749:  */
        !           750: 
        !           751:        fwrite( strbase, 1, (strnext - strbase), trnfdes );
        !           752: 
        !           753: 
        !           754: /*
        !           755:  * 2a. Output DEFSYM data structures
        !           756:  */
        !           757: 
        !           758:        symcnt = 0;
        !           759:        if( symlist.head ) {
        !           760:                register ACTITEM *a;
        !           761:                a = (ACTITEM *) symlist.head;
        !           762:                while( a ) {
        !           763:                        a = outds3(a);
        !           764:                        symcnt++;
        !           765:                        }
        !           766:                }
        !           767: 
        !           768: /*
        !           769:  * 2b. Output MEMTYPE data structures
        !           770:  */
        !           771: 
        !           772:        memcnt = 0;
        !           773:        if( memlist.head ) {
        !           774:                register MEMTYPE *m;
        !           775:                m = (MEMTYPE *) memlist.head;
        !           776:                while( m ) {
        !           777:                        m = outds1(m);
        !           778:                        memcnt++;
        !           779:                        }
        !           780:                }
        !           781: 
        !           782: /*
        !           783:  * 2c. Output REGION data structures
        !           784:  */
        !           785: 
        !           786:        regcnt = 0;
        !           787:        if( reglist.head ) {
        !           788:                register REGION *r;
        !           789:                r = (REGION *) reglist.head;
        !           790:                while( r ) {
        !           791:                        r = outds2(r);
        !           792:                        regcnt++;
        !           793:                        }
        !           794:                }
        !           795: 
        !           796: /*
        !           797:  * 2d. Output information on input *.o and archive library files
        !           798:  */
        !           799: 
        !           800:        ldfcnt = 0;
        !           801:        if( ldfilist.head ) {
        !           802:                register ACTITEM *a;
        !           803:                a = (ACTITEM *) ldfilist.head;
        !           804:                while( a ) {
        !           805:                        a = outds3(a);
        !           806:                        ldfcnt++;
        !           807:                        }
        !           808:                }
        !           809:        
        !           810: 
        !           811: /*
        !           812:  * 2e. Output information on output sections
        !           813:  */
        !           814: 
        !           815:        bldcnt = 0;
        !           816:        if( bldoutsc.head ) {
        !           817:                register ACTITEM *a;
        !           818:                a = (ACTITEM *) bldoutsc.head;
        !           819:                while( a ) {
        !           820:                        a = outds4(a);
        !           821:                        bldcnt++;
        !           822:                        }
        !           823:                }
        !           824: 
        !           825: 
        !           826: /*
        !           827:  * 2f. Output information on assignments
        !           828:  */
        !           829: 
        !           830:        expcnt = 0;
        !           831:        if( explist.head ) {
        !           832:                register ACTITEM *a;
        !           833:                a = (ACTITEM *) explist.head;
        !           834:                while( a ) {
        !           835:                        a = outds6(a);
        !           836:                        expcnt++;
        !           837:                        }
        !           838:                }
        !           839: 
        !           840: /*
        !           841:  * 2g. Output information on slot assignments
        !           842:  */
        !           843: 
        !           844:        tvslotcnt = 0;
        !           845:        if (tvslot1 != NULL) {
        !           846:                register TVASSIGN *s;
        !           847:                s = tvslot1;
        !           848:                while (s != NULL) {
        !           849:                        s = outds8(s);
        !           850:                        ++tvslotcnt;
        !           851:                        }
        !           852:                }
        !           853: }
        !           854: /*eject*/
        !           855: wrt_tf_hdr()
        !           856: {
        !           857: 
        !           858: /*
        !           859:  * Output control and descriptor information obtained during PASS 1
        !           860:  *
        !           861:  * This information is of fixed length, and comes at the very beginning
        !           862:  * of the transfer file
        !           863:  */
        !           864: 
        !           865:        int length;
        !           866: 
        !           867:        fseek( trnfdes, 0L, 0 );
        !           868: 
        !           869: /*
        !           870:  * Output the sizes of the lists built during PASS 1
        !           871:  *
        !           872:  *     1. symbol definition/undefinition
        !           873:  *     2. MEMORY directives
        !           874:  *     3. REGIONS directives
        !           875:  *     4. input *.o and archive library files
        !           876:  *     5. output sections
        !           877:  *     6. assignment directives
        !           878:  *     7. tv slot assignment directives
        !           879:  */
        !           880: 
        !           881:        fwrite( &symcnt, sizeof(int), 1, trnfdes );
        !           882:        fwrite( &memcnt, sizeof(int), 1, trnfdes );
        !           883:        fwrite( &regcnt, sizeof(int), 1, trnfdes );
        !           884:        fwrite( &ldfcnt, sizeof(int), 1, trnfdes );
        !           885:        fwrite( &bldcnt, sizeof(int), 1, trnfdes );
        !           886:        fwrite( &expcnt, sizeof(int), 1, trnfdes );
        !           887:        fwrite(&tvslotcnt, sizeof(int), 1, trnfdes);
        !           888: 
        !           889: /*
        !           890:  * Output the ld control flags
        !           891:  */
        !           892: 
        !           893:        fwrite( &aflag, sizeof(char), 1, trnfdes );
        !           894:        fwrite( &cflag, sizeof(char), 1, trnfdes );
        !           895:        fwrite( &dflag, sizeof(char), 1, trnfdes );
        !           896:        fwrite( &iflag, sizeof(char), 1, trnfdes );
        !           897:        fwrite( &mflag, sizeof(char), 1, trnfdes );
        !           898:        fwrite( &rflag, sizeof(char), 1, trnfdes );
        !           899:        fwrite( &sflag, sizeof(char), 1, trnfdes );
        !           900:        fwrite( &tvflag, sizeof(char), 1, trnfdes );
        !           901:        fwrite( &Hflag, sizeof(char), 1, trnfdes );
        !           902:        fwrite( &Nflag, sizeof(char), 1, trnfdes );
        !           903:        fwrite( &Sflag, sizeof(char), 1, trnfdes );
        !           904:        fwrite( &Vflag, sizeof(char), 1, trnfdes );
        !           905:        fwrite( &Xflag, sizeof(char), 1, trnfdes );
        !           906:        fwrite( &hflag, sizeof(int), 1, trnfdes );
        !           907:        fwrite( &pflag, sizeof(int), 1, trnfdes );
        !           908:        fwrite( &Bflag, sizeof(int), 1, trnfdes );
        !           909:        fwrite( &VSflag, sizeof(short), 1, trnfdes);
        !           910: #if UNIX || XL
        !           911:        fwrite( &xflag, sizeof(char), 1, trnfdes );
        !           912: #endif
        !           913: #if COMMON
        !           914:        fwrite( &tflag, sizeof(char), 1, trnfdes );
        !           915:        fwrite( &Mflag, sizeof(char), 1, trnfdes );
        !           916: #endif
        !           917: #if PAGING
        !           918:        fwrite( &Fflag, sizeof(char), 1, trnfdes );
        !           919: #endif
        !           920: #if PAGING
        !           921:        fwrite( &zflag, sizeof(char), 1, trnfdes );
        !           922: #endif
        !           923: #if ILDOPT
        !           924:        fwrite( &ildflag, sizeof(char), 1, trnfdes );
        !           925: #endif
        !           926: 
        !           927: /*
        !           928:  * Output various values extracted from the parse
        !           929:  */
        !           930: 
        !           931:        fwrite( &globfill, sizeof(short), 1, trnfdes );
        !           932:        fwrite( &magic, sizeof(unsigned short), 1, trnfdes );
        !           933: 
        !           934:        fwrite( outfilnm, 128, 1, trnfdes );
        !           935:        fwrite( epsymbol, 8, 1, trnfdes );
        !           936: 
        !           937:        /* convert filename from ptr to index */
        !           938:        if (tvspec.tvinflnm != NULL)
        !           939:                tvspec.tvinflnm = (char *) ((int) tvspec.tvinflnm - (int) strbase);
        !           940:        fwrite( &tvspec, sizeof(TVINFO), 1, trnfdes );
        !           941: 
        !           942: /*
        !           943:  * Output the size of the saved strings
        !           944:  */
        !           945: 
        !           946:        length = strnext - strbase;
        !           947:        fwrite( &length, sizeof(int), 1, trnfdes );
        !           948: }
        !           949: /*eject*/
        !           950: MEMTYPE *
        !           951: outds1(m)
        !           952: MEMTYPE *m;
        !           953: {
        !           954: 
        !           955: /*
        !           956:  * Output one MEMTYPE data structure
        !           957:  */
        !           958: 
        !           959:        fwrite( m, 1, sizeof(MEMTYPE), trnfdes );
        !           960: 
        !           961:        return( m->mtnext );
        !           962: }
        !           963: 
        !           964: 
        !           965: 
        !           966: REGION *
        !           967: outds2(r)
        !           968: REGION *r;
        !           969: {
        !           970: 
        !           971: /*
        !           972:  * Output one REGION data structure
        !           973:  */
        !           974: 
        !           975:        fwrite( r, 1, sizeof(REGION), trnfdes );
        !           976: 
        !           977:        return( r->rgnext );
        !           978: }
        !           979: /*eject*/
        !           980: ACTITEM *
        !           981: outds3(a)
        !           982: ACTITEM *a;
        !           983: {
        !           984: 
        !           985: /*
        !           986:  * Output one AILDFILE, AILDLBRY, AIADFILE, or AIDFNSYM data structure
        !           987:  *
        !           988:  * Convert a "pointer to a string" to a "index to a string"
        !           989:  */
        !           990: 
        !           991:        a->ldlbry.aiinflnm = (char *) ((int) a->ldlbry.aiinflnm - (int) strbase);
        !           992:        a->ldlbry.aifilnam = (char *) ((int) a->ldlbry.aifilnam - (int) strbase);
        !           993: 
        !           994:        fwrite( a, 1, sizeof(ACTITEM), trnfdes );
        !           995: 
        !           996:        return( a->ldlbry.ainext );
        !           997: }
        !           998: 
        !           999: 
        !          1000: 
        !          1001: ACTITEM *
        !          1002: outds4(a)
        !          1003: ACTITEM *a;
        !          1004: {
        !          1005: 
        !          1006: /*
        !          1007:  * Output one AIDFNSCN or AIDFNGRP data structure
        !          1008:  *
        !          1009:  * Convert a "pointer to a string" to a "index to a string"
        !          1010:  */
        !          1011: 
        !          1012:        register ACTITEM *anext, *b;
        !          1013:        ACTITEM *outds5();
        !          1014: 
        !          1015:        anext = a->dfnscn.ainext;
        !          1016:        a->dfnscn.aiinflnm = (char *) ((int) a->dfnscn.aiinflnm - (int) strbase);
        !          1017: 
        !          1018:        fwrite( a, 1, sizeof(ACTITEM), trnfdes );
        !          1019: 
        !          1020:        b = (ACTITEM *) a->dfnscn.sectspec.head;
        !          1021:        switch( a->dfnscn.aitype ) {
        !          1022:        case AIDFNSCN:
        !          1023:                while( b )
        !          1024:                        switch( b->addscn.aitype ) {
        !          1025:                        case AIADDSCN:
        !          1026:                                b = outds5(b);
        !          1027:                                break;
        !          1028:                        case AIADFILE:
        !          1029:                                b = outds3(b);
        !          1030:                                break;
        !          1031:                        case AIEVEXPR:
        !          1032:                                b = outds6(b);
        !          1033:                                break;
        !          1034:                        }
        !          1035:                break;
        !          1036:        case AIDFNGRP:
        !          1037:                while( b )
        !          1038:                        b = outds4(b);
        !          1039:                break;
        !          1040:        default:
        !          1041:                lderror(2,0,NULL,"failure dumping an AIDFNxxx data structure\n");
        !          1042:        }
        !          1043: 
        !          1044:        return( a->dfnscn.ainext );
        !          1045: }
        !          1046: 
        !          1047: 
        !          1048: 
        !          1049: ACTITEM *
        !          1050: outds5(a)
        !          1051: ACTITEM *a;
        !          1052: {
        !          1053: 
        !          1054: /*
        !          1055:  * Output one AIADDSCN data structure
        !          1056:  *
        !          1057:  * Convert a "pointer to a string" to a "index to a string"
        !          1058:  */
        !          1059: 
        !          1060:        a->addscn.aiinflnm = (char *) ((int) a->addscn.aiinflnm - (int) strbase);
        !          1061:        a->addscn.aiscfile = (char *) ((int) a->addscn.aiscfile - (int) strbase);
        !          1062: 
        !          1063:        fwrite( a, 1, sizeof(ACTITEM), trnfdes );
        !          1064: 
        !          1065:        return( a->addscn.ainext );
        !          1066: }
        !          1067: 
        !          1068: 
        !          1069: 
        !          1070: ACTITEM *
        !          1071: outds6(a)
        !          1072: ACTITEM *a;
        !          1073: {
        !          1074: 
        !          1075: /*
        !          1076:  * Output one AIEVEXPR data structure
        !          1077:  *
        !          1078:  * Convert a "pointer to a string" to a "index to a string"
        !          1079:  */
        !          1080: 
        !          1081:        a->evexpr.aiinflnm = (char *) ((int) a->evexpr.aiinflnm - (int) strbase);
        !          1082: 
        !          1083:        fwrite( a, 1, sizeof(ACTITEM), trnfdes );
        !          1084: 
        !          1085:        outds7( a->evexpr.aiexptr );
        !          1086: 
        !          1087:        return( a->evexpr.ainext );
        !          1088: }
        !          1089: 
        !          1090: 
        !          1091: 
        !          1092: outds7(e)
        !          1093: ENODE *e;
        !          1094: {
        !          1095: 
        !          1096: /*
        !          1097:  * Output one ENODE data structure
        !          1098:  */
        !          1099: 
        !          1100:        switch( (unsigned) e->gnode.exop ) {
        !          1101:        case INT:
        !          1102:        case DOT:
        !          1103:                fwrite( e, 1, sizeof(ENODE), trnfdes );
        !          1104:                break;
        !          1105:        case NAME:
        !          1106:                fwrite( e, 1, sizeof(ENODE), trnfdes );
        !          1107:                break;
        !          1108:        default:
        !          1109:                fwrite( e, 1, sizeof(ENODE), trnfdes );
        !          1110:                if( e->gnode.exleft )
        !          1111:                        outds7(e->gnode.exleft);
        !          1112:                if( e->gnode.exright )
        !          1113:                        outds7(e->gnode.exright);
        !          1114:        }
        !          1115: 
        !          1116: }
        !          1117: 
        !          1118: 
        !          1119: 
        !          1120: TVASSIGN *
        !          1121: outds8(s)
        !          1122: TVASSIGN *s;
        !          1123: {
        !          1124: 
        !          1125: /*
        !          1126:  *     Output one tv slot assignment (TVASSIGN) structure
        !          1127:  */
        !          1128: 
        !          1129:        fwrite( s, sizeof(TVASSIGN), 1, trnfdes);
        !          1130:        return( s->nxtslot );
        !          1131: }
        !          1132: #endif
        !          1133: int yyvstop[] = {
        !          1134: 0,
        !          1135: 
        !          1136: 57,
        !          1137: 0,
        !          1138: 
        !          1139: 56,
        !          1140: 0,
        !          1141: 
        !          1142: 38,
        !          1143: 0,
        !          1144: 
        !          1145: 63,
        !          1146: 64,
        !          1147: 0,
        !          1148: 
        !          1149: 41,
        !          1150: 0,
        !          1151: 
        !          1152: 31,
        !          1153: 0,
        !          1154: 
        !          1155: 24,
        !          1156: 0,
        !          1157: 
        !          1158: 23,
        !          1159: 0,
        !          1160: 
        !          1161: 40,
        !          1162: 0,
        !          1163: 
        !          1164: 47,
        !          1165: 0,
        !          1166: 
        !          1167: 30,
        !          1168: 0,
        !          1169: 
        !          1170: 27,
        !          1171: 0,
        !          1172: 
        !          1173: 20,
        !          1174: 63,
        !          1175: 64,
        !          1176: 0,
        !          1177: 
        !          1178: 39,
        !          1179: 64,
        !          1180: 0,
        !          1181: 
        !          1182: 58,
        !          1183: 59,
        !          1184: 63,
        !          1185: 64,
        !          1186: 0,
        !          1187: 
        !          1188: 59,
        !          1189: 63,
        !          1190: 64,
        !          1191: 0,
        !          1192: 
        !          1193: 25,
        !          1194: 0,
        !          1195: 
        !          1196: 26,
        !          1197: 0,
        !          1198: 
        !          1199: 42,
        !          1200: 0,
        !          1201: 
        !          1202: 28,
        !          1203: 0,
        !          1204: 
        !          1205: 29,
        !          1206: 0,
        !          1207: 
        !          1208: 63,
        !          1209: 64,
        !          1210: 0,
        !          1211: 
        !          1212: 63,
        !          1213: 64,
        !          1214: 0,
        !          1215: 
        !          1216: 63,
        !          1217: 64,
        !          1218: 0,
        !          1219: 
        !          1220: 63,
        !          1221: 64,
        !          1222: 0,
        !          1223: 
        !          1224: 63,
        !          1225: 64,
        !          1226: 0,
        !          1227: 
        !          1228: 63,
        !          1229: 64,
        !          1230: 0,
        !          1231: 
        !          1232: 63,
        !          1233: 64,
        !          1234: 0,
        !          1235: 
        !          1236: 63,
        !          1237: 64,
        !          1238: 0,
        !          1239: 
        !          1240: 63,
        !          1241: 64,
        !          1242: 0,
        !          1243: 
        !          1244: 63,
        !          1245: 64,
        !          1246: 0,
        !          1247: 
        !          1248: 63,
        !          1249: 64,
        !          1250: 0,
        !          1251: 
        !          1252: 63,
        !          1253: 64,
        !          1254: 0,
        !          1255: 
        !          1256: 63,
        !          1257: 64,
        !          1258: 0,
        !          1259: 
        !          1260: 63,
        !          1261: 64,
        !          1262: 0,
        !          1263: 
        !          1264: 63,
        !          1265: 64,
        !          1266: 0,
        !          1267: 
        !          1268: 63,
        !          1269: 64,
        !          1270: 0,
        !          1271: 
        !          1272: 22,
        !          1273: 0,
        !          1274: 
        !          1275: 33,
        !          1276: 0,
        !          1277: 
        !          1278: 21,
        !          1279: 0,
        !          1280: 
        !          1281: 37,
        !          1282: 0,
        !          1283: 
        !          1284: 39,
        !          1285: 64,
        !          1286: 0,
        !          1287: 
        !          1288: 63,
        !          1289: 64,
        !          1290: 0,
        !          1291: 
        !          1292: 63,
        !          1293: 64,
        !          1294: 0,
        !          1295: 
        !          1296: 63,
        !          1297: 64,
        !          1298: 0,
        !          1299: 
        !          1300: 63,
        !          1301: 64,
        !          1302: 0,
        !          1303: 
        !          1304: 63,
        !          1305: 64,
        !          1306: 0,
        !          1307: 
        !          1308: 63,
        !          1309: 64,
        !          1310: 0,
        !          1311: 
        !          1312: 16,
        !          1313: 63,
        !          1314: 64,
        !          1315: 0,
        !          1316: 
        !          1317: 15,
        !          1318: 63,
        !          1319: 64,
        !          1320: 0,
        !          1321: 
        !          1322: 63,
        !          1323: 64,
        !          1324: 0,
        !          1325: 
        !          1326: 17,
        !          1327: 63,
        !          1328: 64,
        !          1329: 0,
        !          1330: 
        !          1331: 14,
        !          1332: 21,
        !          1333: 0,
        !          1334: 
        !          1335: 5,
        !          1336: 0,
        !          1337: 
        !          1338: 5,
        !          1339: 57,
        !          1340: 0,
        !          1341: 
        !          1342: 5,
        !          1343: 0,
        !          1344: 
        !          1345: 5,
        !          1346: 0,
        !          1347: 
        !          1348: 36,
        !          1349: 0,
        !          1350: 
        !          1351: 64,
        !          1352: 0,
        !          1353: 
        !          1354: 32,
        !          1355: 0,
        !          1356: 
        !          1357: 50,
        !          1358: 0,
        !          1359: 
        !          1360: 48,
        !          1361: 0,
        !          1362: 
        !          1363: 49,
        !          1364: 0,
        !          1365: 
        !          1366: 64,
        !          1367: 0,
        !          1368: 
        !          1369: 1,
        !          1370: 0,
        !          1371: 
        !          1372: 64,
        !          1373: 0,
        !          1374: 
        !          1375: 51,
        !          1376: 0,
        !          1377: 
        !          1378: 58,
        !          1379: 59,
        !          1380: 63,
        !          1381: 64,
        !          1382: 0,
        !          1383: 
        !          1384: 63,
        !          1385: 64,
        !          1386: 0,
        !          1387: 
        !          1388: 45,
        !          1389: 0,
        !          1390: 
        !          1391: 44,
        !          1392: 0,
        !          1393: 
        !          1394: 35,
        !          1395: 0,
        !          1396: 
        !          1397: 43,
        !          1398: 0,
        !          1399: 
        !          1400: 46,
        !          1401: 0,
        !          1402: 
        !          1403: 63,
        !          1404: 64,
        !          1405: 0,
        !          1406: 
        !          1407: 63,
        !          1408: 64,
        !          1409: 0,
        !          1410: 
        !          1411: 63,
        !          1412: 64,
        !          1413: 0,
        !          1414: 
        !          1415: 63,
        !          1416: 64,
        !          1417: 0,
        !          1418: 
        !          1419: 63,
        !          1420: 64,
        !          1421: 0,
        !          1422: 
        !          1423: 63,
        !          1424: 64,
        !          1425: 0,
        !          1426: 
        !          1427: 63,
        !          1428: 64,
        !          1429: 0,
        !          1430: 
        !          1431: 63,
        !          1432: 64,
        !          1433: 0,
        !          1434: 
        !          1435: 63,
        !          1436: 64,
        !          1437: 0,
        !          1438: 
        !          1439: 63,
        !          1440: 64,
        !          1441: 0,
        !          1442: 
        !          1443: 63,
        !          1444: 64,
        !          1445: 0,
        !          1446: 
        !          1447: 8,
        !          1448: 63,
        !          1449: 64,
        !          1450: 0,
        !          1451: 
        !          1452: 63,
        !          1453: 64,
        !          1454: 0,
        !          1455: 
        !          1456: 63,
        !          1457: 64,
        !          1458: 0,
        !          1459: 
        !          1460: 63,
        !          1461: 64,
        !          1462: 0,
        !          1463: 
        !          1464: 63,
        !          1465: 64,
        !          1466: 0,
        !          1467: 
        !          1468: 34,
        !          1469: 0,
        !          1470: 
        !          1471: 2,
        !          1472: 0,
        !          1473: 
        !          1474: 63,
        !          1475: 64,
        !          1476: 0,
        !          1477: 
        !          1478: 63,
        !          1479: 64,
        !          1480: 0,
        !          1481: 
        !          1482: 63,
        !          1483: 64,
        !          1484: 0,
        !          1485: 
        !          1486: 63,
        !          1487: 64,
        !          1488: 0,
        !          1489: 
        !          1490: 63,
        !          1491: 64,
        !          1492: 0,
        !          1493: 
        !          1494: 63,
        !          1495: 64,
        !          1496: 0,
        !          1497: 
        !          1498: 63,
        !          1499: 64,
        !          1500: 0,
        !          1501: 
        !          1502: 63,
        !          1503: 64,
        !          1504: 0,
        !          1505: 
        !          1506: 63,
        !          1507: 64,
        !          1508: 0,
        !          1509: 
        !          1510: 63,
        !          1511: 64,
        !          1512: 0,
        !          1513: 
        !          1514: 3,
        !          1515: 0,
        !          1516: 
        !          1517: 4,
        !          1518: 0,
        !          1519: 
        !          1520: 61,
        !          1521: 62,
        !          1522: 0,
        !          1523: 
        !          1524: 62,
        !          1525: 0,
        !          1526: 
        !          1527: 60,
        !          1528: 63,
        !          1529: 64,
        !          1530: 0,
        !          1531: 
        !          1532: 63,
        !          1533: 64,
        !          1534: 0,
        !          1535: 
        !          1536: 63,
        !          1537: 64,
        !          1538: 0,
        !          1539: 
        !          1540: 63,
        !          1541: 64,
        !          1542: 0,
        !          1543: 
        !          1544: 63,
        !          1545: 64,
        !          1546: 0,
        !          1547: 
        !          1548: 63,
        !          1549: 64,
        !          1550: 0,
        !          1551: 
        !          1552: 63,
        !          1553: 64,
        !          1554: 0,
        !          1555: 
        !          1556: 63,
        !          1557: 64,
        !          1558: 0,
        !          1559: 
        !          1560: 63,
        !          1561: 64,
        !          1562: 0,
        !          1563: 
        !          1564: 55,
        !          1565: 63,
        !          1566: 64,
        !          1567: 0,
        !          1568: 
        !          1569: 63,
        !          1570: 64,
        !          1571: 0,
        !          1572: 
        !          1573: 63,
        !          1574: 64,
        !          1575: 0,
        !          1576: 
        !          1577: 63,
        !          1578: 64,
        !          1579: 0,
        !          1580: 
        !          1581: 63,
        !          1582: 64,
        !          1583: 0,
        !          1584: 
        !          1585: 63,
        !          1586: 64,
        !          1587: 0,
        !          1588: 
        !          1589: 63,
        !          1590: 64,
        !          1591: 0,
        !          1592: 
        !          1593: 63,
        !          1594: 64,
        !          1595: 0,
        !          1596: 
        !          1597: 63,
        !          1598: 64,
        !          1599: 0,
        !          1600: 
        !          1601: 63,
        !          1602: 64,
        !          1603: 0,
        !          1604: 
        !          1605: 63,
        !          1606: 64,
        !          1607: 0,
        !          1608: 
        !          1609: 63,
        !          1610: 64,
        !          1611: 0,
        !          1612: 
        !          1613: 16,
        !          1614: 63,
        !          1615: 64,
        !          1616: 0,
        !          1617: 
        !          1618: 15,
        !          1619: 63,
        !          1620: 64,
        !          1621: 0,
        !          1622: 
        !          1623: 63,
        !          1624: 64,
        !          1625: 0,
        !          1626: 
        !          1627: 63,
        !          1628: 64,
        !          1629: 0,
        !          1630: 
        !          1631: 63,
        !          1632: 64,
        !          1633: 0,
        !          1634: 
        !          1635: 63,
        !          1636: 64,
        !          1637: 0,
        !          1638: 
        !          1639: 63,
        !          1640: 64,
        !          1641: 0,
        !          1642: 
        !          1643: 12,
        !          1644: 63,
        !          1645: 64,
        !          1646: 0,
        !          1647: 
        !          1648: 63,
        !          1649: 64,
        !          1650: 0,
        !          1651: 
        !          1652: 63,
        !          1653: 64,
        !          1654: 0,
        !          1655: 
        !          1656: 13,
        !          1657: 63,
        !          1658: 64,
        !          1659: 0,
        !          1660: 
        !          1661: 63,
        !          1662: 64,
        !          1663: 0,
        !          1664: 
        !          1665: 63,
        !          1666: 64,
        !          1667: 0,
        !          1668: 
        !          1669: 63,
        !          1670: 64,
        !          1671: 0,
        !          1672: 
        !          1673: 63,
        !          1674: 64,
        !          1675: 0,
        !          1676: 
        !          1677: 63,
        !          1678: 64,
        !          1679: 0,
        !          1680: 
        !          1681: 63,
        !          1682: 64,
        !          1683: 0,
        !          1684: 
        !          1685: 63,
        !          1686: 64,
        !          1687: 0,
        !          1688: 
        !          1689: 63,
        !          1690: 64,
        !          1691: 0,
        !          1692: 
        !          1693: 63,
        !          1694: 64,
        !          1695: 0,
        !          1696: 
        !          1697: 63,
        !          1698: 64,
        !          1699: 0,
        !          1700: 
        !          1701: 63,
        !          1702: 64,
        !          1703: 0,
        !          1704: 
        !          1705: 63,
        !          1706: 64,
        !          1707: 0,
        !          1708: 
        !          1709: 63,
        !          1710: 64,
        !          1711: 0,
        !          1712: 
        !          1713: 63,
        !          1714: 64,
        !          1715: 0,
        !          1716: 
        !          1717: 63,
        !          1718: 64,
        !          1719: 0,
        !          1720: 
        !          1721: 63,
        !          1722: 64,
        !          1723: 0,
        !          1724: 
        !          1725: 63,
        !          1726: 64,
        !          1727: 0,
        !          1728: 
        !          1729: 52,
        !          1730: 63,
        !          1731: 64,
        !          1732: 0,
        !          1733: 
        !          1734: 53,
        !          1735: 63,
        !          1736: 64,
        !          1737: 0,
        !          1738: 
        !          1739: 10,
        !          1740: 63,
        !          1741: 64,
        !          1742: 0,
        !          1743: 
        !          1744: 54,
        !          1745: 63,
        !          1746: 64,
        !          1747: 0,
        !          1748: 
        !          1749: 63,
        !          1750: 64,
        !          1751: 0,
        !          1752: 
        !          1753: 63,
        !          1754: 64,
        !          1755: 0,
        !          1756: 
        !          1757: 63,
        !          1758: 64,
        !          1759: 0,
        !          1760: 
        !          1761: 63,
        !          1762: 64,
        !          1763: 0,
        !          1764: 
        !          1765: 63,
        !          1766: 64,
        !          1767: 0,
        !          1768: 
        !          1769: 63,
        !          1770: 64,
        !          1771: 0,
        !          1772: 
        !          1773: 63,
        !          1774: 64,
        !          1775: 0,
        !          1776: 
        !          1777: 18,
        !          1778: 63,
        !          1779: 64,
        !          1780: 0,
        !          1781: 
        !          1782: 17,
        !          1783: 63,
        !          1784: 64,
        !          1785: 0,
        !          1786: 
        !          1787: 63,
        !          1788: 64,
        !          1789: 0,
        !          1790: 
        !          1791: 63,
        !          1792: 64,
        !          1793: 0,
        !          1794: 
        !          1795: 63,
        !          1796: 64,
        !          1797: 0,
        !          1798: 
        !          1799: 6,
        !          1800: 63,
        !          1801: 64,
        !          1802: 0,
        !          1803: 
        !          1804: 11,
        !          1805: 63,
        !          1806: 64,
        !          1807: 0,
        !          1808: 
        !          1809: 63,
        !          1810: 64,
        !          1811: 0,
        !          1812: 
        !          1813: 63,
        !          1814: 64,
        !          1815: 0,
        !          1816: 
        !          1817: 19,
        !          1818: 63,
        !          1819: 64,
        !          1820: 0,
        !          1821: 
        !          1822: 16,
        !          1823: 63,
        !          1824: 64,
        !          1825: 0,
        !          1826: 
        !          1827: 7,
        !          1828: 63,
        !          1829: 64,
        !          1830: 0,
        !          1831: 
        !          1832: 63,
        !          1833: 64,
        !          1834: 0,
        !          1835: 
        !          1836: 9,
        !          1837: 63,
        !          1838: 64,
        !          1839: 0,
        !          1840: 0};
        !          1841: # define YYTYPE int
        !          1842: struct yywork { YYTYPE verify, advance; } yycrank[] = {
        !          1843: 0,0,   0,0,    0,0,    0,0,    
        !          1844: 0,0,   0,0,    0,0,    0,0,    
        !          1845: 0,0,   0,0,    1,11,   1,12,   
        !          1846: 3,11,  3,12,   11,11,  0,0,    
        !          1847: 0,0,   0,0,    0,0,    0,0,    
        !          1848: 0,0,   0,0,    0,0,    0,0,    
        !          1849: 0,0,   0,0,    0,0,    0,0,    
        !          1850: 0,0,   0,0,    0,0,    0,0,    
        !          1851: 0,0,   1,11,   0,0,    3,11,   
        !          1852: 3,13,  11,11,  0,0,    3,14,   
        !          1853: 3,15,  3,16,   16,70,  3,17,   
        !          1854: 3,18,  3,19,   3,20,   3,21,   
        !          1855: 3,22,  3,23,   3,24,   3,25,   
        !          1856: 3,26,  3,26,   3,26,   3,26,   
        !          1857: 3,26,  3,26,   3,26,   3,26,   
        !          1858: 3,26,  3,27,   3,28,   3,29,   
        !          1859: 3,30,  3,31,   8,66,   9,67,   
        !          1860: 3,32,  3,33,   3,34,   3,35,   
        !          1861: 3,14,  3,14,   3,36,   3,14,   
        !          1862: 3,37,  3,14,   3,14,   3,14,   
        !          1863: 3,38,  3,39,   3,14,   3,40,   
        !          1864: 3,14,  3,41,   3,42,   3,43,   
        !          1865: 3,14,  3,14,   3,14,   3,14,   
        !          1866: 3,14,  3,14,   10,67,  13,68,  
        !          1867: 19,71, 20,72,  3,14,   22,73,  
        !          1868: 3,44,  3,45,   3,14,   3,14,   
        !          1869: 3,14,  3,14,   3,46,   3,14,   
        !          1870: 3,14,  3,14,   3,14,   3,14,   
        !          1871: 3,14,  3,14,   3,14,   3,47,   
        !          1872: 3,14,  3,14,   3,14,   3,14,   
        !          1873: 3,14,  3,14,   3,14,   3,14,   
        !          1874: 3,14,  3,14,   3,48,   3,49,   
        !          1875: 3,50,  3,51,   5,52,   25,78,  
        !          1876: 25,78, 25,78,  25,78,  25,78,  
        !          1877: 25,78, 25,78,  25,78,  25,26,  
        !          1878: 25,26, 29,80,  29,81,  30,82,  
        !          1879: 31,83, 31,84,  32,85,  33,86,  
        !          1880: 5,53,  34,87,  5,14,   5,14,   
        !          1881: 6,52,  35,88,  36,89,  37,90,  
        !          1882: 5,14,  38,91,  39,92,  5,54,   
        !          1883: 5,14,  5,14,   5,55,   40,93,  
        !          1884: 41,94, 5,56,   5,57,   5,14,   
        !          1885: 42,95, 43,96,  6,53,   25,79,  
        !          1886: 6,14,  6,14,   44,97,  45,98,  
        !          1887: 46,99, 7,64,   6,14,   47,100, 
        !          1888: 5,58,  6,54,   6,14,   6,14,   
        !          1889: 6,55,  7,65,   7,12,   6,56,   
        !          1890: 6,57,  6,14,   49,101, 5,59,   
        !          1891: 52,102,        53,85,  5,60,   54,104, 
        !          1892: 55,105,        5,61,   5,62,   56,106, 
        !          1893: 53,103,        57,107, 6,58,   25,79,  
        !          1894: 58,97, 59,109, 60,110, 61,111, 
        !          1895: 5,63,  62,112, 66,113, 58,108, 
        !          1896: 7,64,  6,59,   67,114, 69,115, 
        !          1897: 6,60,  85,118, 7,66,   6,61,   
        !          1898: 6,62,  76,116, 86,119, 7,64,   
        !          1899: 7,64,  7,64,   87,120, 88,121, 
        !          1900: 89,122,        90,123, 6,63,   91,124, 
        !          1901: 7,64,  92,125, 69,115, 93,126, 
        !          1902: 14,14, 94,127, 95,128, 97,129, 
        !          1903: 76,116,        7,64,   98,130, 99,131, 
        !          1904: 100,126,       103,132,        14,14,  14,69,  
        !          1905: 14,14, 14,14,  14,14,  14,14,  
        !          1906: 14,14, 14,14,  14,14,  14,14,  
        !          1907: 14,14, 14,14,  104,133,        105,134,        
        !          1908: 106,135,       107,136,        108,137,        109,138,        
        !          1909: 7,64,  14,14,  14,14,  14,14,  
        !          1910: 14,14, 14,14,  14,14,  14,14,  
        !          1911: 14,14, 14,14,  14,14,  14,14,  
        !          1912: 14,14, 14,14,  14,14,  14,14,  
        !          1913: 14,14, 14,14,  14,14,  14,14,  
        !          1914: 14,14, 14,14,  14,14,  14,14,  
        !          1915: 14,14, 14,14,  14,14,  110,139,        
        !          1916: 111,141,       110,140,        112,142,        14,14,  
        !          1917: 118,143,       14,14,  14,14,  14,14,  
        !          1918: 14,14, 14,14,  14,14,  14,14,  
        !          1919: 14,14, 14,14,  14,14,  14,14,  
        !          1920: 14,14, 14,14,  14,14,  14,14,  
        !          1921: 14,14, 14,14,  14,14,  14,14,  
        !          1922: 14,14, 14,14,  14,14,  14,14,  
        !          1923: 14,14, 14,14,  14,14,  24,74,  
        !          1924: 119,144,       120,145,        121,146,        122,147,        
        !          1925: 123,148,       24,75,  124,149,        125,150,        
        !          1926: 127,151,       24,74,  24,76,  24,74,  
        !          1927: 24,74, 24,74,  24,74,  24,74,  
        !          1928: 24,74, 24,74,  24,74,  24,74,  
        !          1929: 24,74, 128,152,        129,153,        130,154,        
        !          1930: 24,77, 131,155,        132,156,        133,157,        
        !          1931: 24,74, 24,74,  24,74,  24,74,  
        !          1932: 24,74, 24,74,  24,74,  24,74,  
        !          1933: 24,74, 24,74,  24,74,  24,74,  
        !          1934: 24,74, 24,74,  24,74,  24,74,  
        !          1935: 24,74, 24,74,  24,74,  24,74,  
        !          1936: 24,74, 24,74,  24,74,  24,74,  
        !          1937: 24,74, 24,74,  134,158,        135,159,        
        !          1938: 136,160,       137,161,        24,74,  138,162,        
        !          1939: 24,74, 24,74,  24,74,  24,74,  
        !          1940: 24,74, 24,74,  24,74,  24,74,  
        !          1941: 24,74, 24,74,  24,74,  24,74,  
        !          1942: 24,74, 24,74,  24,74,  24,74,  
        !          1943: 24,74, 24,74,  24,74,  24,74,  
        !          1944: 24,74, 24,74,  24,74,  24,74,  
        !          1945: 24,74, 24,74,  26,26,  26,26,  
        !          1946: 26,26, 26,26,  26,26,  26,26,  
        !          1947: 26,26, 26,26,  26,26,  26,26,  
        !          1948: 74,74, 140,163,        141,164,        142,165,        
        !          1949: 143,166,       144,167,        146,168,        147,169,        
        !          1950: 149,170,       150,171,        74,74,  74,76,  
        !          1951: 74,74, 74,74,  74,74,  74,74,  
        !          1952: 74,74, 74,74,  74,74,  74,74,  
        !          1953: 74,74, 74,74,  151,172,        152,173,        
        !          1954: 153,166,       154,167,        155,169,        156,174,        
        !          1955: 157,175,       74,74,  74,74,  74,74,  
        !          1956: 74,74, 74,74,  74,74,  74,74,  
        !          1957: 74,74, 74,74,  74,74,  74,74,  
        !          1958: 74,74, 74,74,  74,74,  74,74,  
        !          1959: 74,74, 74,74,  74,74,  74,74,  
        !          1960: 74,74, 74,74,  74,74,  74,74,  
        !          1961: 74,74, 74,74,  74,74,  158,176,        
        !          1962: 159,177,       160,178,        161,179,        74,74,  
        !          1963: 162,180,       74,74,  74,74,  74,74,  
        !          1964: 74,74, 74,74,  74,74,  74,74,  
        !          1965: 74,74, 74,74,  74,74,  74,74,  
        !          1966: 74,74, 74,74,  74,74,  74,74,  
        !          1967: 74,74, 74,74,  74,74,  74,74,  
        !          1968: 74,74, 74,74,  74,74,  74,74,  
        !          1969: 74,74, 74,74,  74,74,  78,78,  
        !          1970: 78,78, 78,78,  78,78,  78,78,  
        !          1971: 78,78, 78,78,  78,78,  78,26,  
        !          1972: 78,26, 79,117, 79,117, 79,117, 
        !          1973: 79,117,        79,117, 79,117, 79,117, 
        !          1974: 79,117,        79,117, 79,117, 163,181,        
        !          1975: 164,177,       165,178,        170,182,        171,183,        
        !          1976: 172,184,       173,185,        79,117, 79,117, 
        !          1977: 79,117,        79,117, 79,117, 79,117, 
        !          1978: 117,117,       117,117,        117,117,        117,117,        
        !          1979: 117,117,       117,117,        117,117,        117,117,        
        !          1980: 117,117,       117,117,        174,186,        175,187,        
        !          1981: 176,139,       179,186,        180,187,        181,139,        
        !          1982: 184,188,       117,117,        117,117,        117,117,        
        !          1983: 117,117,       117,117,        117,117,        185,189,        
        !          1984: 189,190,       0,0,    79,117, 79,117, 
        !          1985: 79,117,        79,117, 79,117, 79,117, 
        !          1986: 0,0,   0,0,    0,0,    0,0,    
        !          1987: 0,0,   0,0,    0,0,    0,0,    
        !          1988: 0,0,   0,0,    0,0,    0,0,    
        !          1989: 0,0,   0,0,    0,0,    0,0,    
        !          1990: 0,0,   117,117,        117,117,        117,117,        
        !          1991: 117,117,       117,117,        117,117,        0,0,    
        !          1992: 0,0};
        !          1993: struct yysvf yysvec[] = {
        !          1994: 0,     0,      0,
        !          1995: yycrank+1,     0,              0,      
        !          1996: yycrank+0,     yysvec+1,       0,      
        !          1997: yycrank+3,     0,              0,      
        !          1998: yycrank+0,     yysvec+3,       0,      
        !          1999: yycrank+83,    yysvec+3,       0,      
        !          2000: yycrank+105,   yysvec+3,       0,      
        !          2001: yycrank+-176,  0,              0,      
        !          2002: yycrank+-24,   yysvec+7,       0,      
        !          2003: yycrank+-25,   yysvec+7,       0,      
        !          2004: yycrank+-52,   yysvec+7,       0,      
        !          2005: yycrank+5,     0,              yyvstop+1,
        !          2006: yycrank+0,     0,              yyvstop+3,
        !          2007: yycrank+34,    0,              yyvstop+5,
        !          2008: yycrank+200,   0,              yyvstop+7,
        !          2009: yycrank+0,     0,              yyvstop+10,
        !          2010: yycrank+4,     0,              yyvstop+12,
        !          2011: yycrank+0,     0,              yyvstop+14,
        !          2012: yycrank+0,     0,              yyvstop+16,
        !          2013: yycrank+35,    0,              yyvstop+18,
        !          2014: yycrank+36,    0,              yyvstop+20,
        !          2015: yycrank+0,     0,              yyvstop+22,
        !          2016: yycrank+38,    0,              yyvstop+24,
        !          2017: yycrank+0,     yysvec+14,      yyvstop+26,
        !          2018: yycrank+287,   0,              yyvstop+30,
        !          2019: yycrank+83,    yysvec+14,      yyvstop+33,
        !          2020: yycrank+362,   yysvec+14,      yyvstop+38,
        !          2021: yycrank+0,     0,              yyvstop+42,
        !          2022: yycrank+0,     0,              yyvstop+44,
        !          2023: yycrank+81,    0,              yyvstop+46,
        !          2024: yycrank+82,    0,              yyvstop+48,
        !          2025: yycrank+83,    0,              yyvstop+50,
        !          2026: yycrank+70,    yysvec+14,      yyvstop+52,
        !          2027: yycrank+71,    yysvec+14,      yyvstop+55,
        !          2028: yycrank+70,    yysvec+14,      yyvstop+58,
        !          2029: yycrank+70,    yysvec+14,      yyvstop+61,
        !          2030: yycrank+72,    yysvec+14,      yyvstop+64,
        !          2031: yycrank+77,    yysvec+14,      yyvstop+67,
        !          2032: yycrank+88,    yysvec+14,      yyvstop+70,
        !          2033: yycrank+79,    yysvec+14,      yyvstop+73,
        !          2034: yycrank+91,    yysvec+14,      yyvstop+76,
        !          2035: yycrank+95,    yysvec+14,      yyvstop+79,
        !          2036: yycrank+99,    yysvec+14,      yyvstop+82,
        !          2037: yycrank+83,    yysvec+14,      yyvstop+85,
        !          2038: yycrank+66,    yysvec+14,      yyvstop+88,
        !          2039: yycrank+67,    yysvec+14,      yyvstop+91,
        !          2040: yycrank+62,    yysvec+14,      yyvstop+94,
        !          2041: yycrank+75,    yysvec+14,      yyvstop+97,
        !          2042: yycrank+0,     0,              yyvstop+100,
        !          2043: yycrank+66,    0,              yyvstop+102,
        !          2044: yycrank+0,     0,              yyvstop+104,
        !          2045: yycrank+0,     0,              yyvstop+106,
        !          2046: yycrank+150,   yysvec+24,      yyvstop+108,
        !          2047: yycrank+117,   yysvec+14,      yyvstop+111,
        !          2048: yycrank+126,   yysvec+14,      yyvstop+114,
        !          2049: yycrank+114,   yysvec+14,      yyvstop+117,
        !          2050: yycrank+134,   yysvec+14,      yyvstop+120,
        !          2051: yycrank+121,   yysvec+14,      yyvstop+123,
        !          2052: yycrank+96,    yysvec+14,      yyvstop+126,
        !          2053: yycrank+104,   yysvec+14,      yyvstop+129,
        !          2054: yycrank+92,    yysvec+14,      yyvstop+133,
        !          2055: yycrank+110,   yysvec+14,      yyvstop+137,
        !          2056: yycrank+97,    yysvec+14,      yyvstop+140,
        !          2057: yycrank+0,     0,              yyvstop+144,
        !          2058: yycrank+0,     0,              yyvstop+147,
        !          2059: yycrank+0,     yysvec+11,      yyvstop+149,
        !          2060: yycrank+163,   0,              yyvstop+152,
        !          2061: yycrank+167,   0,              yyvstop+154,
        !          2062: yycrank+0,     0,              yyvstop+156,
        !          2063: yycrank+173,   yysvec+24,      yyvstop+158,
        !          2064: yycrank+0,     0,              yyvstop+160,
        !          2065: yycrank+0,     0,              yyvstop+162,
        !          2066: yycrank+0,     0,              yyvstop+164,
        !          2067: yycrank+0,     0,              yyvstop+166,
        !          2068: yycrank+384,   0,              yyvstop+168,
        !          2069: yycrank+0,     0,              yyvstop+170,
        !          2070: yycrank+179,   yysvec+24,      yyvstop+172,
        !          2071: yycrank+0,     0,              yyvstop+174,
        !          2072: yycrank+459,   yysvec+14,      yyvstop+176,
        !          2073: yycrank+469,   yysvec+14,      yyvstop+181,
        !          2074: yycrank+0,     0,              yyvstop+184,
        !          2075: yycrank+0,     0,              yyvstop+186,
        !          2076: yycrank+0,     0,              yyvstop+188,
        !          2077: yycrank+0,     0,              yyvstop+190,
        !          2078: yycrank+0,     0,              yyvstop+192,
        !          2079: yycrank+144,   yysvec+14,      yyvstop+194,
        !          2080: yycrank+143,   yysvec+14,      yyvstop+197,
        !          2081: yycrank+146,   yysvec+14,      yyvstop+200,
        !          2082: yycrank+158,   yysvec+14,      yyvstop+203,
        !          2083: yycrank+149,   yysvec+14,      yyvstop+206,
        !          2084: yycrank+159,   yysvec+14,      yyvstop+209,
        !          2085: yycrank+154,   yysvec+14,      yyvstop+212,
        !          2086: yycrank+157,   yysvec+14,      yyvstop+215,
        !          2087: yycrank+146,   yysvec+14,      yyvstop+218,
        !          2088: yycrank+166,   yysvec+14,      yyvstop+221,
        !          2089: yycrank+171,   yysvec+14,      yyvstop+224,
        !          2090: yycrank+0,     yysvec+14,      yyvstop+227,
        !          2091: yycrank+134,   yysvec+14,      yyvstop+231,
        !          2092: yycrank+131,   yysvec+14,      yyvstop+234,
        !          2093: yycrank+132,   yysvec+14,      yyvstop+237,
        !          2094: yycrank+123,   yysvec+14,      yyvstop+240,
        !          2095: yycrank+0,     0,              yyvstop+243,
        !          2096: yycrank+0,     0,              yyvstop+245,
        !          2097: yycrank+162,   yysvec+14,      yyvstop+247,
        !          2098: yycrank+180,   yysvec+14,      yyvstop+250,
        !          2099: yycrank+186,   yysvec+14,      yyvstop+253,
        !          2100: yycrank+182,   yysvec+14,      yyvstop+256,
        !          2101: yycrank+196,   yysvec+14,      yyvstop+259,
        !          2102: yycrank+147,   yysvec+14,      yyvstop+262,
        !          2103: yycrank+153,   yysvec+14,      yyvstop+265,
        !          2104: yycrank+188,   yysvec+14,      yyvstop+268,
        !          2105: yycrank+182,   yysvec+14,      yyvstop+271,
        !          2106: yycrank+197,   yysvec+14,      yyvstop+274,
        !          2107: yycrank+0,     0,              yyvstop+277,
        !          2108: yycrank+0,     0,              yyvstop+279,
        !          2109: yycrank+0,     0,              yyvstop+281,
        !          2110: yycrank+0,     0,              yyvstop+284,
        !          2111: yycrank+492,   yysvec+14,      yyvstop+286,
        !          2112: yycrank+225,   yysvec+14,      yyvstop+290,
        !          2113: yycrank+257,   yysvec+14,      yyvstop+293,
        !          2114: yycrank+236,   yysvec+14,      yyvstop+296,
        !          2115: yycrank+259,   yysvec+14,      yyvstop+299,
        !          2116: yycrank+242,   yysvec+14,      yyvstop+302,
        !          2117: yycrank+249,   yysvec+14,      yyvstop+305,
        !          2118: yycrank+251,   yysvec+14,      yyvstop+308,
        !          2119: yycrank+252,   yysvec+14,      yyvstop+311,
        !          2120: yycrank+0,     yysvec+14,      yyvstop+314,
        !          2121: yycrank+259,   yysvec+14,      yyvstop+318,
        !          2122: yycrank+261,   yysvec+14,      yyvstop+321,
        !          2123: yycrank+243,   yysvec+14,      yyvstop+324,
        !          2124: yycrank+248,   yysvec+14,      yyvstop+327,
        !          2125: yycrank+232,   yysvec+14,      yyvstop+330,
        !          2126: yycrank+277,   yysvec+14,      yyvstop+333,
        !          2127: yycrank+280,   yysvec+14,      yyvstop+336,
        !          2128: yycrank+307,   yysvec+14,      yyvstop+339,
        !          2129: yycrank+308,   yysvec+14,      yyvstop+342,
        !          2130: yycrank+298,   yysvec+14,      yyvstop+345,
        !          2131: yycrank+276,   yysvec+14,      yyvstop+348,
        !          2132: yycrank+280,   yysvec+14,      yyvstop+351,
        !          2133: yycrank+0,     yysvec+14,      yyvstop+355,
        !          2134: yycrank+318,   yysvec+14,      yyvstop+359,
        !          2135: yycrank+319,   yysvec+14,      yyvstop+362,
        !          2136: yycrank+309,   yysvec+14,      yyvstop+365,
        !          2137: yycrank+346,   yysvec+14,      yyvstop+368,
        !          2138: yycrank+350,   yysvec+14,      yyvstop+371,
        !          2139: yycrank+0,     yysvec+14,      yyvstop+374,
        !          2140: yycrank+342,   yysvec+14,      yyvstop+378,
        !          2141: yycrank+347,   yysvec+14,      yyvstop+381,
        !          2142: yycrank+0,     yysvec+14,      yyvstop+384,
        !          2143: yycrank+346,   yysvec+14,      yyvstop+388,
        !          2144: yycrank+364,   yysvec+14,      yyvstop+391,
        !          2145: yycrank+363,   yysvec+14,      yyvstop+394,
        !          2146: yycrank+370,   yysvec+14,      yyvstop+397,
        !          2147: yycrank+334,   yysvec+14,      yyvstop+400,
        !          2148: yycrank+338,   yysvec+14,      yyvstop+403,
        !          2149: yycrank+334,   yysvec+14,      yyvstop+406,
        !          2150: yycrank+376,   yysvec+14,      yyvstop+409,
        !          2151: yycrank+364,   yysvec+14,      yyvstop+412,
        !          2152: yycrank+402,   yysvec+14,      yyvstop+415,
        !          2153: yycrank+407,   yysvec+14,      yyvstop+418,
        !          2154: yycrank+408,   yysvec+14,      yyvstop+421,
        !          2155: yycrank+375,   yysvec+14,      yyvstop+424,
        !          2156: yycrank+364,   yysvec+14,      yyvstop+427,
        !          2157: yycrank+422,   yysvec+14,      yyvstop+430,
        !          2158: yycrank+427,   yysvec+14,      yyvstop+433,
        !          2159: yycrank+428,   yysvec+14,      yyvstop+436,
        !          2160: yycrank+0,     yysvec+14,      yyvstop+439,
        !          2161: yycrank+0,     yysvec+14,      yyvstop+443,
        !          2162: yycrank+0,     yysvec+14,      yyvstop+447,
        !          2163: yycrank+0,     yysvec+14,      yyvstop+451,
        !          2164: yycrank+441,   yysvec+14,      yyvstop+455,
        !          2165: yycrank+463,   yysvec+14,      yyvstop+458,
        !          2166: yycrank+454,   yysvec+14,      yyvstop+461,
        !          2167: yycrank+454,   yysvec+14,      yyvstop+464,
        !          2168: yycrank+472,   yysvec+14,      yyvstop+467,
        !          2169: yycrank+479,   yysvec+14,      yyvstop+470,
        !          2170: yycrank+474,   yysvec+14,      yyvstop+473,
        !          2171: yycrank+0,     yysvec+14,      yyvstop+476,
        !          2172: yycrank+0,     yysvec+14,      yyvstop+480,
        !          2173: yycrank+443,   yysvec+14,      yyvstop+484,
        !          2174: yycrank+450,   yysvec+14,      yyvstop+487,
        !          2175: yycrank+445,   yysvec+14,      yyvstop+490,
        !          2176: yycrank+0,     yysvec+14,      yyvstop+493,
        !          2177: yycrank+0,     yysvec+14,      yyvstop+497,
        !          2178: yycrank+473,   yysvec+14,      yyvstop+501,
        !          2179: yycrank+485,   yysvec+14,      yyvstop+504,
        !          2180: yycrank+0,     yysvec+14,      yyvstop+507,
        !          2181: yycrank+0,     yysvec+14,      yyvstop+511,
        !          2182: yycrank+0,     yysvec+14,      yyvstop+515,
        !          2183: yycrank+481,   yysvec+14,      yyvstop+519,
        !          2184: yycrank+0,     yysvec+14,      yyvstop+522,
        !          2185: 0,     0,      0};
        !          2186: struct yywork *yytop = yycrank+594;
        !          2187: struct yysvf *yybgin = yysvec+1;
        !          2188: char yymatch[] = {
        !          2189: 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !          2190: 01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
        !          2191: 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !          2192: 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
        !          2193: 011 ,01  ,01  ,01  ,'$' ,01  ,01  ,01  ,
        !          2194: 01  ,01  ,01  ,01  ,01  ,01  ,'$' ,'/' ,
        !          2195: '0' ,'1' ,'1' ,'1' ,'1' ,'1' ,'1' ,'1' ,
        !          2196: '8' ,'8' ,01  ,01  ,01  ,01  ,01  ,01  ,
        !          2197: 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'$' ,
        !          2198: '$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,
        !          2199: '$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,
        !          2200: 'X' ,'$' ,'$' ,01  ,01  ,01  ,01  ,'$' ,
        !          2201: 01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'$' ,
        !          2202: '$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,
        !          2203: '$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,'$' ,
        !          2204: 'X' ,'$' ,'$' ,01  ,01  ,01  ,01  ,01  ,
        !          2205: 0};
        !          2206: char yyextra[] = {
        !          2207: 0,0,0,0,0,0,0,0,
        !          2208: 0,0,0,0,0,0,0,0,
        !          2209: 0,0,0,0,0,0,0,0,
        !          2210: 0,0,0,0,0,0,0,0,
        !          2211: 0,0,0,0,0,0,0,0,
        !          2212: 0,0,0,0,0,0,0,0,
        !          2213: 0,0,0,0,0,0,0,0,
        !          2214: 0,0,0,0,0,0,0,0,
        !          2215: 0,0,0,0,0,0,0,0,
        !          2216: 0};
        !          2217: #ifndef lint
        !          2218: static char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
        !          2219: #endif
        !          2220: 
        !          2221: int yylineno =1;
        !          2222: # define YYU(x) x
        !          2223: # define NLSTATE yyprevious=YYNEWLINE
        !          2224: char yytext[YYLMAX];
        !          2225: struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
        !          2226: char yysbuf[YYLMAX];
        !          2227: char *yysptr = yysbuf;
        !          2228: int *yyfnd;
        !          2229: extern struct yysvf *yyestate;
        !          2230: int yyprevious = YYNEWLINE;
        !          2231: yylook(){
        !          2232:        register struct yysvf *yystate, **lsp;
        !          2233:        register struct yywork *yyt;
        !          2234:        struct yysvf *yyz;
        !          2235:        int yych, yyfirst;
        !          2236:        struct yywork *yyr;
        !          2237: # ifdef LEXDEBUG
        !          2238:        int debug;
        !          2239: # endif
        !          2240:        char *yylastch;
        !          2241:        /* start off machines */
        !          2242: # ifdef LEXDEBUG
        !          2243:        debug = 0;
        !          2244: # endif
        !          2245:        yyfirst=1;
        !          2246:        if (!yymorfg)
        !          2247:                yylastch = yytext;
        !          2248:        else {
        !          2249:                yymorfg=0;
        !          2250:                yylastch = yytext+yyleng;
        !          2251:                }
        !          2252:        for(;;){
        !          2253:                lsp = yylstate;
        !          2254:                yyestate = yystate = yybgin;
        !          2255:                if (yyprevious==YYNEWLINE) yystate++;
        !          2256:                for (;;){
        !          2257: # ifdef LEXDEBUG
        !          2258:                        if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
        !          2259: # endif
        !          2260:                        yyt = yystate->yystoff;
        !          2261:                        if(yyt == yycrank && !yyfirst){  /* may not be any transitions */
        !          2262:                                yyz = yystate->yyother;
        !          2263:                                if(yyz == 0)break;
        !          2264:                                if(yyz->yystoff == yycrank)break;
        !          2265:                                }
        !          2266:                        *yylastch++ = yych = input();
        !          2267:                        yyfirst=0;
        !          2268:                tryagain:
        !          2269: # ifdef LEXDEBUG
        !          2270:                        if(debug){
        !          2271:                                fprintf(yyout,"char ");
        !          2272:                                allprint(yych);
        !          2273:                                putchar('\n');
        !          2274:                                }
        !          2275: # endif
        !          2276:                        yyr = yyt;
        !          2277:                        if ( (int)yyt > (int)yycrank){
        !          2278:                                yyt = yyr + yych;
        !          2279:                                if (yyt <= yytop && yyt->verify+yysvec == yystate){
        !          2280:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
        !          2281:                                                {unput(*--yylastch);break;}
        !          2282:                                        *lsp++ = yystate = yyt->advance+yysvec;
        !          2283:                                        goto contin;
        !          2284:                                        }
        !          2285:                                }
        !          2286: # ifdef YYOPTIM
        !          2287:                        else if((int)yyt < (int)yycrank) {              /* r < yycrank */
        !          2288:                                yyt = yyr = yycrank+(yycrank-yyt);
        !          2289: # ifdef LEXDEBUG
        !          2290:                                if(debug)fprintf(yyout,"compressed state\n");
        !          2291: # endif
        !          2292:                                yyt = yyt + yych;
        !          2293:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
        !          2294:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
        !          2295:                                                {unput(*--yylastch);break;}
        !          2296:                                        *lsp++ = yystate = yyt->advance+yysvec;
        !          2297:                                        goto contin;
        !          2298:                                        }
        !          2299:                                yyt = yyr + YYU(yymatch[yych]);
        !          2300: # ifdef LEXDEBUG
        !          2301:                                if(debug){
        !          2302:                                        fprintf(yyout,"try fall back character ");
        !          2303:                                        allprint(YYU(yymatch[yych]));
        !          2304:                                        putchar('\n');
        !          2305:                                        }
        !          2306: # endif
        !          2307:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
        !          2308:                                        if(yyt->advance+yysvec == YYLERR)       /* error transition */
        !          2309:                                                {unput(*--yylastch);break;}
        !          2310:                                        *lsp++ = yystate = yyt->advance+yysvec;
        !          2311:                                        goto contin;
        !          2312:                                        }
        !          2313:                                }
        !          2314:                        if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
        !          2315: # ifdef LEXDEBUG
        !          2316:                                if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
        !          2317: # endif
        !          2318:                                goto tryagain;
        !          2319:                                }
        !          2320: # endif
        !          2321:                        else
        !          2322:                                {unput(*--yylastch);break;}
        !          2323:                contin:
        !          2324: # ifdef LEXDEBUG
        !          2325:                        if(debug){
        !          2326:                                fprintf(yyout,"state %d char ",yystate-yysvec-1);
        !          2327:                                allprint(yych);
        !          2328:                                putchar('\n');
        !          2329:                                }
        !          2330: # endif
        !          2331:                        ;
        !          2332:                        }
        !          2333: # ifdef LEXDEBUG
        !          2334:                if(debug){
        !          2335:                        fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
        !          2336:                        allprint(yych);
        !          2337:                        putchar('\n');
        !          2338:                        }
        !          2339: # endif
        !          2340:                while (lsp-- > yylstate){
        !          2341:                        *yylastch-- = 0;
        !          2342:                        if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
        !          2343:                                yyolsp = lsp;
        !          2344:                                if(yyextra[*yyfnd]){            /* must backup */
        !          2345:                                        while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
        !          2346:                                                lsp--;
        !          2347:                                                unput(*yylastch--);
        !          2348:                                                }
        !          2349:                                        }
        !          2350:                                yyprevious = YYU(*yylastch);
        !          2351:                                yylsp = lsp;
        !          2352:                                yyleng = yylastch-yytext+1;
        !          2353:                                yytext[yyleng] = 0;
        !          2354: # ifdef LEXDEBUG
        !          2355:                                if(debug){
        !          2356:                                        fprintf(yyout,"\nmatch ");
        !          2357:                                        sprint(yytext);
        !          2358:                                        fprintf(yyout," action %d\n",*yyfnd);
        !          2359:                                        }
        !          2360: # endif
        !          2361:                                return(*yyfnd++);
        !          2362:                                }
        !          2363:                        unput(*yylastch);
        !          2364:                        }
        !          2365:                if (yytext[0] == 0  /* && feof(yyin) */)
        !          2366:                        {
        !          2367:                        yysptr=yysbuf;
        !          2368:                        return(0);
        !          2369:                        }
        !          2370:                yyprevious = yytext[0] = input();
        !          2371:                if (yyprevious>0)
        !          2372:                        output(yyprevious);
        !          2373:                yylastch=yytext;
        !          2374: # ifdef LEXDEBUG
        !          2375:                if(debug)putchar('\n');
        !          2376: # endif
        !          2377:                }
        !          2378:        }
        !          2379: yyback(p, m)
        !          2380:        int *p;
        !          2381: {
        !          2382: if (p==0) return(0);
        !          2383: while (*p)
        !          2384:        {
        !          2385:        if (*p++ == m)
        !          2386:                return(1);
        !          2387:        }
        !          2388: return(0);
        !          2389: }
        !          2390:        /* the following are only used in the lex library */
        !          2391: yyinput(){
        !          2392:        return(input());
        !          2393:        }
        !          2394: yyoutput(c)
        !          2395:   int c; {
        !          2396:        output(c);
        !          2397:        }
        !          2398: yyunput(c)
        !          2399:    int c; {
        !          2400:        unput(c);
        !          2401:        }

unix.superglobalmegacorp.com

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