148112Sbostic /*- 2*62191Sbostic * Copyright (c) 1980, 1993 3*62191Sbostic * The Regents of the University of California. All rights reserved. 448112Sbostic * 548112Sbostic * %sccs.include.redist.c% 622231Sdist */ 722231Sdist 822231Sdist #ifndef lint 9*62191Sbostic static char sccsid[] = "@(#)lval.c 8.1 (Berkeley) 06/06/93"; 1048112Sbostic #endif /* not lint */ 1122231Sdist 1222231Sdist /* 132857Speter * pxp - Pascal execution profiler 142857Speter * 152857Speter * Bill Joy UCB 162857Speter * Version 1.2 January 1979 172857Speter */ 182857Speter 192857Speter #include "0.h" 202857Speter #include "tree.h" 212857Speter 222857Speter /* 232857Speter * A "variable" 242857Speter */ lvalue(r)252857Speterlvalue(r) 262857Speter register int *r; 272857Speter { 282857Speter register *c, *co; 292857Speter 302857Speter ppid(r[2]); 312857Speter for (c = r[3]; c != NIL; c = c[2]) { 322857Speter co = c[1]; 332857Speter if (co == NIL) 342857Speter continue; 352857Speter switch (co[0]) { 362857Speter case T_PTR: 372857Speter ppop("^"); 382857Speter continue; 392857Speter case T_ARY: 402857Speter arycod(co[1]); 412857Speter continue; 422857Speter case T_FIELD: 432857Speter ppop("."); 442857Speter ppid(co[1]); 452857Speter continue; 462857Speter case T_ARGL: 472857Speter ppid("{unexpected argument list}"); 482857Speter break; 492857Speter default: 502857Speter panic("lval2"); 512857Speter } 522857Speter } 532857Speter } 542857Speter 552857Speter /* 562857Speter * Subscripting 572857Speter */ arycod(el)582857Speterarycod(el) 592857Speter register int *el; 602857Speter { 612857Speter 622857Speter ppbra("["); 632857Speter if (el != NIL) 642857Speter for (;;) { 652857Speter rvalue(el[1], NIL); 662857Speter el = el[2]; 672857Speter if (el == NIL) 682857Speter break; 692857Speter ppsep(", "); 702857Speter } 712857Speter else 722857Speter rvalue(NIL, NIL); 732857Speter ppket("]"); 742857Speter } 75