Annotation of 41BSD/cmd/diction/outp.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.