Annotation of 41BSD/cmd/awk/parse.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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