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

unix.superglobalmegacorp.com

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