Annotation of 41BSD/cmd/pxp/lval.c, revision 1.1

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

unix.superglobalmegacorp.com

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