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