12857Speter /* 2*22231Sdist * Copyright (c) 1980 Regents of the University of California. 3*22231Sdist * All rights reserved. The Berkeley software License Agreement 4*22231Sdist * specifies the terms and conditions for redistribution. 5*22231Sdist */ 6*22231Sdist 7*22231Sdist #ifndef lint 8*22231Sdist static char sccsid[] = "@(#)lval.c 5.1 (Berkeley) 06/05/85"; 9*22231Sdist #endif not lint 10*22231Sdist 11*22231Sdist /* 122857Speter * pxp - Pascal execution profiler 132857Speter * 142857Speter * Bill Joy UCB 152857Speter * Version 1.2 January 1979 162857Speter */ 172857Speter 182857Speter #include "0.h" 192857Speter #include "tree.h" 202857Speter 212857Speter /* 222857Speter * A "variable" 232857Speter */ 242857Speter lvalue(r) 252857Speter register int *r; 262857Speter { 272857Speter register *c, *co; 282857Speter 292857Speter ppid(r[2]); 302857Speter for (c = r[3]; c != NIL; c = c[2]) { 312857Speter co = c[1]; 322857Speter if (co == NIL) 332857Speter continue; 342857Speter switch (co[0]) { 352857Speter case T_PTR: 362857Speter ppop("^"); 372857Speter continue; 382857Speter case T_ARY: 392857Speter arycod(co[1]); 402857Speter continue; 412857Speter case T_FIELD: 422857Speter ppop("."); 432857Speter ppid(co[1]); 442857Speter continue; 452857Speter case T_ARGL: 462857Speter ppid("{unexpected argument list}"); 472857Speter break; 482857Speter default: 492857Speter panic("lval2"); 502857Speter } 512857Speter } 522857Speter } 532857Speter 542857Speter /* 552857Speter * Subscripting 562857Speter */ 572857Speter arycod(el) 582857Speter register int *el; 592857Speter { 602857Speter 612857Speter ppbra("["); 622857Speter if (el != NIL) 632857Speter for (;;) { 642857Speter rvalue(el[1], NIL); 652857Speter el = el[2]; 662857Speter if (el == NIL) 672857Speter break; 682857Speter ppsep(", "); 692857Speter } 702857Speter else 712857Speter rvalue(NIL, NIL); 722857Speter ppket("]"); 732857Speter } 74