|
|
1.1 ! root 1: static char *sccsid = "@(#)const.c 1.2 (Berkeley) 3/7/81"; ! 2: /* Copyright (c) 1979 Regents of the University of California */ ! 3: # ! 4: /* ! 5: * pxp - Pascal execution profiler ! 6: * ! 7: * Bill Joy UCB ! 8: * Version 1.2 January 1979 ! 9: */ ! 10: ! 11: #include "0.h" ! 12: #include "tree.h" ! 13: ! 14: STATIC int constcnt = -1; ! 15: ! 16: /* ! 17: * The const declaration part ! 18: */ ! 19: constbeg(l, cline) ! 20: int l, cline; ! 21: { ! 22: ! 23: line = l; ! 24: if (nodecl) ! 25: printoff(); ! 26: puthedr(); ! 27: putcm(); ! 28: ppnl(); ! 29: indent(); ! 30: ppkw("const"); ! 31: ppgoin(DECL); ! 32: constcnt = 0; ! 33: setline(cline); ! 34: } ! 35: ! 36: const(cline, cid, cdecl) ! 37: int cline; ! 38: char *cid; ! 39: int *cdecl; ! 40: { ! 41: ! 42: if (constcnt) ! 43: putcm(); ! 44: setline(cline); ! 45: ppitem(); ! 46: ppid(cid); ! 47: ppsep(" = "); ! 48: gconst(cdecl); ! 49: ppsep(";"); ! 50: constcnt++; ! 51: setinfo(cline); ! 52: putcml(); ! 53: } ! 54: ! 55: constend() ! 56: { ! 57: ! 58: if (constcnt == -1) ! 59: return; ! 60: if (nodecl) ! 61: return; ! 62: if (constcnt == 0) ! 63: ppid("{const decls}"); ! 64: ppgoout(DECL); ! 65: constcnt = -1; ! 66: } ! 67: ! 68: /* ! 69: * A constant in an expression ! 70: * or a declaration. ! 71: */ ! 72: gconst(r) ! 73: int *r; ! 74: { ! 75: register *cn; ! 76: ! 77: cn = r; ! 78: loop: ! 79: if (cn == NIL) { ! 80: ppid("{constant}"); ! 81: return; ! 82: } ! 83: switch (cn[0]) { ! 84: default: ! 85: panic("gconst"); ! 86: case T_PLUSC: ! 87: ppop("+"); ! 88: cn = cn[1]; ! 89: goto loop; ! 90: case T_MINUSC: ! 91: ppop("-"); ! 92: cn = cn[1]; ! 93: goto loop; ! 94: case T_ID: ! 95: ppid(cn[1]); ! 96: return; ! 97: case T_CBINT: ! 98: case T_CINT: ! 99: case T_CFINT: ! 100: ppnumb(cn[1]); ! 101: if (cn[0] == T_CBINT) ! 102: ppsep("b"); ! 103: return; ! 104: case T_CSTRNG: ! 105: ppstr(cn[1]); ! 106: return; ! 107: } ! 108: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.