|
|
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: * A "variable" ! 15: */ ! 16: lvalue(r) ! 17: register int *r; ! 18: { ! 19: register *c, *co; ! 20: ! 21: ppid(r[2]); ! 22: for (c = r[3]; c != NIL; c = c[2]) { ! 23: co = c[1]; ! 24: if (co == NIL) ! 25: continue; ! 26: switch (co[0]) { ! 27: case T_PTR: ! 28: ppop("^"); ! 29: continue; ! 30: case T_ARY: ! 31: arycod(co[1]); ! 32: continue; ! 33: case T_FIELD: ! 34: ppop("."); ! 35: ppid(co[1]); ! 36: continue; ! 37: case T_ARGL: ! 38: ppid("{unexpected argument list}"); ! 39: break; ! 40: default: ! 41: panic("lval2"); ! 42: } ! 43: } ! 44: } ! 45: ! 46: /* ! 47: * Subscripting ! 48: */ ! 49: arycod(el) ! 50: register int *el; ! 51: { ! 52: ! 53: ppbra("["); ! 54: if (el != NIL) ! 55: for (;;) { ! 56: rvalue(el[1], NIL); ! 57: el = el[2]; ! 58: if (el == NIL) ! 59: break; ! 60: ppsep(", "); ! 61: } ! 62: else ! 63: rvalue(NIL, NIL); ! 64: ppket("]"); ! 65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.