Annotation of 43BSD/ucb/pascal/pxp/lval.c, revision 1.1

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

unix.superglobalmegacorp.com

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