Annotation of 42BSD/ucb/pascal/pxp/lval.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)lval.c      1.1 (Berkeley) 3/2/81";
                      2: /* Copyright (c) 1979 Regents of the University of California */
                      3: #
                      4: /*
                      5:  * pxp - Pascal execution profiler
                      6:  *
                      7:  * Bill Joy UCB
                      8:  * Version 1.2 January 1979
                      9:  */
                     10: 
                     11: #include "0.h"
                     12: #include "tree.h"
                     13: 
                     14: /*
                     15:  * A "variable"
                     16:  */
                     17: lvalue(r)
                     18:        register int *r;
                     19: {
                     20:        register *c, *co;
                     21: 
                     22:        ppid(r[2]);
                     23:        for (c = r[3]; c != NIL; c = c[2]) {
                     24:                co = c[1];
                     25:                if (co == NIL)
                     26:                        continue;
                     27:                switch (co[0]) {
                     28:                        case T_PTR:
                     29:                                ppop("^");
                     30:                                continue;
                     31:                        case T_ARY:
                     32:                                arycod(co[1]);
                     33:                                continue;
                     34:                        case T_FIELD:
                     35:                                ppop(".");
                     36:                                ppid(co[1]);
                     37:                                continue;
                     38:                        case T_ARGL:
                     39:                                ppid("{unexpected argument list}");
                     40:                                break;
                     41:                        default:
                     42:                                panic("lval2");
                     43:                }
                     44:        }
                     45: }
                     46: 
                     47: /*
                     48:  * Subscripting
                     49:  */
                     50: arycod(el)
                     51:        register int *el;
                     52: {
                     53: 
                     54:        ppbra("[");
                     55:        if (el != NIL)
                     56:                for (;;) {
                     57:                        rvalue(el[1], NIL);
                     58:                        el = el[2];
                     59:                        if (el == NIL)
                     60:                                break;
                     61:                        ppsep(", ");
                     62:                }
                     63:        else
                     64:                rvalue(NIL, NIL);
                     65:        ppket("]");
                     66: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.