|
|
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.