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