Annotation of 40BSD/cmd/pxp/case.c, revision 1.1.1.1

1.1       root        1: /* Copyright (c) 1979 Regents of the University of California */
                      2: #
                      3: /*
                      4:  * pxp - Pascal execution profiler
                      5:  *
                      6:  * Bill Joy UCB
                      7:  * Version 1.2 January 1979
                      8:  */
                      9: 
                     10: #include "0.h"
                     11: #include "tree.h"
                     12: 
                     13: /*
                     14:  * Case statement
                     15:  */
                     16: caseop(r)
                     17:        int *r;
                     18: {
                     19:        register *cl, *cs, i;
                     20:        struct pxcnt scnt;
                     21: 
                     22:        savecnt(&scnt);
                     23:        ppkw("case");
                     24:        ppspac();
                     25:        rvalue(r[2], NIL);
                     26:        ppspac();
                     27:        ppkw("of");
                     28:        for (cl = r[3]; cl != NIL;) {
                     29:                cs = cl[1];
                     30:                if (cs == NIL)
                     31:                        continue;
                     32:                baroff();
                     33:                ppgoin(DECL);
                     34:                setline(cs[1]);
                     35:                ppnl();
                     36:                indent();
                     37:                ppbra(NIL);
                     38:                cs = cs[2];
                     39:                if (cs != NIL) {
                     40:                        i = 0;
                     41:                        for (;;) {
                     42:                                gconst(cs[1]);
                     43:                                cs = cs[2];
                     44:                                if (cs == NIL)
                     45:                                        break;
                     46:                                i++;
                     47:                                if (i == 7) {
                     48:                                        ppsep(",");
                     49:                                        ppitem();
                     50:                                        i = 0;
                     51:                                } else
                     52:                                        ppsep(", ");
                     53:                        }
                     54:                } else
                     55:                        ppid("{case label list}");
                     56:                ppket(":");
                     57:                cs = cl[1];
                     58:                cs = cs[3];
                     59:                getcnt();
                     60:                ppgoin(STAT);
                     61:                if (cs != NIL && cs[0] == T_BLOCK) {
                     62:                        ppnl();
                     63:                        indent();
                     64:                        baron();
                     65:                        ppstbl1(cs, STAT);
                     66:                        baroff();
                     67:                        ppstbl2();
                     68:                        baron();
                     69:                } else {
                     70:                        baron();
                     71:                        statement(cs);
                     72:                }
                     73:                ppgoout(STAT);
                     74:                ppgoout(DECL);
                     75:                cl = cl[2];
                     76:                if (cl == NIL)
                     77:                        break;
                     78:                ppsep(";");
                     79:        }
                     80:        if (rescnt(&scnt))
                     81:                getcnt();
                     82:        ppnl();
                     83:        indent();
                     84:        ppkw("end");
                     85: }

unix.superglobalmegacorp.com

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