Annotation of 42BSD/bin/awk/parse.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)parse.c    4.2 8/11/83";
                      3: #endif
                      4: 
                      5: #include "awk.def"
                      6: #include "awk.h"
                      7: #include "stdio.h"
                      8: node *ALLOC(n)
                      9: {
                     10:        register node *x;
                     11:        x = (node *) malloc(sizeof(node) + (n-1)*sizeof(node *));
                     12:        if (x == NULL)
                     13:                error(FATAL, "out of space in ALLOC");
                     14:        return(x);
                     15: }
                     16: node *exptostat(a) node *a;
                     17: {
                     18:        a->ntype = NSTAT;
                     19:        return(a);
                     20: }
                     21: node   *nullstat;
                     22: node *node0(a)
                     23: {
                     24:        register node *x;
                     25:        x=ALLOC(0);
                     26:        x->nnext = NULL;
                     27:        x->nobj=a;
                     28:        return(x);
                     29: }
                     30: node *node1(a,b) node *b;
                     31: {
                     32:        register node *x;
                     33:        x=ALLOC(1);
                     34:        x->nnext = NULL;
                     35:        x->nobj=a;
                     36:        x->narg[0]=b;
                     37:        return(x);
                     38: }
                     39: node *node2(a,b,c) node *b, *c;
                     40: {
                     41:        register node *x;
                     42:        x = ALLOC(2);
                     43:        x->nnext = NULL;
                     44:        x->nobj = a;
                     45:        x->narg[0] = b;
                     46:        x->narg[1] = c;
                     47:        return(x);
                     48: }
                     49: node *node3(a,b,c,d) node *b, *c, *d;
                     50: {
                     51:        register node *x;
                     52:        x = ALLOC(3);
                     53:        x->nnext = NULL;
                     54:        x->nobj = a;
                     55:        x->narg[0] = b;
                     56:        x->narg[1] = c;
                     57:        x->narg[2] = d;
                     58:        return(x);
                     59: }
                     60: node *node4(a,b,c,d,e) node *b, *c, *d, *e;
                     61: {
                     62:        register node *x;
                     63:        x = ALLOC(4);
                     64:        x->nnext = NULL;
                     65:        x->nobj = a;
                     66:        x->narg[0] = b;
                     67:        x->narg[1] = c;
                     68:        x->narg[2] = d;
                     69:        x->narg[3] = e;
                     70:        return(x);
                     71: }
                     72: node *stat3(a,b,c,d) node *b, *c, *d;
                     73: {
                     74:        register node *x;
                     75:        x = node3(a,b,c,d);
                     76:        x->ntype = NSTAT;
                     77:        return(x);
                     78: }
                     79: node *op2(a,b,c) node *b, *c;
                     80: {
                     81:        register node *x;
                     82:        x = node2(a,b,c);
                     83:        x->ntype = NEXPR;
                     84:        return(x);
                     85: }
                     86: node *op1(a,b) node *b;
                     87: {
                     88:        register node *x;
                     89:        x = node1(a,b);
                     90:        x->ntype = NEXPR;
                     91:        return(x);
                     92: }
                     93: node *stat1(a,b) node *b;
                     94: {
                     95:        register node *x;
                     96:        x = node1(a,b);
                     97:        x->ntype = NSTAT;
                     98:        return(x);
                     99: }
                    100: node *op3(a,b,c,d) node *b, *c, *d;
                    101: {
                    102:        register node *x;
                    103:        x = node3(a,b,c,d);
                    104:        x->ntype = NEXPR;
                    105:        return(x);
                    106: }
                    107: node *stat2(a,b,c) node *b, *c;
                    108: {
                    109:        register node *x;
                    110:        x = node2(a,b,c);
                    111:        x->ntype = NSTAT;
                    112:        return(x);
                    113: }
                    114: node *stat4(a,b,c,d,e) node *b, *c, *d, *e;
                    115: {
                    116:        register node *x;
                    117:        x = node4(a,b,c,d,e);
                    118:        x->ntype = NSTAT;
                    119:        return(x);
                    120: }
                    121: node *valtonode(a, b) cell *a;
                    122: {
                    123:        register node *x;
                    124:        x = node0(a);
                    125:        x->ntype = NVALUE;
                    126:        x->subtype = b;
                    127:        return(x);
                    128: }
                    129: node *pa2stat(a,b,c) node *a, *b, *c;
                    130: {
                    131:        register node *x;
                    132:        x = node3(paircnt++, a, b, c);
                    133:        x->ntype = NPA2;
                    134:        return(x);
                    135: }
                    136: node *linkum(a,b) node *a, *b;
                    137: {
                    138:        register node *c;
                    139:        if(a == NULL) return(b);
                    140:        else if(b == NULL) return(a);
                    141:        for(c=a; c->nnext != NULL; c=c->nnext);
                    142:        c->nnext = b;
                    143:        return(a);
                    144: }
                    145: node *genprint()
                    146: {
                    147:        register node *x;
                    148:        x = stat2(PRINT,valtonode(lookup("$record", symtab, 0), CFLD), nullstat);
                    149:        return(x);
                    150: }

unix.superglobalmegacorp.com

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