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[] = "@(#)lval.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: /*
22: * A "variable"
23: */
24: lvalue(r)
25: register int *r;
26: {
27: register *c, *co;
28:
29: ppid(r[2]);
30: for (c = r[3]; c != NIL; c = c[2]) {
31: co = c[1];
32: if (co == NIL)
33: continue;
34: switch (co[0]) {
35: case T_PTR:
36: ppop("^");
37: continue;
38: case T_ARY:
39: arycod(co[1]);
40: continue;
41: case T_FIELD:
42: ppop(".");
43: ppid(co[1]);
44: continue;
45: case T_ARGL:
46: ppid("{unexpected argument list}");
47: break;
48: default:
49: panic("lval2");
50: }
51: }
52: }
53:
54: /*
55: * Subscripting
56: */
57: arycod(el)
58: register int *el;
59: {
60:
61: ppbra("[");
62: if (el != NIL)
63: for (;;) {
64: rvalue(el[1], NIL);
65: el = el[2];
66: if (el == NIL)
67: break;
68: ppsep(", ");
69: }
70: else
71: rvalue(NIL, NIL);
72: ppket("]");
73: }
Defined functions
Defined variables
sccsid
defined in line
8;
never used