Annotation of cci/usr/src/usr.bin/efl/lex.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 200
                     10: # define output(c) putc(c,yyout)
                     11: # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):efgetc)==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: # define DOTSON 2
                     29: #include <ctype.h>
                     30: #include "defs"
                     31: #include "tokdefs"
                     32: 
                     33: typedef union { int ival; ptr pval; } YYSTYPE;
                     34: extern YYSTYPE yylval;
                     35: YYSTYPE prevl;
                     36: int prevv;
                     37: char *copys();
                     38: static ptr p;
                     39: static ptr q;
                     40: static FILE *fd;
                     41: static int quoted, k;
                     42: static int rket        = 0;
                     43: FILE *opincl();
                     44: ptr mkdef(), mkcomm(), mkname(), mkimcon();
                     45: 
                     46: #define RET(x) { RETI(x,x);  }
                     47: 
                     48: #define RETL(yv,yl) {yylval=prevl=yl;igeol=comneed=0;return(prevv=yv); }
                     49: #define RETP(yv,yl) {yylval.pval=prevl.pval=yl;igeol=comneed=0;return(prevv=yv); }
                     50: #define RETI(yv,yl) {yylval.ival=prevl.ival=yl;igeol=comneed=0;return(prevv=yv); }
                     51: #define REL(n)  {  RETI(RELOP, OPREL+n);}
                     52: #define AS(n)  {  RETI(ASGNOP, OPASGN+n); }
                     53: #define RETC(x) { RETP(CONST, mkconst(x,yytext) );  }
                     54: #define RETZ(x) { yytext[yyleng-1] = '\0'; RETP(CONST, mkimcon(x,yytext) ); }
                     55: 
                     56: # define YYNEWLINE 10
                     57: yylex(){
                     58: int nstr; extern int yyprevious;
                     59: if(pushlex)
                     60:        if(pushlex==1)
                     61:                {
                     62:                pushlex = 2;
                     63:                yylval.ival = 0;
                     64:                return(EOS);
                     65:                }
                     66:        else    {
                     67:                pushlex = 0;
                     68:                if(rket == 2)
                     69:                        rket = 1;
                     70:                else    RETL(prevv,prevl);
                     71:                }
                     72: if(rket > 0)
                     73:        {
                     74:        if(rket==1)
                     75:                {
                     76:                rket = 2;
                     77:                RET(RBRACK);
                     78:                }
                     79:        else    {
                     80:                rket = 0;
                     81:                RET(EOS);
                     82:                }
                     83:        }
                     84: if(eofneed) return(0);
                     85: if(forcerr) return(-1);
                     86: while((nstr = yylook()) >= 0)
                     87: yyfussy: switch(nstr){
                     88: case 0:
                     89: if(yywrap()) return(0); break;
                     90: case 1:
                     91: {
                     92:                   lower(yytext);
                     93:                   if(lettneed && yyleng==1)
                     94:                        { RETI(LETTER, yytext[0]); }
                     95:                   else if(defneed)
                     96:                        {
                     97:                        register char *q1, *q2;
                     98:                        for(q2=q1=yytext+yyleng+1 ; (*q1 = efgetc)!='\n' ; ++q1)
                     99:                                ;
                    100:                        *q1 = '\0';
                    101:                        p = mkdef(yytext, q2);
                    102:                        defneed = 0;
                    103:                        ++yylineno;
                    104:                        unput('\n');
                    105:                        }
                    106:                   else if(optneed)
                    107:                        { RETP(OPTNAME, copys(yytext)); }
                    108:                   else if(comneed && ( (q=name(yytext,1))==NULL || q->tag!=TDEFINE) )
                    109:                        { RETP(COMNAME, mkcomm(yytext) ); }
                    110:                   else if(q = name(yytext,1)) switch(q->tag)
                    111:                        {
                    112:                        case TDEFINE:
                    113:                                filelines[filedepth] = yylineno;
                    114:                                filemacs[filedepth] = efmacp;
                    115:                                pushchars[filedepth] = (yysptr>yysbuf?
                    116:                                                *--yysptr : -1);
                    117:                                if(++filedepth >= MAXINCLUDEDEPTH)
                    118:                                        fatal("macro or include too deep");
                    119:                                filelines[filedepth] = yylineno = 1;
                    120:                                efmacp = q->varp->valp;
                    121:                                filenames[filedepth] = NULL;
                    122:                                break;  /*now process new input */
                    123: 
                    124:                        case TSTRUCT:
                    125:                                RETP(STRUCTNAME, q);
                    126: 
                    127:                        case TNAME:
                    128:                                RETP(NAME, q);
                    129: 
                    130:                        case TKEYWORD:
                    131:                                if(q->subtype == END)
                    132:                                        {
                    133:                                        register int c;
                    134:                                        eofneed = YES;
                    135:                                        while((c=input())!=';'&&c!='\n'&&c!=EOF)
                    136:                                                ;
                    137:                                        NLSTATE;
                    138:                                        }
                    139:                                RET(q->subtype);
                    140: 
                    141:                        default:
                    142:                                fatal1("lex: impossible type code %d", q->tag);
                    143:                        }
                    144:                   else  RETP(NAME, mkname(yytext) );
                    145:                }
                    146: break;
                    147: case 2:
                    148: RET(COMMA);
                    149: break;
                    150: case 3:
                    151: RET(EOS);
                    152: break;
                    153: case 4:
                    154: RET(LPAR);
                    155: break;
                    156: case 5:
                    157: RET(RPAR);
                    158: break;
                    159: case 6:
                    160: case 7:
                    161: RET(LBRACK);
                    162: break;
                    163: case 8:
                    164: case 9:
                    165: { if(iobrlevel>0) RET(RBRACK); rket = 1;  RET(EOS); }
                    166: break;
                    167: case 10:
                    168: RET(COMMA);
                    169: break;
                    170: case 11:
                    171: RET(COLON);
                    172: break;
                    173: case 12:
                    174: RET(REPOP);
                    175: break;
                    176: case 13:
                    177: case 14:
                    178: RETI(OR,OPOR);
                    179: break;
                    180: case 15:
                    181: case 16:
                    182: RETI(OR,OP2OR);
                    183: break;
                    184: case 17:
                    185: case 18:
                    186: RETI(AND,OPAND);
                    187: break;
                    188: case 19:
                    189: case 20:
                    190: RETI(AND,OP2AND);
                    191: break;
                    192: case 21:
                    193: case 22:
                    194: RETI(NOT,OPNOT);
                    195: break;
                    196: case 23:
                    197: RETI(NOT,OPNOT);
                    198: break;
                    199: case 24:
                    200: case 25:
                    201: REL(OPLT);
                    202: break;
                    203: case 26:
                    204: case 27:
                    205: REL(OPLE);
                    206: break;
                    207: case 28:
                    208: case 29:
                    209: REL(OPGT);
                    210: break;
                    211: case 30:
                    212: case 31:
                    213: REL(OPGE);
                    214: break;
                    215: case 32:
                    216: case 33:
                    217: REL(OPEQ);
                    218: break;
                    219: case 34:
                    220: case 35:
                    221: case 36:
                    222: REL(OPNE);
                    223: break;
                    224: case 37:
                    225: RET(ARROW);
                    226: break;
                    227: case 38:
                    228: RET(QUALOP);
                    229: break;
                    230: case 39:
                    231: RETI(ADDOP, OPPLUS);
                    232: break;
                    233: case 40:
                    234: RETI(ADDOP, OPMINUS);
                    235: break;
                    236: case 41:
                    237: RETI(MULTOP, OPSTAR);
                    238: break;
                    239: case 42:
                    240: RETI(MULTOP, OPSLASH);
                    241: break;
                    242: case 43:
                    243: case 44:
                    244: RETI(POWER, OPPOWER);
                    245: break;
                    246: case 45:
                    247: RETI(DOUBLEADDOP, OPPLUS);
                    248: break;
                    249: case 46:
                    250: RETI(DOUBLEADDOP, OPMINUS);
                    251: break;
                    252: case 47:
                    253: AS(OPASGN);
                    254: break;
                    255: case 48:
                    256: AS(OPPLUS);
                    257: break;
                    258: case 49:
                    259: AS(OPMINUS);
                    260: break;
                    261: case 50:
                    262: AS(OPSTAR);
                    263: break;
                    264: case 51:
                    265: AS(OPSLASH);
                    266: break;
                    267: case 52:
                    268: case 53:
                    269: AS(OPPOWER);
                    270: break;
                    271: case 54:
                    272: AS(OPAND);
                    273: break;
                    274: case 55:
                    275: AS(OP2AND);
                    276: break;
                    277: case 56:
                    278: AS(OPOR);
                    279: break;
                    280: case 57:
                    281: AS(OP2OR);
                    282: break;
                    283: case 58:
                    284: case 59:
                    285: { yytext[yyleng-1] = '\0'; p = mkconst(TYCHAR,yytext+1);
                    286:                  RETP(CONST,p); }
                    287: break;
                    288: case 60:
                    289: { /* nh construct */
                    290:                int i, n;  char c;
                    291:                yytext[yyleng-1] = '\0';  n = convci(yytext);
                    292:                for(i = 0; i<n ; ++i)
                    293:                        if( (c=yytext[i]=input()) == '\n' || c=='\0') break;
                    294:                yytext[i] = '\0';
                    295:                p = mkconst(TYCHAR,yytext);
                    296:                p->vtypep = mkint(i);
                    297:                RETP(CONST, p);
                    298:                }
                    299: break;
                    300: case 61:
                    301:        RETC(TYINT);
                    302: break;
                    303: case 62:
                    304: case 63:
                    305: RETC(TYREAL);
                    306: break;
                    307: case 64:
                    308: case 65:
                    309: RETC(TYREAL);
                    310: break;
                    311: case 66:
                    312: case 67:
                    313: RETC(TYLREAL);
                    314: break;
                    315: case 68:
                    316:        { yytext[yyleng-1] = '.';
                    317:                  RETP(CONST,mkimcon(TYCOMPLEX,yytext)); }
                    318: break;
                    319: case 69:
                    320: case 70:
                    321: RETZ(TYCOMPLEX);
                    322: break;
                    323: case 71:
                    324: case 72:
                    325: RETZ(TYCOMPLEX);
                    326: break;
                    327: case 73:
                    328: case 74:
                    329: RETZ(TYLCOMPLEX);
                    330: break;
                    331: case 75:
                    332: { if(! nocommentflag) goto litline; }
                    333: break;
                    334: case 76:
                    335: { if(thisexec) thisexec->nftnst += 2;
                    336:          if(inproc)
                    337:                {
                    338:                unput('\n');
                    339:                RETP(ESCAPE, copys(yytext));
                    340:                }
                    341: 
                    342:        litline:        p = mkchain( copys(yytext), CHNULL);
                    343:                        if(inproc==0 && yytext[0]=='%')
                    344:                                prevcomments = hookup(prevcomments, p);
                    345:                        else
                    346:                                comments =  hookup(comments,p);
                    347:        }
                    348: break;
                    349: case 77:
                    350: ;
                    351: break;
                    352: case 78:
                    353: ;
                    354: break;
                    355: case 79:
                    356: ;
                    357: break;
                    358: case 80:
                    359: ;
                    360: break;
                    361: case 81:
                    362: { if(igeol) { igeol=0; prevv = NEWLINE; }
                    363:          else if(prevv>=NAME || prevv==RPAR || prevv==RBRACK
                    364:                        || prevv== -1 || prevv==QUALOP)
                    365:                RET(EOS); }
                    366: break;
                    367: case 82:
                    368: { char * linerr();
                    369:          fprintf(diagfile, "Bad input character %c %s\n", yytext[0], linerr());
                    370:          ++nerrs;
                    371:        }
                    372: break;
                    373: case 83:
                    374: { /* Include statement */
                    375:        char *q1;
                    376:        register char *q2;
                    377:        for(q1=yytext ; *q1==' ' || *q1=='\t' ; ++q1) ;
                    378:        quoted = NO;
                    379:        for(q1 += 7 ; *q1==' ' || *q1=='\t' ||
                    380:                *q1=='\'' || *q1=='"' || *q1=='(' ; ++q1 )
                    381:                        if(*q1=='"' || *q1=='\'')
                    382:                                quoted = YES;
                    383:        for(q2=q1 ; *q2!='\0' &&  *q2!=' ' && *q2!='\n' &&
                    384:                *q2!='\'' && *q2!='"' && *q2!=')' ; ++q2 )
                    385:                        ;
                    386:        *q2 = '\0';
                    387:        if( ! quoted)
                    388:                for(k=0; (q = name(q1,1)) && q->tag==TDEFINE ; ++k)
                    389:                        {
                    390:                        if(k > MAXINCLUDEDEPTH)
                    391:                                fatal1("Macros too deep for %s", yytext);
                    392:                        q1 = q->varp->valp;
                    393:                        }
                    394:        if( (fd = opincl(&q1)) == NULL)
                    395:                {
                    396:                fprintf(diagfile, "Cannot open file %s.  Stop.\n", q1);
                    397:                exit(2);
                    398:                }
                    399:        filelines[filedepth] = yylineno;
                    400:        pushchars[filedepth] = '\n';
                    401:        if(++filedepth >= MAXINCLUDEDEPTH)
                    402:                fatal("macro or include too deep");
                    403:        fileptrs[filedepth] = yyin = fd;
                    404:        filenames[filedepth] = copys(q1);
                    405:        filelines[filedepth] = yylineno = 1;
                    406:        filemacs[filedepth] = NULL;
                    407:        }
                    408: break;
                    409: case -1:
                    410: break;
                    411: default:
                    412: fprintf(yyout,"bad switch yylook %d",nstr);
                    413: } return(0); }
                    414: /* end of yylex */
                    415: 
                    416: yywrap()
                    417: {
                    418: if(filedepth == 0)
                    419:        {
                    420:        ateof = 1;
                    421:        return(1);
                    422:        }
                    423: 
                    424: if(efmacp == 0)
                    425:        {
                    426:        fclose(yyin);
                    427:        cfree(filenames[filedepth]);
                    428:        }
                    429: 
                    430: --filedepth;
                    431: if( filemacs[filedepth] )
                    432:        efmacp = filemacs[filedepth];
                    433: else   {
                    434:        yyin = fileptrs[filedepth];
                    435:        efmacp = 0;
                    436:        }
                    437: yylineno = filelines[filedepth];
                    438: if(pushchars[filedepth] != -1)
                    439:        unput( pushchars[filedepth] );
                    440: return(0);
                    441: }
                    442: 
                    443: 
                    444: 
                    445: lower(s)       /* replace upper with lower case letters */
                    446: register char *s;
                    447: {
                    448: register char *t;
                    449: for(t=s ; *t ; ++t)
                    450:        if( isupper(*t) )
                    451:                *s++ = tolower(*t);
                    452:        else if(*t != '_')
                    453:                *s++ = *t;
                    454: }
                    455: 
                    456: 
                    457: 
                    458: 
                    459: setdot(k)
                    460: int k;
                    461: {
                    462: if(k)
                    463:        BEGIN DOTSON;
                    464: else   BEGIN 0;
                    465: }
                    466: 
                    467: 
                    468: 
                    469: 
                    470: FILE *opincl(namep)
                    471: char **namep;
                    472: {
                    473: #ifndef unix
                    474:        return( fopen(*namep, "r") );
                    475: #else
                    476: 
                    477:        /* On Unix, follow the C include conventions */
                    478:        
                    479:        register char *s, *lastslash;
                    480:        char *dir, *name, temp[100];
                    481:        int i;
                    482:        FILE *fp;
                    483:        
                    484:        name = *namep;
                    485:        if(name[0] == '/')
                    486:                return( fopen(name, "r") );
                    487:        
                    488:        dir = basefile;
                    489:        for(i = filedepth ; i>=0 ; --i)
                    490:                if( filemacs[i] == NULL)
                    491:                        {
                    492:                        dir = filenames[i];
                    493:                        break;
                    494:                        }
                    495: 
                    496:        lastslash = NULL;
                    497:        for(s = dir ; *s ; ++s)
                    498:                if(*s == '/')
                    499:                        lastslash = s;
                    500:        if(lastslash)
                    501:                {
                    502:                *lastslash = '\0';
                    503:                sprintf(temp, "%s/%s", dir, name);
                    504:                *lastslash = '/';
                    505:                if( fp = fopen(temp, "r") )
                    506:                        *namep = temp;
                    507:                }
                    508:        else
                    509:                fp = fopen(name, "r");
                    510:        
                    511:        if(fp == NULL)
                    512:                {
                    513:                sprintf(temp, "/usr/include/%s", name);
                    514:                fp = fopen(temp, "r");
                    515:                *namep = temp;
                    516:                }
                    517:        return(fp);
                    518: 
                    519: #endif
                    520: }
                    521: 
                    522: int yyvstop[] ={
                    523: 0,
                    524: 
                    525: 82,
                    526: 0,
                    527: 
                    528: 78,
                    529: 82,
                    530: 0,
                    531: 
                    532: 81,
                    533: 0,
                    534: 
                    535: 79,
                    536: 82,
                    537: 0,
                    538: 
                    539: 77,
                    540: 82,
                    541: 0,
                    542: 
                    543: 23,
                    544: 82,
                    545: 0,
                    546: 
                    547: 82,
                    548: 0,
                    549: 
                    550: 75,
                    551: 82,
                    552: 0,
                    553: 
                    554: 12,
                    555: 82,
                    556: 0,
                    557: 
                    558: 18,
                    559: 82,
                    560: 0,
                    561: 
                    562: 82,
                    563: 0,
                    564: 
                    565: 4,
                    566: 82,
                    567: 0,
                    568: 
                    569: 5,
                    570: 82,
                    571: 0,
                    572: 
                    573: 41,
                    574: 82,
                    575: 0,
                    576: 
                    577: 39,
                    578: 82,
                    579: 0,
                    580: 
                    581: 2,
                    582: 10,
                    583: 82,
                    584: 0,
                    585: 
                    586: 40,
                    587: 82,
                    588: 0,
                    589: 
                    590: 38,
                    591: 82,
                    592: 0,
                    593: 
                    594: 42,
                    595: 82,
                    596: 0,
                    597: 
                    598: 61,
                    599: 82,
                    600: 0,
                    601: 
                    602: 11,
                    603: 82,
                    604: 0,
                    605: 
                    606: 3,
                    607: 82,
                    608: 0,
                    609: 
                    610: 25,
                    611: 82,
                    612: 0,
                    613: 
                    614: 47,
                    615: 82,
                    616: 0,
                    617: 
                    618: 29,
                    619: 82,
                    620: 0,
                    621: 
                    622: 1,
                    623: 82,
                    624: 0,
                    625: 
                    626: 6,
                    627: 82,
                    628: 0,
                    629: 
                    630: 8,
                    631: 82,
                    632: 0,
                    633: 
                    634: 44,
                    635: 82,
                    636: 0,
                    637: 
                    638: 82,
                    639: 0,
                    640: 
                    641: 7,
                    642: 82,
                    643: 0,
                    644: 
                    645: 14,
                    646: 82,
                    647: 0,
                    648: 
                    649: 9,
                    650: 82,
                    651: 0,
                    652: 
                    653: 22,
                    654: 82,
                    655: 0,
                    656: 
                    657: 78,
                    658: 82,
                    659: 0,
                    660: 
                    661: 77,
                    662: 82,
                    663: 0,
                    664: 
                    665: 76,
                    666: 82,
                    667: 0,
                    668: 
                    669: 1,
                    670: 82,
                    671: 0,
                    672: 
                    673: 38,
                    674: 82,
                    675: 0,
                    676: 
                    677: 36,
                    678: 0,
                    679: 
                    680: 59,
                    681: 0,
                    682: 
                    683: 75,
                    684: 0,
                    685: 
                    686: 20,
                    687: 0,
                    688: 
                    689: 54,
                    690: 0,
                    691: 
                    692: 58,
                    693: 0,
                    694: 
                    695: 43,
                    696: 0,
                    697: 
                    698: 50,
                    699: 0,
                    700: 
                    701: 45,
                    702: 0,
                    703: 
                    704: 48,
                    705: 0,
                    706: 
                    707: 46,
                    708: 0,
                    709: 
                    710: 49,
                    711: 0,
                    712: 
                    713: 37,
                    714: 0,
                    715: 
                    716: 63,
                    717: 0,
                    718: 
                    719: 51,
                    720: 0,
                    721: 
                    722: 62,
                    723: 0,
                    724: 
                    725: 61,
                    726: 0,
                    727: 
                    728: 60,
                    729: 0,
                    730: 
                    731: 68,
                    732: 0,
                    733: 
                    734: 27,
                    735: 0,
                    736: 
                    737: 33,
                    738: 0,
                    739: 
                    740: 31,
                    741: 0,
                    742: 
                    743: 1,
                    744: 0,
                    745: 
                    746: 53,
                    747: 0,
                    748: 
                    749: 80,
                    750: 0,
                    751: 
                    752: 56,
                    753: 0,
                    754: 
                    755: 16,
                    756: 0,
                    757: 
                    758: 35,
                    759: 0,
                    760: 
                    761: 76,
                    762: 0,
                    763: 
                    764: 1,
                    765: 0,
                    766: 
                    767: 55,
                    768: 0,
                    769: 
                    770: 52,
                    771: 0,
                    772: 
                    773: 70,
                    774: 0,
                    775: 
                    776: 62,
                    777: 63,
                    778: 0,
                    779: 
                    780: 69,
                    781: 0,
                    782: 
                    783: 66,
                    784: 0,
                    785: 
                    786: 64,
                    787: 0,
                    788: 
                    789: 57,
                    790: 0,
                    791: 
                    792: 1,
                    793: 0,
                    794: 
                    795: 67,
                    796: 0,
                    797: 
                    798: 65,
                    799: 0,
                    800: 
                    801: 69,
                    802: 70,
                    803: 0,
                    804: 
                    805: 73,
                    806: 0,
                    807: 
                    808: 71,
                    809: 0,
                    810: 
                    811: 1,
                    812: 0,
                    813: 
                    814: 32,
                    815: 0,
                    816: 
                    817: 30,
                    818: 0,
                    819: 
                    820: 28,
                    821: 0,
                    822: 
                    823: 26,
                    824: 0,
                    825: 
                    826: 24,
                    827: 0,
                    828: 
                    829: 34,
                    830: 0,
                    831: 
                    832: 13,
                    833: 0,
                    834: 
                    835: 74,
                    836: 0,
                    837: 
                    838: 72,
                    839: 0,
                    840: 
                    841: 66,
                    842: 67,
                    843: 0,
                    844: 
                    845: 64,
                    846: 65,
                    847: 0,
                    848: 
                    849: 1,
                    850: 0,
                    851: 
                    852: 17,
                    853: 0,
                    854: 
                    855: 15,
                    856: 0,
                    857: 
                    858: 21,
                    859: 0,
                    860: 
                    861: 73,
                    862: 74,
                    863: 0,
                    864: 
                    865: 71,
                    866: 72,
                    867: 0,
                    868: 
                    869: 1,
                    870: 0,
                    871: 
                    872: 19,
                    873: 0,
                    874: 
                    875: 1,
                    876: 0,
                    877: 
                    878: 83,
                    879: 0,
                    880: 0};
                    881: # define YYTYPE int
                    882: struct yywork { YYTYPE verify, advance; } yycrank[] ={
                    883: 0,0,   0,0,    1,5,    0,0,    
                    884: 0,0,   0,0,    0,0,    0,0,    
                    885: 0,0,   0,0,    1,6,    1,7,    
                    886: 45,0,  1,8,    47,0,   34,72,  
                    887: 34,73, 50,0,   79,0,   0,0,    
                    888: 0,0,   0,0,    0,0,    0,0,    
                    889: 0,0,   0,0,    0,0,    0,0,    
                    890: 0,0,   0,0,    0,0,    0,0,    
                    891: 0,0,   1,9,    1,10,   1,11,   
                    892: 1,12,  1,13,   34,72,  1,14,   
                    893: 1,15,  1,16,   1,17,   1,18,   
                    894: 1,19,  1,20,   1,21,   1,22,   
                    895: 1,23,  1,24,   0,0,    0,0,    
                    896: 14,48, 19,54,  0,0,    0,0,    
                    897: 0,0,   18,52,  105,127,        1,25,   
                    898: 1,26,  1,27,   1,28,   1,29,   
                    899: 10,44, 23,60,  1,30,   1,30,   
                    900: 1,30,  1,30,   1,30,   19,55,  
                    901: 1,30,  1,30,   1,30,   14,49,  
                    902: 18,53, 1,30,   27,67,  1,30,   
                    903: 1,30,  2,39,   1,30,   1,30,   
                    904: 2,8,   1,30,   1,30,   28,68,  
                    905: 29,69, 33,71,  38,76,  36,74,  
                    906: 1,31,  48,88,  1,32,   1,33,   
                    907: 1,34,  42,80,  39,77,  52,89,  
                    908: 75,99, 106,128,        107,129,        78,100, 
                    909: 2,40,  2,10,   80,101, 2,12,   
                    910: 2,13,  2,41,   2,14,   108,130,        
                    911: 2,16,  2,17,   2,18,   109,131,        
                    912: 2,20,  2,21,   2,22,   2,23,   
                    913: 21,56, 39,77,  110,132,        3,8,    
                    914: 1,35,  1,36,   1,37,   1,38,   
                    915: 81,102,        42,80,  2,25,   2,26,   
                    916: 2,27,  2,28,   2,29,   78,100, 
                    917: 21,57, 21,58,  80,101, 112,134,        
                    918: 124,143,       126,145,        133,146,        3,9,    
                    919: 3,10,  2,42,   3,12,   3,13,   
                    920: 144,151,       3,14,   0,0,    3,16,   
                    921: 3,17,  3,18,   36,75,  3,20,   
                    922: 3,21,  3,43,   3,23,   83,105, 
                    923: 81,102,        87,112, 39,78,  2,31,   
                    924: 0,0,   2,32,   2,33,   96,120, 
                    925: 0,0,   3,25,   3,26,   3,27,   
                    926: 3,28,  3,29,   22,59,  22,59,  
                    927: 22,59, 22,59,  22,59,  22,59,  
                    928: 22,59, 22,59,  22,59,  22,59,  
                    929: 0,0,   0,0,    0,0,    98,121, 
                    930: 0,0,   4,39,   0,0,    83,105, 
                    931: 4,8,   87,112, 39,78,  2,35,   
                    932: 2,36,  2,37,   2,38,   96,120, 
                    933: 82,103,        0,0,    3,31,   0,0,    
                    934: 3,32,  3,33,   0,0,    0,0,    
                    935: 0,0,   0,0,    0,0,    0,0,    
                    936: 4,40,  4,10,   82,104, 4,12,   
                    937: 4,13,  4,41,   4,14,   98,121, 
                    938: 4,16,  4,17,   4,18,   0,0,    
                    939: 4,20,  4,21,   4,43,   4,23,   
                    940: 59,90, 59,91,  84,106, 0,0,    
                    941: 82,103,        59,92,  3,35,   3,36,   
                    942: 3,37,  3,38,   4,25,   4,26,   
                    943: 4,27,  4,28,   4,29,   11,45,  
                    944: 0,0,   84,107, 82,104, 86,110, 
                    945: 85,108,        0,0,    100,122,        11,45,  
                    946: 11,0,  4,42,   93,117, 93,118, 
                    947: 101,123,       86,111, 0,0,    93,119, 
                    948: 59,90, 59,91,  84,106, 85,109, 
                    949: 102,124,       59,92,  103,125,        104,126,        
                    950: 0,0,   0,0,    111,133,        4,31,   
                    951: 0,0,   4,32,   4,33,   0,0,    
                    952: 11,46, 84,107, 0,0,    86,110, 
                    953: 85,108,        11,45,  100,122,        0,0,    
                    954: 114,135,       11,45,  93,117, 93,118, 
                    955: 101,123,       86,111, 11,45,  93,119, 
                    956: 12,47, 0,0,    0,0,    85,109, 
                    957: 102,124,       116,136,        103,125,        104,126,        
                    958: 12,47, 12,0,   111,133,        4,35,   
                    959: 4,36,  4,37,   4,38,   11,45,  
                    960: 11,45, 11,45,  11,45,  11,45,  
                    961: 122,141,       11,45,  11,45,  11,45,  
                    962: 114,135,       0,0,    11,45,  123,142,        
                    963: 11,45, 11,45,  125,144,        11,45,  
                    964: 11,45, 12,47,  11,45,  11,45,  
                    965: 0,0,   116,136,        12,47,  0,0,    
                    966: 0,0,   138,147,        12,47,  0,0,    
                    967: 140,148,       11,45,  0,0,    12,47,  
                    968: 0,0,   15,50,  0,0,    0,0,    
                    969: 122,141,       141,149,        142,150,        0,0,    
                    970: 149,152,       15,50,  15,0,   123,142,        
                    971: 150,153,       0,0,    125,144,        0,0,    
                    972: 12,47, 12,47,  12,47,  12,47,  
                    973: 12,47, 0,0,    12,47,  12,47,  
                    974: 12,47, 138,147,        0,0,    12,47,  
                    975: 140,148,       12,47,  12,47,  152,154,        
                    976: 12,47, 12,47,  15,50,  12,47,  
                    977: 12,47, 141,149,        142,150,        15,51,  
                    978: 149,152,       0,0,    0,0,    15,50,  
                    979: 150,153,       63,95,  12,47,  63,95,  
                    980: 15,50, 0,0,    63,96,  63,96,  
                    981: 63,96, 63,96,  63,96,  63,96,  
                    982: 63,96, 63,96,  63,96,  63,96,  
                    983: 0,0,   0,0,    0,0,    152,154,        
                    984: 0,0,   15,50,  15,50,  15,50,  
                    985: 15,50, 15,50,  0,0,    15,50,  
                    986: 15,50, 15,50,  0,0,    0,0,    
                    987: 15,50, 0,0,    15,50,  15,50,  
                    988: 0,0,   15,50,  15,50,  0,0,    
                    989: 15,50, 15,50,  0,0,    0,0,    
                    990: 0,0,   0,0,    0,0,    0,0,    
                    991: 0,0,   0,0,    24,61,  15,50,  
                    992: 24,62, 24,62,  24,62,  24,62,  
                    993: 24,62, 24,62,  24,62,  24,62,  
                    994: 24,62, 24,62,  95,96,  95,96,  
                    995: 95,96, 95,96,  95,96,  95,96,  
                    996: 95,96, 95,96,  95,96,  95,96,  
                    997: 24,63, 24,64,  0,0,    0,0,    
                    998: 24,65, 24,66,  64,97,  0,0,    
                    999: 64,97, 0,0,    0,0,    64,98,  
                   1000: 64,98, 64,98,  64,98,  64,98,  
                   1001: 64,98, 64,98,  64,98,  64,98,  
                   1002: 64,98, 30,70,  30,70,  30,70,  
                   1003: 30,70, 30,70,  30,70,  30,70,  
                   1004: 30,70, 30,70,  30,70,  0,0,    
                   1005: 24,63, 24,64,  0,0,    0,0,    
                   1006: 24,65, 24,66,  30,70,  30,70,  
                   1007: 30,70, 30,70,  30,70,  30,70,  
                   1008: 30,70, 30,70,  30,70,  30,70,  
                   1009: 30,70, 30,70,  30,70,  30,70,  
                   1010: 30,70, 30,70,  30,70,  30,70,  
                   1011: 30,70, 30,70,  30,70,  30,70,  
                   1012: 30,70, 30,70,  30,70,  30,70,  
                   1013: 0,0,   0,0,    0,0,    0,0,    
                   1014: 30,70, 0,0,    30,70,  30,70,  
                   1015: 30,70, 30,70,  30,70,  30,70,  
                   1016: 30,70, 30,70,  30,70,  30,70,  
                   1017: 30,70, 30,70,  30,70,  30,70,  
                   1018: 30,70, 30,70,  30,70,  30,70,  
                   1019: 30,70, 30,70,  30,70,  30,70,  
                   1020: 30,70, 30,70,  30,70,  30,70,  
                   1021: 41,79, 0,0,    0,0,    0,0,    
                   1022: 0,0,   90,113, 0,0,    90,113, 
                   1023: 41,79, 41,0,   90,114, 90,114, 
                   1024: 90,114,        90,114, 90,114, 90,114, 
                   1025: 90,114,        90,114, 90,114, 90,114, 
                   1026: 97,98, 97,98,  97,98,  97,98,  
                   1027: 97,98, 97,98,  97,98,  97,98,  
                   1028: 97,98, 97,98,  0,0,    0,0,    
                   1029: 0,0,   41,79,  0,0,    0,0,    
                   1030: 0,0,   0,0,    41,79,  0,0,    
                   1031: 0,0,   0,0,    41,79,  91,115, 
                   1032: 0,0,   91,115, 0,0,    41,79,  
                   1033: 91,116,        91,116, 91,116, 91,116, 
                   1034: 91,116,        91,116, 91,116, 91,116, 
                   1035: 91,116,        91,116, 0,0,    0,0,    
                   1036: 0,0,   0,0,    0,0,    0,0,    
                   1037: 41,79, 41,79,  41,79,  41,79,  
                   1038: 41,79, 0,0,    41,79,  41,79,  
                   1039: 41,79, 0,0,    0,0,    41,79,  
                   1040: 0,0,   41,79,  41,79,  0,0,    
                   1041: 41,79, 41,79,  0,0,    41,79,  
                   1042: 41,79, 0,0,    0,0,    0,0,    
                   1043: 0,0,   0,0,    0,0,    0,0,    
                   1044: 0,0,   0,0,    41,79,  43,59,  
                   1045: 43,59, 43,59,  43,59,  43,59,  
                   1046: 43,59, 43,59,  43,59,  43,59,  
                   1047: 43,59, 0,0,    0,0,    0,0,    
                   1048: 0,0,   0,0,    0,0,    0,0,    
                   1049: 43,81, 0,0,    43,82,  0,0,    
                   1050: 43,83, 0,0,    43,84,  0,0,    
                   1051: 0,0,   0,0,    0,0,    43,85,  
                   1052: 0,0,   43,86,  43,87,  0,0,    
                   1053: 0,0,   0,0,    0,0,    61,93,  
                   1054: 61,93, 61,93,  61,93,  61,93,  
                   1055: 61,93, 61,93,  61,93,  61,93,  
                   1056: 61,93, 0,0,    0,0,    0,0,    
                   1057: 43,81, 0,0,    43,82,  0,0,    
                   1058: 43,83, 0,0,    43,84,  61,63,  
                   1059: 61,64, 0,0,    0,0,    43,85,  
                   1060: 61,94, 43,86,  43,87,  113,114,        
                   1061: 113,114,       113,114,        113,114,        113,114,        
                   1062: 113,114,       113,114,        113,114,        113,114,        
                   1063: 113,114,       115,116,        115,116,        115,116,        
                   1064: 115,116,       115,116,        115,116,        115,116,        
                   1065: 115,116,       115,116,        115,116,        0,0,    
                   1066: 0,0,   0,0,    0,0,    61,63,  
                   1067: 61,64, 117,137,        0,0,    117,137,        
                   1068: 61,94, 0,0,    117,138,        117,138,        
                   1069: 117,138,       117,138,        117,138,        117,138,        
                   1070: 117,138,       117,138,        117,138,        117,138,        
                   1071: 118,139,       0,0,    118,139,        0,0,    
                   1072: 0,0,   118,140,        118,140,        118,140,        
                   1073: 118,140,       118,140,        118,140,        118,140,        
                   1074: 118,140,       118,140,        118,140,        137,138,        
                   1075: 137,138,       137,138,        137,138,        137,138,        
                   1076: 137,138,       137,138,        137,138,        137,138,        
                   1077: 137,138,       139,140,        139,140,        139,140,        
                   1078: 139,140,       139,140,        139,140,        139,140,        
                   1079: 139,140,       139,140,        139,140,        153,154,        
                   1080: 0,0,   0,0,    0,0,    0,0,    
                   1081: 0,0,   0,0,    0,0,    153,154,        
                   1082: 153,155,       0,0,    0,0,    0,0,    
                   1083: 0,0,   0,0,    0,0,    0,0,    
                   1084: 0,0,   0,0,    0,0,    0,0,    
                   1085: 0,0,   0,0,    0,0,    0,0,    
                   1086: 0,0,   0,0,    0,0,    0,0,    
                   1087: 0,0,   0,0,    0,0,    0,0,    
                   1088: 153,154,       0,0,    0,0,    0,0,    
                   1089: 0,0,   153,154,        0,0,    0,0,    
                   1090: 0,0,   153,154,        0,0,    0,0,    
                   1091: 0,0,   0,0,    153,153,        0,0,    
                   1092: 0,0,   0,0,    0,0,    0,0,    
                   1093: 0,0,   0,0,    0,0,    0,0,    
                   1094: 0,0,   0,0,    0,0,    0,0,    
                   1095: 0,0,   0,0,    0,0,    153,153,        
                   1096: 153,153,       153,153,        153,153,        153,153,        
                   1097: 0,0,   153,153,        153,153,        153,153,        
                   1098: 0,0,   0,0,    153,153,        0,0,    
                   1099: 153,153,       153,153,        154,154,        153,153,        
                   1100: 153,153,       0,0,    153,153,        153,153,        
                   1101: 0,0,   0,0,    0,0,    0,0,    
                   1102: 0,0,   0,0,    0,0,    0,0,    
                   1103: 0,0,   153,153,        0,0,    154,154,        
                   1104: 154,154,       154,154,        154,154,        154,154,        
                   1105: 0,0,   154,154,        154,154,        154,154,        
                   1106: 0,0,   0,0,    154,154,        0,0,    
                   1107: 154,154,       154,154,        0,0,    154,154,        
                   1108: 154,154,       0,0,    154,154,        154,154,        
                   1109: 0,0,   0,0,    0,0,    0,0,    
                   1110: 0,0,   0,0,    0,0,    0,0,    
                   1111: 0,0,   154,154,        0,0,    0,0,    
                   1112: 0,0};
                   1113: struct yysvf yysvec[] ={
                   1114: 0,     0,      0,
                   1115: yycrank+-1,    0,              0,      
                   1116: yycrank+-72,   yysvec+1,       0,      
                   1117: yycrank+-111,  yysvec+1,       0,      
                   1118: yycrank+-180,  yysvec+1,       0,      
                   1119: yycrank+0,     0,              yyvstop+1,
                   1120: yycrank+0,     0,              yyvstop+3,
                   1121: yycrank+0,     0,              yyvstop+6,
                   1122: yycrank+0,     0,              yyvstop+8,
                   1123: yycrank+0,     0,              yyvstop+11,
                   1124: yycrank+3,     0,              yyvstop+14,
                   1125: yycrank+-242,  0,              yyvstop+17,
                   1126: yycrank+-291,  0,              yyvstop+19,
                   1127: yycrank+0,     0,              yyvstop+22,
                   1128: yycrank+14,    0,              yyvstop+25,
                   1129: yycrank+-340,  0,              yyvstop+28,
                   1130: yycrank+0,     0,              yyvstop+30,
                   1131: yycrank+0,     0,              yyvstop+33,
                   1132: yycrank+15,    0,              yyvstop+36,
                   1133: yycrank+10,    0,              yyvstop+39,
                   1134: yycrank+0,     0,              yyvstop+42,
                   1135: yycrank+75,    0,              yyvstop+46,
                   1136: yycrank+126,   0,              yyvstop+49,
                   1137: yycrank+4,     0,              yyvstop+52,
                   1138: yycrank+388,   0,              yyvstop+55,
                   1139: yycrank+0,     0,              yyvstop+58,
                   1140: yycrank+0,     0,              yyvstop+61,
                   1141: yycrank+17,    0,              yyvstop+64,
                   1142: yycrank+26,    0,              yyvstop+67,
                   1143: yycrank+27,    0,              yyvstop+70,
                   1144: yycrank+429,   0,              yyvstop+73,
                   1145: yycrank+0,     0,              yyvstop+76,
                   1146: yycrank+0,     0,              yyvstop+79,
                   1147: yycrank+28,    0,              yyvstop+82,
                   1148: yycrank+6,     0,              yyvstop+85,
                   1149: yycrank+0,     0,              yyvstop+87,
                   1150: yycrank+30,    0,              yyvstop+90,
                   1151: yycrank+0,     0,              yyvstop+93,
                   1152: yycrank+29,    0,              yyvstop+96,
                   1153: yycrank+89,    0,              yyvstop+99,
                   1154: yycrank+0,     yysvec+39,      yyvstop+102,
                   1155: yycrank+-551,  0,              yyvstop+105,
                   1156: yycrank+19,    yysvec+30,      yyvstop+108,
                   1157: yycrank+599,   0,              yyvstop+111,
                   1158: yycrank+0,     0,              yyvstop+114,
                   1159: yycrank+-2,    yysvec+11,      0,      
                   1160: yycrank+0,     0,              yyvstop+116,
                   1161: yycrank+-4,    yysvec+12,      yyvstop+118,
                   1162: yycrank+32,    0,              yyvstop+120,
                   1163: yycrank+0,     0,              yyvstop+122,
                   1164: yycrank+-7,    yysvec+15,      0,      
                   1165: yycrank+0,     0,              yyvstop+124,
                   1166: yycrank+38,    0,              yyvstop+126,
                   1167: yycrank+0,     0,              yyvstop+128,
                   1168: yycrank+0,     0,              yyvstop+130,
                   1169: yycrank+0,     0,              yyvstop+132,
                   1170: yycrank+0,     0,              yyvstop+134,
                   1171: yycrank+0,     0,              yyvstop+136,
                   1172: yycrank+0,     0,              yyvstop+138,
                   1173: yycrank+160,   yysvec+22,      yyvstop+140,
                   1174: yycrank+0,     0,              yyvstop+142,
                   1175: yycrank+635,   0,              yyvstop+144,
                   1176: yycrank+0,     yysvec+24,      yyvstop+146,
                   1177: yycrank+342,   0,              0,      
                   1178: yycrank+419,   0,              0,      
                   1179: yycrank+0,     0,              yyvstop+148,
                   1180: yycrank+0,     0,              yyvstop+150,
                   1181: yycrank+0,     0,              yyvstop+152,
                   1182: yycrank+0,     0,              yyvstop+154,
                   1183: yycrank+0,     0,              yyvstop+156,
                   1184: yycrank+0,     yysvec+30,      yyvstop+158,
                   1185: yycrank+0,     0,              yyvstop+160,
                   1186: yycrank+0,     yysvec+34,      0,      
                   1187: yycrank+0,     0,              yyvstop+162,
                   1188: yycrank+0,     0,              yyvstop+164,
                   1189: yycrank+39,    0,              yyvstop+166,
                   1190: yycrank+0,     0,              yyvstop+168,
                   1191: yycrank+0,     yysvec+39,      0,      
                   1192: yycrank+25,    0,              0,      
                   1193: yycrank+-8,    yysvec+41,      yyvstop+170,
                   1194: yycrank+39,    yysvec+30,      yyvstop+172,
                   1195: yycrank+50,    0,              0,      
                   1196: yycrank+135,   0,              0,      
                   1197: yycrank+78,    0,              0,      
                   1198: yycrank+161,   0,              0,      
                   1199: yycrank+179,   0,              0,      
                   1200: yycrank+178,   0,              0,      
                   1201: yycrank+79,    0,              0,      
                   1202: yycrank+0,     0,              yyvstop+174,
                   1203: yycrank+0,     0,              yyvstop+176,
                   1204: yycrank+514,   0,              0,      
                   1205: yycrank+552,   0,              0,      
                   1206: yycrank+0,     0,              yyvstop+178,
                   1207: yycrank+186,   yysvec+61,      yyvstop+180,
                   1208: yycrank+0,     0,              yyvstop+183,
                   1209: yycrank+398,   0,              0,      
                   1210: yycrank+94,    yysvec+95,      yyvstop+185,
                   1211: yycrank+524,   0,              0,      
                   1212: yycrank+114,   yysvec+97,      yyvstop+187,
                   1213: yycrank+0,     0,              yyvstop+189,
                   1214: yycrank+183,   0,              0,      
                   1215: yycrank+180,   yysvec+30,      yyvstop+191,
                   1216: yycrank+196,   0,              0,      
                   1217: yycrank+188,   0,              0,      
                   1218: yycrank+185,   0,              0,      
                   1219: yycrank+12,    0,              0,      
                   1220: yycrank+55,    0,              0,      
                   1221: yycrank+56,    0,              0,      
                   1222: yycrank+65,    0,              0,      
                   1223: yycrank+69,    0,              0,      
                   1224: yycrank+76,    0,              0,      
                   1225: yycrank+186,   0,              0,      
                   1226: yycrank+93,    0,              0,      
                   1227: yycrank+663,   0,              0,      
                   1228: yycrank+211,   yysvec+113,     yyvstop+193,
                   1229: yycrank+673,   0,              0,      
                   1230: yycrank+224,   yysvec+115,     yyvstop+195,
                   1231: yycrank+694,   0,              0,      
                   1232: yycrank+709,   0,              0,      
                   1233: yycrank+0,     0,              yyvstop+197,
                   1234: yycrank+0,     0,              yyvstop+200,
                   1235: yycrank+0,     0,              yyvstop+202,
                   1236: yycrank+236,   0,              0,      
                   1237: yycrank+234,   yysvec+30,      yyvstop+204,
                   1238: yycrank+94,    0,              0,      
                   1239: yycrank+254,   0,              0,      
                   1240: yycrank+95,    0,              0,      
                   1241: yycrank+0,     0,              yyvstop+206,
                   1242: yycrank+0,     0,              yyvstop+208,
                   1243: yycrank+0,     0,              yyvstop+210,
                   1244: yycrank+0,     0,              yyvstop+212,
                   1245: yycrank+0,     0,              yyvstop+214,
                   1246: yycrank+0,     0,              yyvstop+216,
                   1247: yycrank+96,    0,              0,      
                   1248: yycrank+0,     0,              yyvstop+218,
                   1249: yycrank+0,     0,              yyvstop+220,
                   1250: yycrank+0,     0,              yyvstop+222,
                   1251: yycrank+719,   0,              0,      
                   1252: yycrank+260,   yysvec+137,     yyvstop+224,
                   1253: yycrank+729,   0,              0,      
                   1254: yycrank+263,   yysvec+139,     yyvstop+227,
                   1255: yycrank+260,   0,              0,      
                   1256: yycrank+278,   yysvec+30,      yyvstop+230,
                   1257: yycrank+0,     0,              yyvstop+232,
                   1258: yycrank+102,   0,              0,      
                   1259: yycrank+0,     0,              yyvstop+234,
                   1260: yycrank+0,     0,              yyvstop+236,
                   1261: yycrank+0,     0,              yyvstop+238,
                   1262: yycrank+0,     0,              yyvstop+241,
                   1263: yycrank+280,   0,              0,      
                   1264: yycrank+283,   yysvec+30,      yyvstop+244,
                   1265: yycrank+0,     0,              yyvstop+246,
                   1266: yycrank+302,   0,              0,      
                   1267: yycrank+-786,  0,              yyvstop+248,
                   1268: yycrank+-818,  yysvec+153,     0,      
                   1269: yycrank+0,     0,              yyvstop+250,
                   1270: 0,     0,      0};
                   1271: struct yywork *yytop = yycrank+913;
                   1272: struct yysvf *yybgin = yysvec+1;
                   1273: char yymatch[] ={
                   1274: 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
                   1275: 01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
                   1276: 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
                   1277: 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
                   1278: 011 ,01  ,'"' ,01  ,01  ,01  ,01  ,047 ,
                   1279: 01  ,01  ,01  ,'+' ,01  ,'+' ,01  ,01  ,
                   1280: '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
                   1281: '0' ,'0' ,01  ,01  ,01  ,01  ,01  ,01  ,
                   1282: 01  ,'A' ,'B' ,'C' ,'D' ,'E' ,'B' ,'G' ,
                   1283: 'H' ,'I' ,'B' ,'B' ,'L' ,'B' ,'N' ,'O' ,
                   1284: 'B' ,'Q' ,'R' ,'B' ,'T' ,'U' ,'B' ,'B' ,
                   1285: 'B' ,'B' ,'B' ,01  ,01  ,01  ,01  ,'_' ,
                   1286: 01  ,'A' ,'B' ,'C' ,'D' ,'E' ,'B' ,'G' ,
                   1287: 'H' ,'I' ,'B' ,'B' ,'L' ,'B' ,'N' ,'O' ,
                   1288: 'B' ,'Q' ,'R' ,'B' ,'T' ,'U' ,'B' ,'B' ,
                   1289: 'B' ,'B' ,'B' ,01  ,01  ,01  ,01  ,01  ,
                   1290: 0};
                   1291: char yyextra[] ={
                   1292: 0,0,0,0,0,0,0,0,
                   1293: 0,0,0,0,0,0,0,0,
                   1294: 0,0,0,0,0,0,0,0,
                   1295: 0,0,0,0,0,0,0,0,
                   1296: 0,0,0,0,0,0,0,0,
                   1297: 0,0,0,0,0,0,0,0,
                   1298: 0,0,0,0,0,0,0,0,
                   1299: 0,0,0,0,0,0,0,0,
                   1300: 0,0,0,0,0,0,0,0,
                   1301: 0,0,0,0,0,0,0,0,
                   1302: 0,0,0,0,0,0,0,0,
                   1303: 0};
                   1304: /*     ncform  4.1     83/08/11        */
                   1305: 
                   1306: int yylineno =1;
                   1307: # define YYU(x) x
                   1308: # define NLSTATE yyprevious=YYNEWLINE
                   1309: char yytext[YYLMAX];
                   1310: struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
                   1311: char yysbuf[YYLMAX];
                   1312: char *yysptr = yysbuf;
                   1313: int *yyfnd;
                   1314: extern struct yysvf *yyestate;
                   1315: int yyprevious = YYNEWLINE;
                   1316: yylook(){
                   1317:        register struct yysvf *yystate, **lsp;
                   1318:        register struct yywork *yyt;
                   1319:        struct yysvf *yyz;
                   1320:        int yych;
                   1321:        struct yywork *yyr;
                   1322: # ifdef LEXDEBUG
                   1323:        int debug;
                   1324: # endif
                   1325:        char *yylastch;
                   1326:        /* start off machines */
                   1327: # ifdef LEXDEBUG
                   1328:        debug = 0;
                   1329: # endif
                   1330:        if (!yymorfg)
                   1331:                yylastch = yytext;
                   1332:        else {
                   1333:                yymorfg=0;
                   1334:                yylastch = yytext+yyleng;
                   1335:                }
                   1336:        for(;;){
                   1337:                lsp = yylstate;
                   1338:                yyestate = yystate = yybgin;
                   1339:                if (yyprevious==YYNEWLINE) yystate++;
                   1340:                for (;;){
                   1341: # ifdef LEXDEBUG
                   1342:                        if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
                   1343: # endif
                   1344:                        yyt = yystate->yystoff;
                   1345:                        if(yyt == yycrank){             /* may not be any transitions */
                   1346:                                yyz = yystate->yyother;
                   1347:                                if(yyz == 0)break;
                   1348:                                if(yyz->yystoff == yycrank)break;
                   1349:                                }
                   1350:                        *yylastch++ = yych = input();
                   1351:                tryagain:
                   1352: # ifdef LEXDEBUG
                   1353:                        if(debug){
                   1354:                                fprintf(yyout,"char ");
                   1355:                                allprint(yych);
                   1356:                                putchar('\n');
                   1357:                                }
                   1358: # endif
                   1359:                        yyr = yyt;
                   1360:                        if ( (int)yyt > (int)yycrank){
                   1361:                                yyt = yyr + yych;
                   1362:                                if (yyt <= yytop && yyt->verify+yysvec == yystate){
                   1363:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
                   1364:                                                {unput(*--yylastch);break;}
                   1365:                                        *lsp++ = yystate = yyt->advance+yysvec;
                   1366:                                        goto contin;
                   1367:                                        }
                   1368:                                }
                   1369: # ifdef YYOPTIM
                   1370:                        else if((int)yyt < (int)yycrank) {              /* r < yycrank */
                   1371:                                yyt = yyr = yycrank+(yycrank-yyt);
                   1372: # ifdef LEXDEBUG
                   1373:                                if(debug)fprintf(yyout,"compressed state\n");
                   1374: # endif
                   1375:                                yyt = yyt + yych;
                   1376:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
                   1377:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
                   1378:                                                {unput(*--yylastch);break;}
                   1379:                                        *lsp++ = yystate = yyt->advance+yysvec;
                   1380:                                        goto contin;
                   1381:                                        }
                   1382:                                yyt = yyr + YYU(yymatch[yych]);
                   1383: # ifdef LEXDEBUG
                   1384:                                if(debug){
                   1385:                                        fprintf(yyout,"try fall back character ");
                   1386:                                        allprint(YYU(yymatch[yych]));
                   1387:                                        putchar('\n');
                   1388:                                        }
                   1389: # endif
                   1390:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
                   1391:                                        if(yyt->advance+yysvec == YYLERR)       /* error transition */
                   1392:                                                {unput(*--yylastch);break;}
                   1393:                                        *lsp++ = yystate = yyt->advance+yysvec;
                   1394:                                        goto contin;
                   1395:                                        }
                   1396:                                }
                   1397:                        if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
                   1398: # ifdef LEXDEBUG
                   1399:                                if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
                   1400: # endif
                   1401:                                goto tryagain;
                   1402:                                }
                   1403: # endif
                   1404:                        else
                   1405:                                {unput(*--yylastch);break;}
                   1406:                contin:
                   1407: # ifdef LEXDEBUG
                   1408:                        if(debug){
                   1409:                                fprintf(yyout,"state %d char ",yystate-yysvec-1);
                   1410:                                allprint(yych);
                   1411:                                putchar('\n');
                   1412:                                }
                   1413: # endif
                   1414:                        ;
                   1415:                        }
                   1416: # ifdef LEXDEBUG
                   1417:                if(debug){
                   1418:                        fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
                   1419:                        allprint(yych);
                   1420:                        putchar('\n');
                   1421:                        }
                   1422: # endif
                   1423:                while (lsp-- > yylstate){
                   1424:                        *yylastch-- = 0;
                   1425:                        if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
                   1426:                                yyolsp = lsp;
                   1427:                                if(yyextra[*yyfnd]){            /* must backup */
                   1428:                                        while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
                   1429:                                                lsp--;
                   1430:                                                unput(*yylastch--);
                   1431:                                                }
                   1432:                                        }
                   1433:                                yyprevious = YYU(*yylastch);
                   1434:                                yylsp = lsp;
                   1435:                                yyleng = yylastch-yytext+1;
                   1436:                                yytext[yyleng] = 0;
                   1437: # ifdef LEXDEBUG
                   1438:                                if(debug){
                   1439:                                        fprintf(yyout,"\nmatch ");
                   1440:                                        sprint(yytext);
                   1441:                                        fprintf(yyout," action %d\n",*yyfnd);
                   1442:                                        }
                   1443: # endif
                   1444:                                return(*yyfnd++);
                   1445:                                }
                   1446:                        unput(*yylastch);
                   1447:                        }
                   1448:                if (yytext[0] == 0  /* && feof(yyin) */)
                   1449:                        {
                   1450:                        yysptr=yysbuf;
                   1451:                        return(0);
                   1452:                        }
                   1453:                yyprevious = yytext[0] = input();
                   1454:                if (yyprevious>0)
                   1455:                        output(yyprevious);
                   1456:                yylastch=yytext;
                   1457: # ifdef LEXDEBUG
                   1458:                if(debug)putchar('\n');
                   1459: # endif
                   1460:                }
                   1461:        }
                   1462: yyback(p, m)
                   1463:        int *p;
                   1464: {
                   1465: if (p==0) return(0);
                   1466: while (*p)
                   1467:        {
                   1468:        if (*p++ == m)
                   1469:                return(1);
                   1470:        }
                   1471: return(0);
                   1472: }
                   1473:        /* the following are only used in the lex library */
                   1474: yyinput(){
                   1475:        return(input());
                   1476:        }
                   1477: yyoutput(c)
                   1478:   int c; {
                   1479:        output(c);
                   1480:        }
                   1481: yyunput(c)
                   1482:    int c; {
                   1483:        unput(c);
                   1484:        }

unix.superglobalmegacorp.com

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