Annotation of 40BSD/cmd/pxp/lval.c, revision 1.1.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.