1*3050Smckusic static char *sccsid = "@(#)const.c 1.2 (Berkeley) 03/07/81"; 22851Speter /* Copyright (c) 1979 Regents of the University of California */ 32851Speter # 42851Speter /* 52851Speter * pxp - Pascal execution profiler 62851Speter * 72851Speter * Bill Joy UCB 82851Speter * Version 1.2 January 1979 92851Speter */ 102851Speter 112851Speter #include "0.h" 122851Speter #include "tree.h" 132851Speter 14*3050Smckusic STATIC int constcnt = -1; 152851Speter 162851Speter /* 172851Speter * The const declaration part 182851Speter */ 192851Speter constbeg(l, cline) 202851Speter int l, cline; 212851Speter { 222851Speter 232851Speter line = l; 242851Speter if (nodecl) 252851Speter printoff(); 262851Speter puthedr(); 272851Speter putcm(); 282851Speter ppnl(); 292851Speter indent(); 302851Speter ppkw("const"); 312851Speter ppgoin(DECL); 322851Speter constcnt = 0; 332851Speter setline(cline); 342851Speter } 352851Speter 362851Speter const(cline, cid, cdecl) 372851Speter int cline; 382851Speter char *cid; 392851Speter int *cdecl; 402851Speter { 412851Speter 422851Speter if (constcnt) 432851Speter putcm(); 442851Speter setline(cline); 452851Speter ppitem(); 462851Speter ppid(cid); 472851Speter ppsep(" = "); 482851Speter gconst(cdecl); 492851Speter ppsep(";"); 502851Speter constcnt++; 512851Speter setinfo(cline); 522851Speter putcml(); 532851Speter } 542851Speter 552851Speter constend() 562851Speter { 572851Speter 582851Speter if (constcnt == -1) 592851Speter return; 602851Speter if (nodecl) 612851Speter return; 622851Speter if (constcnt == 0) 632851Speter ppid("{const decls}"); 642851Speter ppgoout(DECL); 652851Speter constcnt = -1; 662851Speter } 672851Speter 682851Speter /* 692851Speter * A constant in an expression 702851Speter * or a declaration. 712851Speter */ 722851Speter gconst(r) 732851Speter int *r; 742851Speter { 752851Speter register *cn; 762851Speter 772851Speter cn = r; 782851Speter loop: 792851Speter if (cn == NIL) { 802851Speter ppid("{constant}"); 812851Speter return; 822851Speter } 832851Speter switch (cn[0]) { 842851Speter default: 852851Speter panic("gconst"); 862851Speter case T_PLUSC: 872851Speter ppop("+"); 882851Speter cn = cn[1]; 892851Speter goto loop; 902851Speter case T_MINUSC: 912851Speter ppop("-"); 922851Speter cn = cn[1]; 932851Speter goto loop; 942851Speter case T_ID: 952851Speter ppid(cn[1]); 962851Speter return; 972851Speter case T_CBINT: 982851Speter case T_CINT: 992851Speter case T_CFINT: 1002851Speter ppnumb(cn[1]); 1012851Speter if (cn[0] == T_CBINT) 1022851Speter ppsep("b"); 1032851Speter return; 1042851Speter case T_CSTRNG: 1052851Speter ppstr(cn[1]); 1062851Speter return; 1072851Speter } 1082851Speter } 109