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

Defined functions

obj defined in line 105; used 70 times

Defined struct's

nd defined in line 65; used 6 times
val defined in line 26; used 2 times
  • in line 31(2)

Defined typedef's

awkfloat defined in line 8; used 21 times
cell defined in line 32; used 47 times
node defined in line 72; used 120 times

Defined macros

ARR defined in line 44; used 6 times
BFALSE defined in line 91; used 1 times
BOTCH defined in line 64; used 1 times
  • in line 70
BTRUE defined in line 90; used 2 times
CCON defined in line 87; used 3 times
CFLD defined in line 86; used 9 times
CNAME defined in line 84; never used
CON defined in line 43; used 2 times
CTEMP defined in line 83; used 2 times
CVAR defined in line 85; used 2 times
FEXP defined in line 54; used 1 times
FINT defined in line 56; used 1 times
FLD defined in line 42; used 23 times
FLENGTH defined in line 52; used 1 times
FLOG defined in line 55; used 1 times
FSQRT defined in line 53; used 1 times
HAT defined in line 126; used 8 times
JBREAK defined in line 96; used 2 times
JCONT defined in line 97; used 2 times
JEXIT defined in line 94; used 2 times
JNEXT defined in line 95; used 2 times
MAXSYM defined in line 125; used 6 times
NEXPR defined in line 102; used 4 times
NPA2 defined in line 103; used 2 times
NSTAT defined in line 101; used 6 times
NUM defined in line 41; used 16 times
NVALUE defined in line 100; used 2 times
OBOOL defined in line 79; used 3 times
OCELL defined in line 77; used 7 times
OEXPR defined in line 78; never used
OJUMP defined in line 80; used 6 times
STR defined in line 40; used 31 times
cantexec defined in line 109; used 1 times
dprintf defined in line 6; used 39 times
isbreak defined in line 114; used 4 times
iscont defined in line 115; used 1 times
isexit defined in line 113; used 5 times
isexpr defined in line 111; used 1 times
isfld defined in line 120; used 2 times
isjump defined in line 112; used 2 times
isnext defined in line 116; used 4 times
isrec defined in line 121; never used
isstr defined in line 117; used 1 times
istemp defined in line 119; used 1 times
istrue defined in line 118; used 9 times
notlegal defined in line 110; used 1 times
xfree defined in line 1; used 20 times
yfree defined in line 2; used 2 times

Usage of this include

Last modified: 1979-05-06
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 909
Valid CSS Valid XHTML 1.0 Strict