Annotation of src/usr.bin/awk/proto.h, Revision 1.2
1.1 tholo 1: /****************************************************************
2: Copyright (C) AT&T and Lucent Technologies 1996
3: All Rights Reserved
4:
5: Permission to use, copy, modify, and distribute this software and
6: its documentation for any purpose and without fee is hereby
7: granted, provided that the above copyright notice appear in all
8: copies and that both that the copyright notice and this
9: permission notice and warranty disclaimer appear in supporting
10: documentation, and that the names of AT&T or Lucent Technologies
11: or any of their entities not be used in advertising or publicity
12: pertaining to distribution of the software without specific,
13: written prior permission.
14:
15: AT&T AND LUCENT DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
16: SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17: FITNESS. IN NO EVENT SHALL AT&T OR LUCENT OR ANY OF THEIR
18: ENTITIES BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
19: DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20: DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
21: OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
22: USE OR PERFORMANCE OF THIS SOFTWARE.
23: ****************************************************************/
24:
1.2 ! millert 25: extern int yywrap(void);
1.1 tholo 26: extern void setfname(Cell *);
27: extern int constnode(Node *);
28: extern char *strnode(Node *);
29: extern Node *notnull(Node *);
30: extern int yyparse(void);
31:
32: extern int yylex(void);
33: extern void startreg(void);
1.2 ! millert 34: extern int input(void);
! 35: extern void unput(int);
1.1 tholo 36: extern void unputstr(char *);
1.2 ! millert 37: extern int yylook(void);
! 38: extern int yyback(int *, int);
! 39: extern int yyinput(void);
1.1 tholo 40:
41: extern fa *makedfa(char *, int);
42: extern fa *mkdfa(char *, int);
43: extern int makeinit(fa *, int);
44: extern void penter(Node *);
45: extern void freetr(Node *);
46: extern int hexstr(char **);
47: extern int quoted(char **);
48: extern char *cclenter(char *);
49: extern void overflo(char *);
50: extern void cfoll(fa *, Node *);
51: extern int first(Node *);
52: extern void follow(Node *);
53: extern int member(int, char *);
54: extern int match(fa *, char *);
55: extern int pmatch(fa *, char *);
56: extern int nematch(fa *, char *);
57: extern Node *reparse(char *);
58: extern Node *regexp(void);
59: extern Node *primary(void);
60: extern Node *concat(Node *);
61: extern Node *alt(Node *);
62: extern Node *unary(Node *);
63: extern int relex(void);
64: extern int cgoto(fa *, int, int);
65: extern void freefa(fa *);
66:
67: extern int pgetc(void);
68:
69: extern Node *nodealloc(int);
70: extern Node *exptostat(Node *);
71: extern Node *node1(int, Node *);
72: extern Node *node2(int, Node *, Node *);
73: extern Node *node3(int, Node *, Node *, Node *);
74: extern Node *node4(int, Node *, Node *, Node *, Node *);
75: extern Node *stat3(int, Node *, Node *, Node *);
76: extern Node *op2(int, Node *, Node *);
77: extern Node *op1(int, Node *);
78: extern Node *stat1(int, Node *);
79: extern Node *op3(int, Node *, Node *, Node *);
80: extern Node *op4(int, Node *, Node *, Node *, Node *);
81: extern Node *stat2(int, Node *, Node *);
82: extern Node *stat4(int, Node *, Node *, Node *, Node *);
83: extern Node *valtonode(Cell *, int);
84: extern Node *rectonode(void);
85: extern Node *makearr(Node *);
86: extern Node *pa2stat(Node *, Node *, Node *);
87: extern Node *linkum(Node *, Node *);
88: extern void defn(Cell *, Node *, Node *);
89: extern int isarg(char *);
90: extern char *tokname(int);
91: extern Cell *(*proctab[])(Node **, int);
92:
93: extern void syminit(void);
94: extern void arginit(int, char **);
95: extern void envinit(char **);
96: extern Array *makesymtab(int);
97: extern void freesymtab(Cell *);
98: extern void freeelem(Cell *, char *);
99: extern Cell *setsymtab(char *, char *, double, unsigned int, Array *);
100: extern int hash(char *, int);
101: extern void rehash(Array *);
102: extern Cell *lookup(char *, Array *);
103: extern double setfval(Cell *, double);
104: extern void funnyvar(Cell *, char *);
105: extern char *setsval(Cell *, char *);
106: extern double getfval(Cell *);
107: extern char *getsval(Cell *);
108: extern char *tostring(char *);
109: extern char *qstring(char *, int);
110:
111: extern void recinit(unsigned int);
112: extern void initgetrec(void);
113: extern int getrec(char *);
114: extern void nextfile(void);
115: extern int readrec(char *buf, int bufsize, FILE *inf);
116: extern char *getargv(int);
117: extern void setclvar(char *);
118: extern void fldbld(void);
119: extern void cleanfld(int, int);
120: extern void newfld(int);
121: extern int refldbld(char *, char *);
122: extern void recbld(void);
123: extern Cell *fieldadr(int);
124: extern void yyerror(char *);
125: extern void fpecatch(int);
126: extern void bracecheck(void);
127: extern void bcheck2(int, int, int);
128: extern void error(int, char *);
129: extern void eprint(void);
130: extern void bclass(int);
131: extern double errcheck(double, char *);
132: extern int isclvar(char *);
133: extern int isnumber(char *);
134:
135: extern void run(Node *);
136: extern Cell *execute(Node *);
137: extern Cell *program(Node **, int);
138: extern Cell *call(Node **, int);
139: extern Cell *copycell(Cell *);
140: extern Cell *arg(Node **, int);
141: extern Cell *jump(Node **, int);
142: extern Cell *getline(Node **, int);
143: extern Cell *getnf(Node **, int);
144: extern Cell *array(Node **, int);
145: extern Cell *adelete(Node **, int);
146: extern Cell *intest(Node **, int);
147: extern Cell *matchop(Node **, int);
148: extern Cell *boolop(Node **, int);
149: extern Cell *relop(Node **, int);
150: extern void tfree(Cell *);
151: extern Cell *gettemp(void);
152: extern Cell *field(Node **, int);
153: extern Cell *indirect(Node **, int);
154: extern Cell *substr(Node **, int);
155: extern Cell *sindex(Node **, int);
156: extern int format(char *, int, char *, Node *);
157: extern Cell *awksprintf(Node **, int);
158: extern Cell *awkprintf(Node **, int);
159: extern Cell *arith(Node **, int);
160: extern double ipow(double, int);
161: extern Cell *incrdecr(Node **, int);
162: extern Cell *assign(Node **, int);
163: extern Cell *cat(Node **, int);
164: extern Cell *pastat(Node **, int);
165: extern Cell *dopa2(Node **, int);
166: extern Cell *split(Node **, int);
167: extern Cell *condexpr(Node **, int);
168: extern Cell *ifstat(Node **, int);
169: extern Cell *whilestat(Node **, int);
170: extern Cell *dostat(Node **, int);
171: extern Cell *forstat(Node **, int);
172: extern Cell *instat(Node **, int);
173: extern Cell *bltin(Node **, int);
174: extern Cell *printstat(Node **, int);
175: extern Cell *nullproc(Node **, int);
176: extern FILE *redirect(int, Node *);
177: extern FILE *openfile(int, char *);
178: extern char *filename(FILE *);
179: extern Cell *closefile(Node **, int);
180: extern void closeall(void);
181: extern Cell *sub(Node **, int);
182: extern Cell *gsub(Node **, int);
183:
184: extern FILE *popen(const char *, const char *);
185: extern int pclose(FILE *);