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

Defined functions

outp defined in line 15; never used

Defined variables

names defined in line 10; used 1 times
sccsid defined in line 2; never used
Last modified: 1987-02-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 3015
Valid CSS Valid XHTML 1.0 Strict