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