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