Annotation of 43BSDReno/usr.bin/awk/awk.def, revision 1.1.1.1

1.1       root        1: /*     awk.def 4.3     83/12/09        */
                      2: 
                      3: #define hack   int
                      4: #define        AWKFLOAT        float
                      5: #define        xfree(a)        { if(a!=NULL) { yfree(a); a=NULL;} }
                      6: #define        strfree(a)      { if(a!=NULL && a!=EMPTY) { yfree(a);} a=EMPTY; }
                      7: #define yfree free
                      8: #define        isnull(x)       ((x) == EMPTY || (x) == NULL)
                      9: 
                     10: #ifdef DEBUG
                     11: #      define  dprintf if(dbg)printf
                     12: #else
                     13: #      define  dprintf(x1, x2, x3, x4)
                     14: #endif
                     15: typedef        AWKFLOAT        awkfloat;
                     16: 
                     17: extern char    **FS;
                     18: extern char    **RS;
                     19: extern char    **ORS;
                     20: extern char    **OFS;
                     21: extern char    **OFMT;
                     22: extern awkfloat *NR;
                     23: extern awkfloat *NF;
                     24: extern char    **FILENAME;
                     25: 
                     26: extern char    record[];
                     27: extern char    EMPTY[];
                     28: extern int     dbg;
                     29: extern int     lineno;
                     30: extern int     errorflag;
                     31: extern int     donefld;        /* 1 if record broken into fields */
                     32: extern int     donerec;        /* 1 if record is valid (no fld has changed */
                     33: 
                     34: typedef struct val {   /* general value during processing */
                     35:        char    *nval;  /* name, for variables only */
                     36:        char    *sval;  /* string value */
                     37:        awkfloat        fval;   /* value as number */
                     38:        unsigned        tval;   /* type info */
                     39:        struct val      *nextval;       /* ptr to next if chained */
                     40: } cell;
                     41: extern cell *symtab[];
                     42: cell   *setsymtab(), *lookup(), **makesymtab();
                     43: 
                     44: extern cell    *recloc;        /* location of input record */
                     45: extern cell    *nrloc;         /* NR */
                     46: extern cell    *nfloc;         /* NF */
                     47: 
                     48: #define        STR     01      /* string value is valid */
                     49: #define        NUM     02      /* number value is valid */
                     50: #define FLD    04      /* FLD means don't free string space */
                     51: #define        CON     010     /* this is a constant */
                     52: #define        ARR     020     /* this is an array */
                     53: 
                     54: awkfloat setfval(), getfval();
                     55: char   *setsval(), *getsval();
                     56: char   *tostring(), *tokname(), *malloc();
                     57: double log(), sqrt(), exp(), atof();
                     58: 
                     59: /* function types */
                     60: #define        FLENGTH 1
                     61: #define        FSQRT   2
                     62: #define        FEXP    3
                     63: #define        FLOG    4
                     64: #define        FINT    5
                     65: 
                     66: typedef struct {
                     67:        char otype;
                     68:        char osub;
                     69:        cell *optr;
                     70: } obj;
                     71: 
                     72: #define BOTCH  1
                     73: struct nd {
                     74:        char ntype;
                     75:        char subtype;
                     76:        struct nd *nnext;
                     77:        int nobj;
                     78:        struct nd *narg[BOTCH]; /* C won't take a zero length array */
                     79: };
                     80: typedef struct nd node;
                     81: extern node    *winner;
                     82: extern node    *nullstat;
                     83: 
                     84: /* otypes */
                     85: #define OCELL  0
                     86: #define OEXPR  1
                     87: #define OBOOL  2
                     88: #define OJUMP  3
                     89: 
                     90: /* cell subtypes */
                     91: #define CTEMP  4
                     92: #define CNAME  3 
                     93: #define CVAR   2
                     94: #define CFLD   1
                     95: #define CCON   0
                     96: 
                     97: /* bool subtypes */
                     98: #define BTRUE  1
                     99: #define BFALSE 2
                    100: 
                    101: /* jump subtypes */
                    102: #define JEXIT  1
                    103: #define JNEXT  2
                    104: #define        JBREAK  3
                    105: #define        JCONT   4
                    106: 
                    107: /* node types */
                    108: #define NVALUE 1
                    109: #define NSTAT  2
                    110: #define NEXPR  3
                    111: #define NPA2   4
                    112: 
                    113: extern obj     (*proctab[])();
                    114: extern obj     true, false;
                    115: extern int     pairstack[], paircnt;
                    116: 
                    117: #define cantexec(n)    (n->ntype == NVALUE)
                    118: #define notlegal(n)    (n <= FIRSTTOKEN || n >= LASTTOKEN || proctab[n-FIRSTTOKEN]== nullproc)
                    119: #define isexpr(n)      (n->ntype == NEXPR)
                    120: #define isjump(n)      (n.otype == OJUMP)
                    121: #define isexit(n)      (n.otype == OJUMP && n.osub == JEXIT)
                    122: #define        isbreak(n)      (n.otype == OJUMP && n.osub == JBREAK)
                    123: #define        iscont(n)       (n.otype == OJUMP && n.osub == JCONT)
                    124: #define        isnext(n)       (n.otype == OJUMP && n.osub == JNEXT)
                    125: #define isstr(n)       (n.optr->tval & STR)
                    126: #define istrue(n)      (n.otype == OBOOL && n.osub == BTRUE)
                    127: #define istemp(n)      (n.otype == OCELL && n.osub == CTEMP)
                    128: #define isfld(n)       (!donefld && n.osub==CFLD && n.otype==OCELL && n.optr->nval==EMPTY)
                    129: #define isrec(n)       (donefld && n.osub==CFLD && n.otype==OCELL && n.optr->nval!=EMPTY)
                    130: obj    nullproc();
                    131: obj    relop();
                    132: 
                    133: #define MAXSYM 50
                    134: #define        HAT     0177    /* matches ^ in regular expr */
                    135:                        /* watch out for mach dep */

unix.superglobalmegacorp.com

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