148112Sbostic /*- 2*62189Sbostic * Copyright (c) 1980, 1993 3*62189Sbostic * The Regents of the University of California. All rights reserved. 448112Sbostic * 548112Sbostic * %sccs.include.redist.c% 622225Sdist */ 722225Sdist 822225Sdist #ifndef lint 9*62189Sbostic static char sccsid[] = "@(#)const.c 8.1 (Berkeley) 06/06/93"; 1048112Sbostic #endif /* not lint */ 1122225Sdist 1222225Sdist /* 132851Speter * pxp - Pascal execution profiler 142851Speter * 152851Speter * Bill Joy UCB 162851Speter * Version 1.2 January 1979 172851Speter */ 182851Speter 192851Speter #include "0.h" 202851Speter #include "tree.h" 212851Speter 223050Smckusic STATIC int constcnt = -1; 232851Speter 242851Speter /* 252851Speter * The const declaration part 262851Speter */ constbeg(l,cline)272851Speterconstbeg(l, cline) 282851Speter int l, cline; 292851Speter { 302851Speter 312851Speter line = l; 322851Speter if (nodecl) 332851Speter printoff(); 342851Speter puthedr(); 352851Speter putcm(); 362851Speter ppnl(); 372851Speter indent(); 382851Speter ppkw("const"); 392851Speter ppgoin(DECL); 402851Speter constcnt = 0; 412851Speter setline(cline); 422851Speter } 432851Speter constant(cline,cid,cdecl)4433239Sbosticconstant(cline, cid, cdecl) 452851Speter int cline; 462851Speter char *cid; 472851Speter int *cdecl; 482851Speter { 492851Speter 502851Speter if (constcnt) 512851Speter putcm(); 522851Speter setline(cline); 532851Speter ppitem(); 542851Speter ppid(cid); 552851Speter ppsep(" = "); 562851Speter gconst(cdecl); 572851Speter ppsep(";"); 582851Speter constcnt++; 592851Speter setinfo(cline); 602851Speter putcml(); 612851Speter } 622851Speter constend()632851Speterconstend() 642851Speter { 652851Speter 662851Speter if (constcnt == -1) 672851Speter return; 682851Speter if (nodecl) 692851Speter return; 702851Speter if (constcnt == 0) 712851Speter ppid("{const decls}"); 722851Speter ppgoout(DECL); 732851Speter constcnt = -1; 742851Speter } 752851Speter 762851Speter /* 772851Speter * A constant in an expression 782851Speter * or a declaration. 792851Speter */ gconst(r)802851Spetergconst(r) 812851Speter int *r; 822851Speter { 832851Speter register *cn; 842851Speter 852851Speter cn = r; 862851Speter loop: 872851Speter if (cn == NIL) { 882851Speter ppid("{constant}"); 892851Speter return; 902851Speter } 912851Speter switch (cn[0]) { 922851Speter default: 932851Speter panic("gconst"); 942851Speter case T_PLUSC: 952851Speter ppop("+"); 962851Speter cn = cn[1]; 972851Speter goto loop; 982851Speter case T_MINUSC: 992851Speter ppop("-"); 1002851Speter cn = cn[1]; 1012851Speter goto loop; 1022851Speter case T_ID: 1032851Speter ppid(cn[1]); 1042851Speter return; 1052851Speter case T_CBINT: 1062851Speter case T_CINT: 1072851Speter case T_CFINT: 1082851Speter ppnumb(cn[1]); 1092851Speter if (cn[0] == T_CBINT) 1102851Speter ppsep("b"); 1112851Speter return; 1122851Speter case T_CSTRNG: 1132851Speter ppstr(cn[1]); 1142851Speter return; 1152851Speter } 1162851Speter } 117