Annotation of 41BSD/cmd/diction/end.l, revision 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.