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