Annotation of researchv9/jerq/sgs/ld/lex.yy.c, revision 1.1.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.