Annotation of 42BSD/usr.bin/lex/ncform, revision 1.1.1.1

1.1       root        1: /*     ncform  4.1     83/08/11        */
                      2: 
                      3: int yylineno =1;
                      4: # define YYU(x) x
                      5: # define NLSTATE yyprevious=YYNEWLINE
                      6: char yytext[YYLMAX];
                      7: struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
                      8: char yysbuf[YYLMAX];
                      9: char *yysptr = yysbuf;
                     10: int *yyfnd;
                     11: extern struct yysvf *yyestate;
                     12: int yyprevious = YYNEWLINE;
                     13: yylook(){
                     14:        register struct yysvf *yystate, **lsp;
                     15:        register struct yywork *yyt;
                     16:        struct yysvf *yyz;
                     17:        int yych;
                     18:        struct yywork *yyr;
                     19: # ifdef LEXDEBUG
                     20:        int debug;
                     21: # endif
                     22:        char *yylastch;
                     23:        /* start off machines */
                     24: # ifdef LEXDEBUG
                     25:        debug = 0;
                     26: # endif
                     27:        if (!yymorfg)
                     28:                yylastch = yytext;
                     29:        else {
                     30:                yymorfg=0;
                     31:                yylastch = yytext+yyleng;
                     32:                }
                     33:        for(;;){
                     34:                lsp = yylstate;
                     35:                yyestate = yystate = yybgin;
                     36:                if (yyprevious==YYNEWLINE) yystate++;
                     37:                for (;;){
                     38: # ifdef LEXDEBUG
                     39:                        if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
                     40: # endif
                     41:                        yyt = yystate->yystoff;
                     42:                        if(yyt == yycrank){             /* may not be any transitions */
                     43:                                yyz = yystate->yyother;
                     44:                                if(yyz == 0)break;
                     45:                                if(yyz->yystoff == yycrank)break;
                     46:                                }
                     47:                        *yylastch++ = yych = input();
                     48:                tryagain:
                     49: # ifdef LEXDEBUG
                     50:                        if(debug){
                     51:                                fprintf(yyout,"char ");
                     52:                                allprint(yych);
                     53:                                putchar('\n');
                     54:                                }
                     55: # endif
                     56:                        yyr = yyt;
                     57:                        if ( (int)yyt > (int)yycrank){
                     58:                                yyt = yyr + yych;
                     59:                                if (yyt <= yytop && yyt->verify+yysvec == yystate){
                     60:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
                     61:                                                {unput(*--yylastch);break;}
                     62:                                        *lsp++ = yystate = yyt->advance+yysvec;
                     63:                                        goto contin;
                     64:                                        }
                     65:                                }
                     66: # ifdef YYOPTIM
                     67:                        else if((int)yyt < (int)yycrank) {              /* r < yycrank */
                     68:                                yyt = yyr = yycrank+(yycrank-yyt);
                     69: # ifdef LEXDEBUG
                     70:                                if(debug)fprintf(yyout,"compressed state\n");
                     71: # endif
                     72:                                yyt = yyt + yych;
                     73:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
                     74:                                        if(yyt->advance+yysvec == YYLERR)       /* error transitions */
                     75:                                                {unput(*--yylastch);break;}
                     76:                                        *lsp++ = yystate = yyt->advance+yysvec;
                     77:                                        goto contin;
                     78:                                        }
                     79:                                yyt = yyr + YYU(yymatch[yych]);
                     80: # ifdef LEXDEBUG
                     81:                                if(debug){
                     82:                                        fprintf(yyout,"try fall back character ");
                     83:                                        allprint(YYU(yymatch[yych]));
                     84:                                        putchar('\n');
                     85:                                        }
                     86: # endif
                     87:                                if(yyt <= yytop && yyt->verify+yysvec == yystate){
                     88:                                        if(yyt->advance+yysvec == YYLERR)       /* error transition */
                     89:                                                {unput(*--yylastch);break;}
                     90:                                        *lsp++ = yystate = yyt->advance+yysvec;
                     91:                                        goto contin;
                     92:                                        }
                     93:                                }
                     94:                        if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
                     95: # ifdef LEXDEBUG
                     96:                                if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
                     97: # endif
                     98:                                goto tryagain;
                     99:                                }
                    100: # endif
                    101:                        else
                    102:                                {unput(*--yylastch);break;}
                    103:                contin:
                    104: # ifdef LEXDEBUG
                    105:                        if(debug){
                    106:                                fprintf(yyout,"state %d char ",yystate-yysvec-1);
                    107:                                allprint(yych);
                    108:                                putchar('\n');
                    109:                                }
                    110: # endif
                    111:                        ;
                    112:                        }
                    113: # ifdef LEXDEBUG
                    114:                if(debug){
                    115:                        fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
                    116:                        allprint(yych);
                    117:                        putchar('\n');
                    118:                        }
                    119: # endif
                    120:                while (lsp-- > yylstate){
                    121:                        *yylastch-- = 0;
                    122:                        if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
                    123:                                yyolsp = lsp;
                    124:                                if(yyextra[*yyfnd]){            /* must backup */
                    125:                                        while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
                    126:                                                lsp--;
                    127:                                                unput(*yylastch--);
                    128:                                                }
                    129:                                        }
                    130:                                yyprevious = YYU(*yylastch);
                    131:                                yylsp = lsp;
                    132:                                yyleng = yylastch-yytext+1;
                    133:                                yytext[yyleng] = 0;
                    134: # ifdef LEXDEBUG
                    135:                                if(debug){
                    136:                                        fprintf(yyout,"\nmatch ");
                    137:                                        sprint(yytext);
                    138:                                        fprintf(yyout," action %d\n",*yyfnd);
                    139:                                        }
                    140: # endif
                    141:                                return(*yyfnd++);
                    142:                                }
                    143:                        unput(*yylastch);
                    144:                        }
                    145:                if (yytext[0] == 0  /* && feof(yyin) */)
                    146:                        {
                    147:                        yysptr=yysbuf;
                    148:                        return(0);
                    149:                        }
                    150:                yyprevious = yytext[0] = input();
                    151:                if (yyprevious>0)
                    152:                        output(yyprevious);
                    153:                yylastch=yytext;
                    154: # ifdef LEXDEBUG
                    155:                if(debug)putchar('\n');
                    156: # endif
                    157:                }
                    158:        }
                    159: yyback(p, m)
                    160:        int *p;
                    161: {
                    162: if (p==0) return(0);
                    163: while (*p)
                    164:        {
                    165:        if (*p++ == m)
                    166:                return(1);
                    167:        }
                    168: return(0);
                    169: }
                    170:        /* the following are only used in the lex library */
                    171: yyinput(){
                    172:        return(input());
                    173:        }
                    174: yyoutput(c)
                    175:   int c; {
                    176:        output(c);
                    177:        }
                    178: yyunput(c)
                    179:    int c; {
                    180:        unput(c);
                    181:        }

unix.superglobalmegacorp.com

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