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