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
- in line 62,
106,
122-123(2)
- in /usr/src/cmd/awk/run.c line
15,
22-23(2),
30-33(3),
62-64(2),
94-97(3),
105-110(3),
126-128(2),
143-145(2),
174-177(2),
208,
215-218(2),
232-234(2),
247-250(2),
286-288(2),
314,
381-383(2),
397-400(2),
440-442(2),
461-463(2),
504-506(2),
526-528(2),
541-543(2),
562-564(2),
576-578(2),
629-631(2),
645-647(2),
664-666(2),
687-690(2),
715-717(2),
740-742(2),
766-769(2),
792-796(3),
808
Defined struct's
nd
defined in line
65; used 6 times
val
defined in line
26; used 2 times
Defined typedef's
awkfloat
defined in line
8; used 21 times
- in line 15-16(2),
46-29(2)
- in /usr/src/cmd/awk/lib.c line
155
- in /usr/src/cmd/awk/run.c line
178,
303,
316,
399,
444,
464,
743,
749-753(2)
- in /usr/src/cmd/awk/tran.c line
12-13(2),
71,
122-124(2),
155-158(2)
cell
defined in line
32; used 47 times
- in line 33-38(5),
61
- in /usr/src/cmd/awk/lib.c line
18,
91,
184
- in /usr/src/cmd/awk/parse.c line
104
- in /usr/src/cmd/awk/run.c line
20-21(2),
108-113(2),
236,
579,
596,
689-697(4),
798
- in /usr/src/cmd/awk/tran.c line
5,
16-18(3),
37-58(7),
69-77(4),
85(2),
110-114(3),
123,
138,
156,
182,
206
node
defined in line
72; used 120 times
- in line 73-74(2)
- in /usr/src/cmd/awk/awk.g.y line
196-207(11)
- in /usr/src/cmd/awk/b.c line
5,
35,
42-48(6),
61-65(2),
86,
145,
177,
211-213(2),
294
- in /usr/src/cmd/awk/parse.c line
4-18(10),
24-25(3),
32-33(3),
41-42(3),
51-52(3),
62-105(23),
111-124(8),
131-132(2)
- in /usr/src/cmd/awk/run.c line
18(2),
30-37(3),
56,
62,
94,
105,
126,
143,
174,
232,
247,
286,
311,
381-384(2),
397,
440,
461,
504,
526,
541,
562,
576,
629,
645,
664,
687,
715,
740,
766-768(2),
794,
805
Defined macros
ARR
defined in line
44; used 6 times
BOTCH
defined in line
64; used 1 times
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
FLOG
defined in line
55; used 1 times
FSQRT
defined in line
53; used 1 times
HAT
defined in line
126; used 8 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
NPA2
defined in line
103; used 2 times
NUM
defined in line
41; used 16 times
- in /usr/src/cmd/awk/lib.c line
153
- in /usr/src/cmd/awk/run.c line
21,
75-79(2),
182(2),
470,
624
- in /usr/src/cmd/awk/tran.c line
22,
31-33(2),
131,
145,
164,
172,
210
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
- in line 117
- in /usr/src/cmd/awk/lib.c line
17-19(2),
96,
120,
134,
145,
177
- in /usr/src/cmd/awk/run.c line
76-78(2),
116-120(2),
393,
469,
521,
599,
618,
702
- in /usr/src/cmd/awk/tran.c line
22-30(8),
130,
146,
190,
199,
210
dprintf
defined in line
6; used 39 times
- in /usr/src/cmd/awk/b.c line
134,
278-284(3),
325,
368,
452-457(3),
464-465(2),
490-494(3)
- in /usr/src/cmd/awk/lib.c line
38-43(2),
52,
98,
176-181(3),
209
- in /usr/src/cmd/awk/main.c line
38,
59,
66
- in /usr/src/cmd/awk/run.c line
275,
598,
616
- in /usr/src/cmd/awk/tran.c line
24,
81-82(2),
95-96(2),
126,
141,
162,
177,
188,
201
xfree
defined in line
1; used 20 times
- in /usr/src/cmd/awk/b.c line
90-95(3),
101,
135,
487
- in /usr/src/cmd/awk/lib.c line
118,
132,
144
- in /usr/src/cmd/awk/main.c line
115,
133
- in /usr/src/cmd/awk/run.c line
115,
211,
700
- in /usr/src/cmd/awk/tran.c line
61-66(3),
80,
150,
192
yfree
defined in line
2; used 2 times
Usage of this include