Annotation of 43BSD/usr.bin/diction/end.l, revision 1.1

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

unix.superglobalmegacorp.com

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