Annotation of 40BSD/cmd/diction/end.l, revision 1.1.1.1

1.1       root        1: %{
                      2: #include <stdio.h>
                      3: #include "names.h"
                      4: #include "ehash.c"
                      5: #include "edict.c"
                      6: #define OUT1(c) putchar(c); putchar(':'); for(i=yyleng-1;i>=0;)putchar(yytext[i--])
                      7: int i;
                      8: int nomin = 0;
                      9: %}
                     10: 
                     11: C      [A-Z0-9a-z",;]
                     12: L      [a-zA-Z-]
                     13: 
                     14: %%
                     15: ^{C}:.+        {
                     16:        ECHO;
                     17:        }
                     18: ^ci.+  {
                     19:        look(ic,2,ADJ);
                     20:        }
                     21: ^de.+  {
                     22:        look(ed,2,ED);
                     23:        }
                     24: ^draw.+        {
                     25:        OUT1(ADJ_ADV);
                     26:        }
                     27: ^eca.+ {
                     28:        look(ace,3,NOUN_VERB);
                     29:        }
                     30: ^eci.+ {
                     31:        look(ice,3,NOUN_VERB);
                     32:        }
                     33: ^ecne.+        {
                     34:        if(look(ence,4,NOUN))nomin++;
                     35:        }
                     36: ^ecna.+        {
                     37:        if(look(ance,4,NOUN))nomin++;
                     38:        }
                     39: ^ee.+  {
                     40:        look(ee,2,NOUN);
                     41:        }
                     42: ^ega.+ {
                     43:        look(age,3,NOUN);
                     44:        }
                     45: ^elba.+        {
                     46:        look(able,4,ADJ);
                     47:        }
                     48: ^elbi.+        {
                     49:        look(ible,4,ADJ);
                     50:        }
                     51: ^elc.+ {
                     52:        look(cle,3,NOUN);
                     53:        }
                     54: ^eru.+ {
                     55:        if(look(ure,3,NOUN))nomin++;
                     56:        }
                     57: ^eti.+ {
                     58:        look(ite,3,NOUN);
                     59:        }
                     60: ^evi.+ {
                     61:        look(ive,3,ADJ);
                     62:        }
                     63: ^ezi.+ {
                     64:        look(ize,3,VERB);
                     65:        }
                     66: ^gni.+ {
                     67:        look(ing,3,ING);
                     68:        }
                     69: ^hsi.+ {
                     70:        look(ish,3,ADJ);
                     71:        }
                     72: ^lac.+ {
                     73:        look(cal,3,ADJ);
                     74:        }
                     75: ^lanoi.+       {
                     76:        look(ional,5,ADJ);
                     77:        }
                     78: ^luf.+ {
                     79:        look(ful,3,ADJ);
                     80:        }
                     81: ^msi.+ {
                     82:        OUT1(NOUN);
                     83:        }
                     84: ^nam.* {
                     85:        look(man,3,NOUN);
                     86:        }
                     87: ^nem.* {
                     88:        OUT1(NV_PL);
                     89:        }
                     90: ^noi.+ {
                     91:        if(look(ion,3,NOUN))nomin++;
                     92:        }
                     93: ^pihs.+        {
                     94:        look(ship,4,NOUN);
                     95:        }
                     96: ^ral.+ {
                     97:        look(lar,3,ADJ);
                     98:        }
                     99: ^ronoh {
                    100:        OUT1(NOUN_VERB);
                    101:        }
                    102: ^ro.+  {
                    103:        OUT1(NOUN);
                    104:        }
                    105: ^si.+  {
                    106:        look(is,2,NOUN);
                    107:        }
                    108: ^ssel.+        {
                    109:        look(less,4,ADJ);
                    110:        }
                    111: ^ssen.+        {
                    112:        look(ness,4,NOUN);
                    113:        }
                    114: ^sse.+ {
                    115:        look(ess,3,NOUN);
                    116:        }
                    117: ^ss.+  {
                    118:        look(ss,2,NOUN);
                    119:        }
                    120: ^suo.+ {
                    121:        look(ous,3,ADJ);
                    122:        }
                    123: ^su.+  {
                    124:        look(us,2,NOUN);
                    125:        }
                    126: ^s.+   {
                    127:        if(yytext[yyleng-1] >= 'A' && yytext[yyleng-1]<= 'Z'){
                    128:                OUT1(NOUN);
                    129:        }
                    130:        else {
                    131:                OUT1(NV_PL);
                    132:        }
                    133:        }
                    134: ^tna.+ {
                    135:        look(ant,3,NOUN_ADJ);
                    136:        }
                    137: ^tnem.+        {
                    138:        if(look(ment,4,NOUN))nomin++;
                    139:        }
                    140: ^tse.+ {
                    141:        look(est,3,ADJ);
                    142:        }
                    143: ^tsi.+ {
                    144:        look(ist,3,NOUN);
                    145:        }
                    146: [,\n]  {
                    147:        putchar(yytext[0]);
                    148:        }
                    149: {L}+   {
                    150:        if(yytext[yyleng-1] >= 'A' && yytext[yyleng-1] <= 'Z'){
                    151:                if((yytext[0] == 'n' || yytext[0] == 'l') && yytext[1] == 'a'){
                    152:                        OUT1(NOUN_ADJ);
                    153:                }
                    154:                else {
                    155:                        OUT1(NOUN);
                    156:                }
                    157:        }
                    158:        else {
                    159:                OUT1(UNK);
                    160:        }
                    161:        }
                    162: :      {
                    163:        egetd();
                    164:        }
                    165: %%
                    166: look(f,n,nc)
                    167: char (*f)();
                    168: int n;
                    169: char nc;
                    170: {
                    171:        int in,nn,ret;
                    172:        char sch;
                    173:        in=0;
                    174:        sch=yytext[yyleng-1];
                    175:        if(sch>= 'A' && sch <= 'Z'){
                    176:                yytext[yyleng-1] = sch -'A' +'a';
                    177:                in=1;
                    178:        }
                    179:        if((*f)(&yytext[n],1,0) != 0){
                    180:                nn = (*f)(&yytext[n],1,0);
                    181:                ret = 0;
                    182:        }
                    183:        else {
                    184:                nn = nc;
                    185:                ret = 1;
                    186:        }
                    187:        if(in==1){
                    188:                if(nn == NOUN_VERB)nn=NOUN;
                    189:                yytext[yyleng-1]=sch;
                    190:        }
                    191:        OUT1(nn);
                    192:        return(ret);
                    193: }
                    194: yywrap(){
                    195:        printf(";%d\n",nomin);
                    196:        return(1);
                    197: }

unix.superglobalmegacorp.com

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