Annotation of coherent/a/usr/src/libl/auto.c, revision 1.1.1.1

1.1       root        1: /* (-lgl
                      2:  *     COHERENT Version 3.1
                      3:  *     Copyright (c) 1982, 1990 by Mark Williams Company.
                      4:  *     All rights reserved. May not be copied without permission.
                      5:  -lgl) */
                      6: #include "lexlib.h"
                      7: #include "lextype.h"
                      8: 
                      9: char   yytext[YYTSIZE];
                     10: struct ll_queue ll_tq;
                     11: int *ll_ctxt = yy_lextab;
                     12: int    ll_cc;
                     13: int    ll_lc = '\n';
                     14: int    ll_tf;
                     15: int    ll_lf;
                     16: int    ll_tokn;
                     17: int    ll_tlen;
                     18: int    ll_more;
                     19: int    yyscon;
                     20: int    yyleng;
                     21: int    yyline;
                     22: 
                     23: char   inpovf[] = "input buffer overflow";
                     24: char   yytovf[] = "yytext overflow";
                     25: 
                     26: _lltk()
                     27: {
                     28:        ll_tlen = 0;
                     29:        ll_tokn = MAXINT;
                     30:        {
                     31:                register int **clist, **nlist, **llist;
                     32:                register int **tlist;
                     33:                register c;
                     34: 
                     35:                clist = yy_clist;
                     36:                nlist = yy_nlist;
                     37:                llist = yy_llist;
                     38:        loop:
                     39:                ll_cc = 0;
                     40:                *clist++ = ll_ctxt;
                     41:                *clist-- = NULL;
                     42:                do {
                     43:                        _llex(ll_cc, clist, nlist, llist);
                     44:                        tlist = nlist;
                     45:                        nlist = clist;
                     46:                        clist = tlist;
                     47:                        *nlist = NULL;
                     48:                        if (*llist != NULL) {
                     49:                                c = ll_cc;
                     50:                                do {
                     51:                                        _llex(c, llist, nlist, llist);
                     52:                                        tlist = nlist;
                     53:                                        nlist = llist;
                     54:                                        llist = tlist;
                     55:                                        *nlist = NULL;
                     56:                                        ++c;
                     57:                                } while (*llist != NULL);
                     58:                        }
                     59:                        ++ll_cc;
                     60:                } while (*clist != NULL);
                     61:                ll_tf = 0;
                     62:                if (ll_tokn == MAXINT) {
                     63:                        if ((c=(qct(ll_tq)?qgt(ll_tq):_llic())) == EOF) {
                     64:                                ll_lc = '\n';
                     65:                                return (0);
                     66:                        }
                     67:                        ll_lc = c;
                     68:                        _lloc(c);
                     69:                        goto loop;
                     70:                }
                     71:        }
                     72:        {
                     73:                register char *pc;
                     74:                register i;
                     75: 
                     76:                pc = yytext;
                     77:                if (ll_more) {
                     78:                        pc += yyleng;
                     79:                        ll_more = 0;
                     80:                } else {
                     81:                        yyleng = 0;
                     82:                }
                     83:                i = ll_tlen;
                     84:                if ((yyleng += i) > sizeof(yytext))
                     85:                                error(yytovf);
                     86:                while (i--)
                     87:                        *pc++ = qgt(ll_tq);
                     88:                *pc = '\0';
                     89:                if (pc-- > yytext)
                     90:                        ll_lc = *pc;
                     91:        }
                     92:        return (ll_tokn);
                     93: }
                     94: 
                     95: _llex(n, clist, nlist, llist)
                     96: int **clist, **nlist, **llist;
                     97: {
                     98:        register int **listp, *statep;
                     99:        register int c;
                    100:        register int **clistp;
                    101: 
                    102:        c = MAXUCHAR + 1;
                    103:        clistp = clist;
                    104:        while ((statep=*clistp++) != NULL) {
                    105:                switch (*statep & LR_MASK) {
                    106:                _list:
                    107:                        while (*listp != statep)
                    108:                                if (*listp++ == NULL) {
                    109:                                        *listp-- = NULL;
                    110:                                        *listp = statep;
                    111:                                        break;
                    112:                                }
                    113:                        break;
                    114:                _look:
                    115:                        --clistp;
                    116:                        if (qct(ll_tq) <= n)
                    117:                                if (n >= QSIZE)
                    118:                                        error(inpovf);
                    119:                                else
                    120:                                        qpt(ll_tq, c=_llic());
                    121:                        else
                    122:                                c = qlk(ll_tq, n);
                    123:                        break;
                    124:                case LX_STOP:
                    125:                        break;
                    126:                case LX_LINK:
                    127:                        ++statep;
                    128:                        listp = clist;
                    129:                        while (*listp != statep)
                    130:                                if (*listp++ == NULL) {
                    131:                                        *listp-- = NULL;
                    132:                                        *listp = statep;
                    133:                                        break;
                    134:                                }
                    135:                        --statep;
                    136:                case LX_JUMP:
                    137:                        statep += *statep >> LR_SHFT;
                    138:                        listp = clist;
                    139:                        goto _list;
                    140:                case LX_LOOK:
                    141:                        ++statep;
                    142:                        listp = llist;
                    143:                        goto _list;
                    144:                case LX_ACPT:
                    145:                        if ((*statep>>LR_SHFT)<ll_tokn || ll_cc>ll_tlen)
                    146:                                if (ll_tf == 0
                    147:                                ||  ll_cc < ll_lf
                    148:                                ||  ll_tf > *statep
                    149:                                   ){
                    150:                                        ll_tokn = (*statep>>LR_SHFT);
                    151:                                        ll_tlen = ll_cc;
                    152:                                }
                    153:                        break;
                    154:                case LX_CHAR:
                    155:                        if (c > MAXUCHAR)
                    156:                                goto _look;
                    157:                        if (c == (*statep++>>LR_SHFT)) {
                    158:                                listp = nlist;
                    159:                                goto _list;
                    160:                        }
                    161:                        break;
                    162:                case LX_CLAS:
                    163:                        if (c > MAXUCHAR)
                    164:                                goto _look;
                    165:                        if (c & ~MAXUCHAR)
                    166:                                break;
                    167:                        if (yy_lxctab[(*statep>>LR_SHFT)*((MAXUCHAR+1)/NBINT)
                    168:                            +(c/NBINT)] & yy_lxbtab[c&((1<<LOGINT)-1)]) {
                    169:                                ++statep;
                    170:                                listp = nlist;
                    171:                                goto _list;
                    172:                        }
                    173:                        break;
                    174:                case LX_BLIN:
                    175:                        if (ll_lc == '\n') {
                    176:                                ++statep;
                    177:                                listp = clist;
                    178:                                goto _list;
                    179:                        }
                    180:                        break;
                    181:                case LX_ELIN:
                    182:                        if (c > MAXUCHAR)
                    183:                                goto _look;
                    184:                        if (c=='\n' || c==EOF) {
                    185:                                ++statep;
                    186:                                listp = clist;
                    187:                                goto _list;
                    188:                        }
                    189:                        break;
                    190:                case LX_ANYC:
                    191:                        if (c > MAXUCHAR)
                    192:                                goto _look;
                    193:                        if (c!='\n' && c!=EOF) {
                    194:                                ++statep;
                    195:                                listp = nlist;
                    196:                                goto _list;
                    197:                        }
                    198:                        break;
                    199:                case LX_SCON:
                    200:                        if (yyscon == (*statep++>>LR_SHFT)) {
                    201:                                listp = clist;
                    202:                                goto _list;
                    203:                        }
                    204:                        break;
                    205:                }
                    206:        }
                    207: }

unix.superglobalmegacorp.com

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