Annotation of 41BSD/cmd/diction/outp.c, revision 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.