1: # 2: /* 3: * pxp - Pascal execution profiler 4: * 5: * Bill Joy UCB 6: * Version 1.2 January 1979 7: */ 8: 9: #include "0.h" 10: 11: /* 12: * Label declaration part 13: */ 14: label(r, l) 15: int *r, l; 16: { 17: register *ll; 18: 19: if (nodecl) 20: printoff(); 21: puthedr(); 22: setline(l); 23: ppnl(); 24: indent(); 25: ppkw("label"); 26: ppgoin(DECL); 27: ppnl(); 28: indent(); 29: ppbra(NIL); 30: ll = r; 31: if (ll != NIL) 32: for (;;) { 33: pplab(ll[1]); 34: ll = ll[2]; 35: if (ll == NIL) 36: break; 37: ppsep(", "); 38: } 39: else 40: ppid("{label list}"); 41: ppket(";"); 42: putcml(); 43: ppgoout(DECL); 44: } 45: 46: /* 47: * Goto statement 48: */ 49: gotoop(s) 50: char *s; 51: { 52: 53: gocnt++; 54: ppkw("goto"); 55: ppspac(); 56: pplab(s); 57: } 58: 59: /* 60: * A label on a statement 61: */ 62: labeled(s) 63: char *s; 64: { 65: 66: linopr(); 67: indentlab(); 68: pplab(s); 69: ppsep(":"); 70: }