1*ca0c2f89SAntonio Huete Jimenez /* $Id: error.c,v 1.14 2016/12/02 18:35:55 tom Exp $ */
2b2605375SPeter Avalos
3b2605375SPeter Avalos /* routines for printing error messages */
4b2605375SPeter Avalos
5b2605375SPeter Avalos #include "defs.h"
6b2605375SPeter Avalos
7b2605375SPeter Avalos void
fatal(const char * msg)8b2605375SPeter Avalos fatal(const char *msg)
9b2605375SPeter Avalos {
10b2605375SPeter Avalos fprintf(stderr, "%s: f - %s\n", myname, msg);
11b2605375SPeter Avalos done(2);
12b2605375SPeter Avalos }
13b2605375SPeter Avalos
14b2605375SPeter Avalos void
no_space(void)15b2605375SPeter Avalos no_space(void)
16b2605375SPeter Avalos {
17b2605375SPeter Avalos fprintf(stderr, "%s: f - out of space\n", myname);
18b2605375SPeter Avalos done(2);
19b2605375SPeter Avalos }
20b2605375SPeter Avalos
21b2605375SPeter Avalos void
open_error(const char * filename)22b2605375SPeter Avalos open_error(const char *filename)
23b2605375SPeter Avalos {
24b2605375SPeter Avalos fprintf(stderr, "%s: f - cannot open \"%s\"\n", myname, filename);
25b2605375SPeter Avalos done(2);
26b2605375SPeter Avalos }
27b2605375SPeter Avalos
28b2605375SPeter Avalos void
missing_brace(void)29b2605375SPeter Avalos missing_brace(void)
30b2605375SPeter Avalos {
31b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", missing '}'\n",
32b2605375SPeter Avalos myname, lineno, input_file_name);
33b2605375SPeter Avalos done(1);
34b2605375SPeter Avalos }
35b2605375SPeter Avalos
36b2605375SPeter Avalos void
unexpected_EOF(void)37b2605375SPeter Avalos unexpected_EOF(void)
38b2605375SPeter Avalos {
39b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", unexpected end-of-file\n",
40b2605375SPeter Avalos myname, lineno, input_file_name);
41b2605375SPeter Avalos done(1);
42b2605375SPeter Avalos }
43b2605375SPeter Avalos
44b2605375SPeter Avalos static void
print_pos(const char * st_line,const char * st_cptr)45c4d42299SSascha Wildner print_pos(const char *st_line, const char *st_cptr)
46b2605375SPeter Avalos {
47c4d42299SSascha Wildner const char *s;
48b2605375SPeter Avalos
49b2605375SPeter Avalos if (st_line == 0)
50b2605375SPeter Avalos return;
51b2605375SPeter Avalos for (s = st_line; *s != '\n'; ++s)
52b2605375SPeter Avalos {
53b2605375SPeter Avalos if (isprint(UCH(*s)) || *s == '\t')
54b2605375SPeter Avalos putc(*s, stderr);
55b2605375SPeter Avalos else
56b2605375SPeter Avalos putc('?', stderr);
57b2605375SPeter Avalos }
58b2605375SPeter Avalos putc('\n', stderr);
59b2605375SPeter Avalos for (s = st_line; s < st_cptr; ++s)
60b2605375SPeter Avalos {
61b2605375SPeter Avalos if (*s == '\t')
62b2605375SPeter Avalos putc('\t', stderr);
63b2605375SPeter Avalos else
64b2605375SPeter Avalos putc(' ', stderr);
65b2605375SPeter Avalos }
66b2605375SPeter Avalos putc('^', stderr);
67b2605375SPeter Avalos putc('\n', stderr);
68b2605375SPeter Avalos }
69b2605375SPeter Avalos
70b2605375SPeter Avalos void
syntax_error(int st_lineno,char * st_line,char * st_cptr)71b2605375SPeter Avalos syntax_error(int st_lineno, char *st_line, char *st_cptr)
72b2605375SPeter Avalos {
73b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", syntax error\n",
74b2605375SPeter Avalos myname, st_lineno, input_file_name);
75b2605375SPeter Avalos print_pos(st_line, st_cptr);
76b2605375SPeter Avalos done(1);
77b2605375SPeter Avalos }
78b2605375SPeter Avalos
79b2605375SPeter Avalos void
unterminated_comment(const struct ainfo * a)80*ca0c2f89SAntonio Huete Jimenez unterminated_comment(const struct ainfo *a)
81b2605375SPeter Avalos {
82b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", unmatched /*\n",
83*ca0c2f89SAntonio Huete Jimenez myname, a->a_lineno, input_file_name);
84*ca0c2f89SAntonio Huete Jimenez print_pos(a->a_line, a->a_cptr);
85b2605375SPeter Avalos done(1);
86b2605375SPeter Avalos }
87b2605375SPeter Avalos
88b2605375SPeter Avalos void
unterminated_string(const struct ainfo * a)89*ca0c2f89SAntonio Huete Jimenez unterminated_string(const struct ainfo *a)
90b2605375SPeter Avalos {
91b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", unterminated string\n",
92*ca0c2f89SAntonio Huete Jimenez myname, a->a_lineno, input_file_name);
93*ca0c2f89SAntonio Huete Jimenez print_pos(a->a_line, a->a_cptr);
94b2605375SPeter Avalos done(1);
95b2605375SPeter Avalos }
96b2605375SPeter Avalos
97b2605375SPeter Avalos void
unterminated_text(const struct ainfo * a)98*ca0c2f89SAntonio Huete Jimenez unterminated_text(const struct ainfo *a)
99b2605375SPeter Avalos {
100b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", unmatched %%{\n",
101*ca0c2f89SAntonio Huete Jimenez myname, a->a_lineno, input_file_name);
102*ca0c2f89SAntonio Huete Jimenez print_pos(a->a_line, a->a_cptr);
103b2605375SPeter Avalos done(1);
104b2605375SPeter Avalos }
105b2605375SPeter Avalos
106b2605375SPeter Avalos void
unterminated_union(const struct ainfo * a)107*ca0c2f89SAntonio Huete Jimenez unterminated_union(const struct ainfo *a)
108b2605375SPeter Avalos {
109b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", unterminated %%union \
110*ca0c2f89SAntonio Huete Jimenez declaration\n", myname, a->a_lineno, input_file_name);
111*ca0c2f89SAntonio Huete Jimenez print_pos(a->a_line, a->a_cptr);
112b2605375SPeter Avalos done(1);
113b2605375SPeter Avalos }
114b2605375SPeter Avalos
115b2605375SPeter Avalos void
over_unionized(char * u_cptr)116b2605375SPeter Avalos over_unionized(char *u_cptr)
117b2605375SPeter Avalos {
118b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", too many %%union \
119b2605375SPeter Avalos declarations\n", myname, lineno, input_file_name);
120b2605375SPeter Avalos print_pos(line, u_cptr);
121b2605375SPeter Avalos done(1);
122b2605375SPeter Avalos }
123b2605375SPeter Avalos
124b2605375SPeter Avalos void
illegal_tag(int t_lineno,char * t_line,char * t_cptr)125b2605375SPeter Avalos illegal_tag(int t_lineno, char *t_line, char *t_cptr)
126b2605375SPeter Avalos {
127b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", illegal tag\n",
128b2605375SPeter Avalos myname, t_lineno, input_file_name);
129b2605375SPeter Avalos print_pos(t_line, t_cptr);
130b2605375SPeter Avalos done(1);
131b2605375SPeter Avalos }
132b2605375SPeter Avalos
133b2605375SPeter Avalos void
illegal_character(char * c_cptr)134b2605375SPeter Avalos illegal_character(char *c_cptr)
135b2605375SPeter Avalos {
136b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", illegal character\n",
137b2605375SPeter Avalos myname, lineno, input_file_name);
138b2605375SPeter Avalos print_pos(line, c_cptr);
139b2605375SPeter Avalos done(1);
140b2605375SPeter Avalos }
141b2605375SPeter Avalos
142b2605375SPeter Avalos void
used_reserved(char * s)143b2605375SPeter Avalos used_reserved(char *s)
144b2605375SPeter Avalos {
145b2605375SPeter Avalos fprintf(stderr,
146b2605375SPeter Avalos "%s: e - line %d of \"%s\", illegal use of reserved symbol \
147b2605375SPeter Avalos %s\n", myname, lineno, input_file_name, s);
148b2605375SPeter Avalos done(1);
149b2605375SPeter Avalos }
150b2605375SPeter Avalos
151b2605375SPeter Avalos void
tokenized_start(char * s)152b2605375SPeter Avalos tokenized_start(char *s)
153b2605375SPeter Avalos {
154b2605375SPeter Avalos fprintf(stderr,
155b2605375SPeter Avalos "%s: e - line %d of \"%s\", the start symbol %s cannot be \
156b2605375SPeter Avalos declared to be a token\n", myname, lineno, input_file_name, s);
157b2605375SPeter Avalos done(1);
158b2605375SPeter Avalos }
159b2605375SPeter Avalos
160b2605375SPeter Avalos void
retyped_warning(char * s)161b2605375SPeter Avalos retyped_warning(char *s)
162b2605375SPeter Avalos {
163b2605375SPeter Avalos fprintf(stderr, "%s: w - line %d of \"%s\", the type of %s has been \
164b2605375SPeter Avalos redeclared\n", myname, lineno, input_file_name, s);
165b2605375SPeter Avalos }
166b2605375SPeter Avalos
167b2605375SPeter Avalos void
reprec_warning(char * s)168b2605375SPeter Avalos reprec_warning(char *s)
169b2605375SPeter Avalos {
170b2605375SPeter Avalos fprintf(stderr,
171b2605375SPeter Avalos "%s: w - line %d of \"%s\", the precedence of %s has been \
172b2605375SPeter Avalos redeclared\n", myname, lineno, input_file_name, s);
173b2605375SPeter Avalos }
174b2605375SPeter Avalos
175b2605375SPeter Avalos void
revalued_warning(char * s)176b2605375SPeter Avalos revalued_warning(char *s)
177b2605375SPeter Avalos {
178b2605375SPeter Avalos fprintf(stderr, "%s: w - line %d of \"%s\", the value of %s has been \
179b2605375SPeter Avalos redeclared\n", myname, lineno, input_file_name, s);
180b2605375SPeter Avalos }
181b2605375SPeter Avalos
182b2605375SPeter Avalos void
terminal_start(char * s)183b2605375SPeter Avalos terminal_start(char *s)
184b2605375SPeter Avalos {
185b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s is a \
186b2605375SPeter Avalos token\n", myname, lineno, input_file_name, s);
187b2605375SPeter Avalos done(1);
188b2605375SPeter Avalos }
189b2605375SPeter Avalos
190b2605375SPeter Avalos void
restarted_warning(void)191b2605375SPeter Avalos restarted_warning(void)
192b2605375SPeter Avalos {
193b2605375SPeter Avalos fprintf(stderr, "%s: w - line %d of \"%s\", the start symbol has been \
194b2605375SPeter Avalos redeclared\n", myname, lineno, input_file_name);
195b2605375SPeter Avalos }
196b2605375SPeter Avalos
197b2605375SPeter Avalos void
no_grammar(void)198b2605375SPeter Avalos no_grammar(void)
199b2605375SPeter Avalos {
200b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", no grammar has been \
201b2605375SPeter Avalos specified\n", myname, lineno, input_file_name);
202b2605375SPeter Avalos done(1);
203b2605375SPeter Avalos }
204b2605375SPeter Avalos
205b2605375SPeter Avalos void
terminal_lhs(int s_lineno)206b2605375SPeter Avalos terminal_lhs(int s_lineno)
207b2605375SPeter Avalos {
208b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", a token appears on the lhs \
209b2605375SPeter Avalos of a production\n", myname, s_lineno, input_file_name);
210b2605375SPeter Avalos done(1);
211b2605375SPeter Avalos }
212b2605375SPeter Avalos
213b2605375SPeter Avalos void
prec_redeclared(void)214b2605375SPeter Avalos prec_redeclared(void)
215b2605375SPeter Avalos {
216b2605375SPeter Avalos fprintf(stderr, "%s: w - line %d of \"%s\", conflicting %%prec \
217b2605375SPeter Avalos specifiers\n", myname, lineno, input_file_name);
218b2605375SPeter Avalos }
219b2605375SPeter Avalos
220b2605375SPeter Avalos void
unterminated_action(const struct ainfo * a)221*ca0c2f89SAntonio Huete Jimenez unterminated_action(const struct ainfo *a)
222b2605375SPeter Avalos {
223b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", unterminated action\n",
224*ca0c2f89SAntonio Huete Jimenez myname, a->a_lineno, input_file_name);
225*ca0c2f89SAntonio Huete Jimenez print_pos(a->a_line, a->a_cptr);
226b2605375SPeter Avalos done(1);
227b2605375SPeter Avalos }
228b2605375SPeter Avalos
229b2605375SPeter Avalos void
dollar_warning(int a_lineno,int i)230b2605375SPeter Avalos dollar_warning(int a_lineno, int i)
231b2605375SPeter Avalos {
232b2605375SPeter Avalos fprintf(stderr, "%s: w - line %d of \"%s\", $%d references beyond the \
233b2605375SPeter Avalos end of the current rule\n", myname, a_lineno, input_file_name, i);
234b2605375SPeter Avalos }
235b2605375SPeter Avalos
236b2605375SPeter Avalos void
dollar_error(int a_lineno,char * a_line,char * a_cptr)237b2605375SPeter Avalos dollar_error(int a_lineno, char *a_line, char *a_cptr)
238b2605375SPeter Avalos {
239b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", illegal $-name\n",
240b2605375SPeter Avalos myname, a_lineno, input_file_name);
241b2605375SPeter Avalos print_pos(a_line, a_cptr);
242b2605375SPeter Avalos done(1);
243b2605375SPeter Avalos }
244b2605375SPeter Avalos
245b2605375SPeter Avalos void
untyped_lhs(void)246b2605375SPeter Avalos untyped_lhs(void)
247b2605375SPeter Avalos {
248b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", $$ is untyped\n",
249b2605375SPeter Avalos myname, lineno, input_file_name);
250b2605375SPeter Avalos done(1);
251b2605375SPeter Avalos }
252b2605375SPeter Avalos
253b2605375SPeter Avalos void
untyped_rhs(int i,char * s)254b2605375SPeter Avalos untyped_rhs(int i, char *s)
255b2605375SPeter Avalos {
256b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", $%d (%s) is untyped\n",
257b2605375SPeter Avalos myname, lineno, input_file_name, i, s);
258b2605375SPeter Avalos done(1);
259b2605375SPeter Avalos }
260b2605375SPeter Avalos
261b2605375SPeter Avalos void
unknown_rhs(int i)262b2605375SPeter Avalos unknown_rhs(int i)
263b2605375SPeter Avalos {
264b2605375SPeter Avalos fprintf(stderr, "%s: e - line %d of \"%s\", $%d is untyped\n",
265b2605375SPeter Avalos myname, lineno, input_file_name, i);
266b2605375SPeter Avalos done(1);
267b2605375SPeter Avalos }
268b2605375SPeter Avalos
269b2605375SPeter Avalos void
default_action_warning(char * s)270*ca0c2f89SAntonio Huete Jimenez default_action_warning(char *s)
271b2605375SPeter Avalos {
272b2605375SPeter Avalos fprintf(stderr,
273*ca0c2f89SAntonio Huete Jimenez "%s: w - line %d of \"%s\", the default action for %s assigns an \
274*ca0c2f89SAntonio Huete Jimenez undefined value to $$\n",
275*ca0c2f89SAntonio Huete Jimenez myname, lineno, input_file_name, s);
276b2605375SPeter Avalos }
277b2605375SPeter Avalos
278b2605375SPeter Avalos void
undefined_goal(char * s)279b2605375SPeter Avalos undefined_goal(char *s)
280b2605375SPeter Avalos {
281b2605375SPeter Avalos fprintf(stderr, "%s: e - the start symbol %s is undefined\n", myname, s);
282b2605375SPeter Avalos done(1);
283b2605375SPeter Avalos }
284b2605375SPeter Avalos
285b2605375SPeter Avalos void
undefined_symbol_warning(char * s)286b2605375SPeter Avalos undefined_symbol_warning(char *s)
287b2605375SPeter Avalos {
288b2605375SPeter Avalos fprintf(stderr, "%s: w - the symbol %s is undefined\n", myname, s);
289b2605375SPeter Avalos }
290c4d42299SSascha Wildner
291c4d42299SSascha Wildner #if ! defined(YYBTYACC)
292c4d42299SSascha Wildner void
unsupported_flag_warning(const char * flag,const char * details)293c4d42299SSascha Wildner unsupported_flag_warning(const char *flag, const char *details)
294c4d42299SSascha Wildner {
295c4d42299SSascha Wildner fprintf(stderr, "%s: w - %s flag unsupported, %s\n",
296c4d42299SSascha Wildner myname, flag, details);
297c4d42299SSascha Wildner }
298c4d42299SSascha Wildner #endif
299c4d42299SSascha Wildner
300c4d42299SSascha Wildner #if defined(YYBTYACC)
301c4d42299SSascha Wildner void
at_warning(int a_lineno,int i)302c4d42299SSascha Wildner at_warning(int a_lineno, int i)
303c4d42299SSascha Wildner {
304c4d42299SSascha Wildner fprintf(stderr, "%s: w - line %d of \"%s\", @%d references beyond the \
305c4d42299SSascha Wildner end of the current rule\n", myname, a_lineno, input_file_name, i);
306c4d42299SSascha Wildner }
307c4d42299SSascha Wildner
308c4d42299SSascha Wildner void
at_error(int a_lineno,char * a_line,char * a_cptr)309c4d42299SSascha Wildner at_error(int a_lineno, char *a_line, char *a_cptr)
310c4d42299SSascha Wildner {
311c4d42299SSascha Wildner fprintf(stderr,
312c4d42299SSascha Wildner "%s: e - line %d of \"%s\", illegal @$ or @N reference\n",
313c4d42299SSascha Wildner myname, a_lineno, input_file_name);
314c4d42299SSascha Wildner print_pos(a_line, a_cptr);
315c4d42299SSascha Wildner done(1);
316c4d42299SSascha Wildner }
317c4d42299SSascha Wildner
318c4d42299SSascha Wildner void
unterminated_arglist(const struct ainfo * a)319*ca0c2f89SAntonio Huete Jimenez unterminated_arglist(const struct ainfo *a)
320c4d42299SSascha Wildner {
321c4d42299SSascha Wildner fprintf(stderr,
322c4d42299SSascha Wildner "%s: e - line %d of \"%s\", unterminated argument list\n",
323*ca0c2f89SAntonio Huete Jimenez myname, a->a_lineno, input_file_name);
324*ca0c2f89SAntonio Huete Jimenez print_pos(a->a_line, a->a_cptr);
325c4d42299SSascha Wildner done(1);
326c4d42299SSascha Wildner }
327c4d42299SSascha Wildner
328c4d42299SSascha Wildner void
arg_number_disagree_warning(int a_lineno,char * a_name)329c4d42299SSascha Wildner arg_number_disagree_warning(int a_lineno, char *a_name)
330c4d42299SSascha Wildner {
331c4d42299SSascha Wildner fprintf(stderr, "%s: w - line %d of \"%s\", number of arguments of %s "
332c4d42299SSascha Wildner "doesn't agree with previous declaration\n",
333c4d42299SSascha Wildner myname, a_lineno, input_file_name, a_name);
334c4d42299SSascha Wildner }
335c4d42299SSascha Wildner
336c4d42299SSascha Wildner void
bad_formals(void)337c4d42299SSascha Wildner bad_formals(void)
338c4d42299SSascha Wildner {
339c4d42299SSascha Wildner fprintf(stderr, "%s: e - line %d of \"%s\", bad formal argument list\n",
340c4d42299SSascha Wildner myname, lineno, input_file_name);
341c4d42299SSascha Wildner print_pos(line, cptr);
342c4d42299SSascha Wildner done(1);
343c4d42299SSascha Wildner }
344c4d42299SSascha Wildner
345c4d42299SSascha Wildner void
arg_type_disagree_warning(int a_lineno,int i,char * a_name)346c4d42299SSascha Wildner arg_type_disagree_warning(int a_lineno, int i, char *a_name)
347c4d42299SSascha Wildner {
348c4d42299SSascha Wildner fprintf(stderr, "%s: w - line %d of \"%s\", type of argument %d "
349c4d42299SSascha Wildner "to %s doesn't agree with previous declaration\n",
350c4d42299SSascha Wildner myname, a_lineno, input_file_name, i, a_name);
351c4d42299SSascha Wildner }
352c4d42299SSascha Wildner
353c4d42299SSascha Wildner void
unknown_arg_warning(int d_lineno,const char * dlr_opt,const char * d_arg,const char * d_line,const char * d_cptr)354c4d42299SSascha Wildner unknown_arg_warning(int d_lineno, const char *dlr_opt, const char *d_arg, const char
355c4d42299SSascha Wildner *d_line, const char *d_cptr)
356c4d42299SSascha Wildner {
357c4d42299SSascha Wildner fprintf(stderr, "%s: w - line %d of \"%s\", unknown argument %s%s\n",
358c4d42299SSascha Wildner myname, d_lineno, input_file_name, dlr_opt, d_arg);
359c4d42299SSascha Wildner print_pos(d_line, d_cptr);
360c4d42299SSascha Wildner }
361c4d42299SSascha Wildner
362c4d42299SSascha Wildner void
untyped_arg_warning(int a_lineno,const char * dlr_opt,const char * a_name)363c4d42299SSascha Wildner untyped_arg_warning(int a_lineno, const char *dlr_opt, const char *a_name)
364c4d42299SSascha Wildner {
365c4d42299SSascha Wildner fprintf(stderr, "%s: w - line %d of \"%s\", untyped argument %s%s\n",
366c4d42299SSascha Wildner myname, a_lineno, input_file_name, dlr_opt, a_name);
367c4d42299SSascha Wildner }
368c4d42299SSascha Wildner
369c4d42299SSascha Wildner void
wrong_number_args_warning(const char * which,const char * a_name)370c4d42299SSascha Wildner wrong_number_args_warning(const char *which, const char *a_name)
371c4d42299SSascha Wildner {
372c4d42299SSascha Wildner fprintf(stderr,
373c4d42299SSascha Wildner "%s: w - line %d of \"%s\", wrong number of %sarguments for %s\n",
374c4d42299SSascha Wildner myname, lineno, input_file_name, which, a_name);
375c4d42299SSascha Wildner print_pos(line, cptr);
376c4d42299SSascha Wildner }
377c4d42299SSascha Wildner
378c4d42299SSascha Wildner void
wrong_type_for_arg_warning(int i,char * a_name)379c4d42299SSascha Wildner wrong_type_for_arg_warning(int i, char *a_name)
380c4d42299SSascha Wildner {
381c4d42299SSascha Wildner fprintf(stderr,
382c4d42299SSascha Wildner "%s: w - line %d of \"%s\", wrong type for default argument %d to %s\n",
383c4d42299SSascha Wildner myname, lineno, input_file_name, i, a_name);
384c4d42299SSascha Wildner print_pos(line, cptr);
385c4d42299SSascha Wildner }
386c4d42299SSascha Wildner
387c4d42299SSascha Wildner void
start_requires_args(char * a_name)388c4d42299SSascha Wildner start_requires_args(char *a_name)
389c4d42299SSascha Wildner {
390c4d42299SSascha Wildner fprintf(stderr,
391c4d42299SSascha Wildner "%s: w - line %d of \"%s\", start symbol %s requires arguments\n",
392c4d42299SSascha Wildner myname, 0, input_file_name, a_name);
393c4d42299SSascha Wildner
394c4d42299SSascha Wildner }
395c4d42299SSascha Wildner
396c4d42299SSascha Wildner void
destructor_redeclared_warning(const struct ainfo * a)397*ca0c2f89SAntonio Huete Jimenez destructor_redeclared_warning(const struct ainfo *a)
398c4d42299SSascha Wildner {
399c4d42299SSascha Wildner fprintf(stderr, "%s: w - line %d of \"%s\", destructor redeclared\n",
400*ca0c2f89SAntonio Huete Jimenez myname, a->a_lineno, input_file_name);
401*ca0c2f89SAntonio Huete Jimenez print_pos(a->a_line, a->a_cptr);
402c4d42299SSascha Wildner }
403c4d42299SSascha Wildner #endif
404