|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.