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