2 * Copyright (c) 1989 The Regents of the University of California.
5 * This code is derived from software contributed to Berkeley by
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed by the University of
19 * California, Berkeley and its contributors.
20 * 4. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * @(#)error.c 5.3 (Berkeley) 6/1/90
37 * $FreeBSD: src/usr.bin/yacc/error.c,v 1.7 1999/08/28 01:07:59 peter Exp $
38 * $DragonFly: src/usr.bin/yacc/error.c,v 1.2 2003/06/17 04:29:34 dillon Exp $
41 /* routines for printing error messages */
45 static void print_pos __P((char *, char *));
59 warnx("f - out of space");
68 warnx("f - cannot open \"%s\"", filename);
76 warnx("e - line %d of \"%s\", unexpected end-of-file",
77 lineno, input_file_name);
83 print_pos(st_line, st_cptr)
89 if (st_line == 0) return;
90 for (s = st_line; *s != '\n'; ++s)
92 if (isprint(*s) || *s == '\t')
98 for (s = st_line; s < st_cptr; ++s)
111 syntax_error(st_lineno, st_line, st_cptr)
116 warnx("e - line %d of \"%s\", syntax error",
117 st_lineno, input_file_name);
118 print_pos(st_line, st_cptr);
124 unterminated_comment(c_lineno, c_line, c_cptr)
129 warnx("e - line %d of \"%s\", unmatched /*",
130 c_lineno, input_file_name);
131 print_pos(c_line, c_cptr);
137 unterminated_string(s_lineno, s_line, s_cptr)
142 warnx("e - line %d of \"%s\", unterminated string",
143 s_lineno, input_file_name);
144 print_pos(s_line, s_cptr);
150 unterminated_text(t_lineno, t_line, t_cptr)
155 warnx("e - line %d of \"%s\", unmatched %%{",
156 t_lineno, input_file_name);
157 print_pos(t_line, t_cptr);
163 unterminated_union(u_lineno, u_line, u_cptr)
168 warnx("e - line %d of \"%s\", unterminated %%union declaration",
169 u_lineno, input_file_name);
170 print_pos(u_line, u_cptr);
176 over_unionized(u_cptr)
179 warnx("e - line %d of \"%s\", too many %%union declarations",
180 lineno, input_file_name);
181 print_pos(line, u_cptr);
187 illegal_tag(t_lineno, t_line, t_cptr)
192 warnx("e - line %d of \"%s\", illegal tag", t_lineno, input_file_name);
193 print_pos(t_line, t_cptr);
199 illegal_character(c_cptr)
202 warnx("e - line %d of \"%s\", illegal character", lineno, input_file_name);
203 print_pos(line, c_cptr);
212 warnx("e - line %d of \"%s\", illegal use of reserved symbol %s",
213 lineno, input_file_name, s);
222 warnx("e - line %d of \"%s\", the start symbol %s cannot be \
223 declared to be a token", lineno, input_file_name, s);
232 warnx("w - line %d of \"%s\", the type of %s has been redeclared",
233 lineno, input_file_name, s);
241 warnx("w - line %d of \"%s\", the precedence of %s has been redeclared",
242 lineno, input_file_name, s);
250 warnx("w - line %d of \"%s\", the value of %s has been redeclared",
251 lineno, input_file_name, s);
259 warnx("e - line %d of \"%s\", the start symbol %s is a token",
260 lineno, input_file_name, s);
268 warnx("w - line %d of \"%s\", the start symbol has been redeclared",
269 lineno, input_file_name);
276 warnx("e - line %d of \"%s\", no grammar has been specified",
277 lineno, input_file_name);
283 terminal_lhs(s_lineno)
286 warnx("e - line %d of \"%s\", a token appears on the lhs of a production",
287 s_lineno, input_file_name);
295 warnx("w - line %d of \"%s\", conflicting %%prec specifiers",
296 lineno, input_file_name);
301 unterminated_action(a_lineno, a_line, a_cptr)
306 warnx("e - line %d of \"%s\", unterminated action",
307 a_lineno, input_file_name);
308 print_pos(a_line, a_cptr);
314 dollar_warning(a_lineno, i)
318 warnx("w - line %d of \"%s\", $%d references beyond the \
319 end of the current rule", a_lineno, input_file_name, i);
324 dollar_error(a_lineno, a_line, a_cptr)
329 warnx("e - line %d of \"%s\", illegal $-name", a_lineno, input_file_name);
330 print_pos(a_line, a_cptr);
338 warnx("e - line %d of \"%s\", $$ is untyped", lineno, input_file_name);
348 warnx("e - line %d of \"%s\", $%d (%s) is untyped",
349 lineno, input_file_name, i, s);
358 warnx("e - line %d of \"%s\", $%d is untyped", lineno, input_file_name, i);
364 default_action_warning()
366 warnx("w - line %d of \"%s\", the default action assigns an \
367 undefined value to $$", lineno, input_file_name);
375 warnx("e - the start symbol %s is undefined", s);
381 undefined_symbol_warning(s)
384 warnx("w - the symbol %s is undefined", s);