|
|
1.1 root 1: #include "style.h"
2: #include "names.h"
3: #include "conp.h"
4: char *names[] = {
5: "noun", "verb", "interjection", "adjective", "adverb", "conjunction", "possessive",
6: "pronoun", "article", "preposition", "auxiliary", "tobe", "subordinate conjunction", "", "expletive"
7: };
8: outp(){
9: struct ss *st;
10: char *ssp;
11: char *spart, ff;
12: int index, lverbc;
13: int nn, sc, f, kk,comp, begsc;
14: int conjf, verbf,lpas,bflg,lexp,olvb;
15: int infinf, ovflg;
16: int lvowel,nlet;
17: int imper;
18: float rd;
19:
20: if(style){
21: nn = kk = 0;
22: for(sentp=sent;sentp->cc != END;sentp++){
23: if(sentp->cc != ',' && sentp->cc != '"')nn++;
24: if(sentp->cc == VERB || sentp->cc == BE || sentp->cc == AUX)kk++;
25: }
26: if(nn < 4 && kk == 0)return;
27: }
28:
29: imper = lexp = lpas = index = lverbc = 0;
30: conjf = verbf = kk = nn = sc = comp = begsc = 0;
31: bflg = olvb = infinf = ovflg = 0;
32: nlet = 0;
33: f = 1;
34: sentp=sent;
35: while(sentp->cc != END){
36: /* printf("%c:",sentp->ic); */
37: if(sentp->cc == ';')comp++;
38: else {
39: if((sentp->cc != ',') && (sentp->cc != '"')){
40: if(*sentp->sp != 'x'){
41: nn++;
42: nlet += sentp->leng;
43: }
44: kk++;
45: }
46: }
47: switch(sentp->cc){
48: case NOUN:
49: spart ="noun";
50: if(f)index=0;
51: if(*sentp->sp != 'x'){
52: noun++;
53: numnonf++;
54: letnonf += sentp->leng;
55: }
56: bflg = infinf = ovflg = 0;
57: break;
58: case VERB:
59: spart = "verb";
60: if(f)index=1;
61: if(sentp->ic==TO){
62: infin++;
63: infinf=1;
64: lverbc++;
65: }
66: else {
67: if(f)imper=1;
68: if(ovflg == 0 && infinf == 0){
69: ovflg = 1;
70: lverbc++;
71: olvb++;
72: }
73: numnonf++;
74: letnonf += sentp->leng;
75: if(infinf == 0){
76: if(verbf == 0)verbf++;
77: else if(conjf)comp++;
78: }
79: if(bflg && sentp->ic == ED)lpas = ++passive;
80: }
81: break;
82: case INTER:
83: spart = "interj";
84: if(f)index=2;
85: bflg = infinf = ovflg = 0;
86: break;
87: case ADJ:
88: spart = "adj";
89: if(f)index=3;
90: adj++;
91: numnonf++;
92: letnonf += sentp->leng;
93: bflg = infinf = ovflg = 0;
94: break;
95: case ADV:
96: spart = "adv";
97: if(f)index=4;
98: adv++;
99: numnonf++;
100: letnonf += sentp->leng;
101: break;
102: case CONJ:
103: spart = "conj";
104: conjc++;
105: if(f)index=5;
106: if(infinf && (sentp+1)->cc == VERB);
107: else {
108: if(verbf)conjf++;
109: bflg = infinf = ovflg = 0;
110: }
111: break;
112: case POS:
113: spart = "pos";
114: if(f)index=6;
115: bflg = infinf = ovflg = 0;
116: break;
117: case PRONS:
118: case PRONP:
119: spart = "pron";
120: pron++;
121: if(f){
122: index=7;
123: if((sentp+1)->cc == BE){
124: if(sentp->leng == 5 && *(sentp->sp) == 't' && *((sentp->sp)+3)=='r'){index=14;lexp=1;}
125: else if(sentp->leng ==2&& *(sentp->sp) == 'i' ){index=14;lexp=1;}
126: }
127: }
128: bflg = infinf = ovflg = 0;
129: if(sentp->ic == THAT || sentp->ic == WHO)sc++;
130: break;
131: case ART:
132: spart = "art";
133: if(f)index=8;
134: bflg = infinf = ovflg = 0;
135: break;
136: case PREP:
137: spart = "prep";
138: if(f)index=9;
139: prepc++;
140: bflg = infinf = ovflg = 0;
141: break;
142: case AUXX:
143: spart = "aux";
144: if(ovflg == 0 && infinf == 0){
145: ovflg = 1;
146: lverbc++;
147: olvb++;
148: aux++;
149: }
150: if(f)index=10;
151: break;
152: case BE:
153: if(ovflg == 0 && infinf == 0){
154: ovflg = 1;
155: lverbc++;
156: olvb++;
157: }
158: spart = "be";
159: if(f)index=11;
160: tobe++;
161: bflg = 1;
162: if(verbf == 0)verbf++;
163: else if(conjf)comp++;
164: break;
165: case SUBCONJ:
166: spart = "subcj";
167: if(f){
168: index=13;
169: begsc++;
170: }
171: sc++;
172: if((sentp-1)->cc != CONJ)
173: verbf = conjf = 0;
174: bflg = infinf = ovflg = 0;
175: break;
176: default:
177: if(sentp->cc == ','){
178: if(begsc)conjf=verbf=0;
179: }
180: spart = sentp->sp;
181: }
182: if(part){
183: printf("%s %s\n",spart,sentp->sp);
184: }
185: else if(pstyle){
186: printf("%s ",sentp->sp);
187: if(kk == 15){
188: printf("\n");
189: kk=0;
190: }
191: }
192: if(style){
193: ssp=sentp->sp;
194: lvowel = 0;
195: while(*ssp != '\0'){
196: if(*ssp >= '0' && *ssp <= '9'){
197: lvowel=0;
198: break;
199: }
200: switch(*(ssp++)){
201: case 'a':
202: case 'e':
203: case 'i':
204: case 'o':
205: case 'u':
206: case 'y':
207: case 'A':
208: case 'E':
209: case 'I':
210: case 'O':
211: case 'U':
212: case 'Y':
213: lvowel++;
214: continue;
215: }
216: }
217: if(lvowel != 0){
218: vowel += lvowel;
219: twds++;
220: }
221: }
222: if(f){
223: ff=sentp->cc;
224: f=0;
225: }
226: sentp++;
227: }
228: if(part){
229: printf(". %s\n",sentp->sp);
230: }
231: numsent++;
232: numlet += nlet;
233: tverbc += lverbc;
234: verbc += olvb;
235: if(*(sentp->sp) == '?'){
236: if(sc > 0)sc -= 1;
237: qcount++;
238: }
239: else if(*(sentp->sp) == '/')icount++;
240: else if(imper)icount++;
241: if(rstyle||pstyle)rd = 4.71*((float)(nlet)/(float)(nn))+.5*(float)(nn)-21.43;
242: if((rstyle&& rd>=rthresh)||(lstyle&&nn >= lthresh)||(pastyle&&lpas)||(estyle&&lexp)){
243: if(!part){
244: for(st=sent, kk=0;st->cc != END;st++){
245: printf("%s ",st->sp);
246: if(kk++ >= 15){
247: kk=0;
248: printf("\n");
249: }
250: }
251: }
252: kk=1;
253: }
254: else kk=0;
255: if(pstyle || kk){
256: if(!part)printf("%s\n",sentp->sp);
257: printf(" sentence length: %d ",nn);
258: if(sc == 0){
259: if(comp == 0)printf("SIMPLE ");
260: else printf("COMPOUND ");
261: }
262: else if(comp == 0)printf("COMPLEX ");
263: else printf("COMPOUND-COMPLEX ");
264: if(index==14)printf(":expletive:");
265: if(lpas)printf(":passive:");
266: if(rstyle||pstyle)printf(" readability %4.2f ",rd);
267: printf(": begins with %s\n\n",names[index]);
268: }
269: if(index < 15)beg[index]++;
270: if(nn > maxsent){
271: maxsent=nn;
272: maxindex=numsent;
273: }
274: if(nn < minsent ){
275: minsent = nn;
276: minindex=numsent;
277: }
278: numwds += nn;
279: if(nn > 49)nn=49;
280: sleng[nn]++;
281: if(sc == 0){
282: if(comp == 0)simple++;
283: else compound++;
284: }
285: else if(comp == 0)complex++;
286: else compdx++;
287: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.