Annotation of 42BSD/ucb/pascal/pxp/lval.c, revision 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.