xref: /original-bsd/usr.bin/yacc/error.c (revision 50dd0bba)
1 /*
2  * Copyright (c) 1989 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Robert Paul Corbett.
7  *
8  * %sccs.include.redist.c%
9  */
10 
11 #ifndef lint
12 static char sccsid[] = "@(#)error.c	5.3 (Berkeley) 06/01/90";
13 #endif /* not lint */
14 
15 /* routines for printing error messages  */
16 
17 #include "defs.h"
18 
19 
20 fatal(msg)
21 char *msg;
22 {
23     fprintf(stderr, "%s: f - %s\n", myname, msg);
24     done(2);
25 }
26 
27 
28 no_space()
29 {
30     fprintf(stderr, "%s: f - out of space\n", myname);
31     done(2);
32 }
33 
34 
35 open_error(filename)
36 char *filename;
37 {
38     fprintf(stderr, "%s: f - cannot open \"%s\"\n", myname, filename);
39     done(2);
40 }
41 
42 
43 unexpected_EOF()
44 {
45     fprintf(stderr, "%s: e - line %d of \"%s\", unexpected end-of-file\n",
46 	    myname, lineno, input_file_name);
47     done(1);
48 }
49 
50 
51 print_pos(st_line, st_cptr)
52 char *st_line;
53 char *st_cptr;
54 {
55     register char *s;
56 
57     if (st_line == 0) return;
58     for (s = st_line; *s != '\n'; ++s)
59     {
60 	if (isprint(*s) || *s == '\t')
61 	    putc(*s, stderr);
62 	else
63 	    putc('?', stderr);
64     }
65     putc('\n', stderr);
66     for (s = st_line; s < st_cptr; ++s)
67     {
68 	if (*s == '\t')
69 	    putc('\t', stderr);
70 	else
71 	    putc(' ', stderr);
72     }
73     putc('^', stderr);
74     putc('\n', stderr);
75 }
76 
77 
78 syntax_error(st_lineno, st_line, st_cptr)
79 int st_lineno;
80 char *st_line;
81 char *st_cptr;
82 {
83     fprintf(stderr, "%s: e - line %d of \"%s\", syntax error\n",
84 	    myname, st_lineno, input_file_name);
85     print_pos(st_line, st_cptr);
86     done(1);
87 }
88 
89 
90 unterminated_comment(c_lineno, c_line, c_cptr)
91 int c_lineno;
92 char *c_line;
93 char *c_cptr;
94 {
95     fprintf(stderr, "%s: e - line %d of \"%s\", unmatched /*\n",
96 	    myname, c_lineno, input_file_name);
97     print_pos(c_line, c_cptr);
98     done(1);
99 }
100 
101 
102 unterminated_string(s_lineno, s_line, s_cptr)
103 int s_lineno;
104 char *s_line;
105 char *s_cptr;
106 {
107     fprintf(stderr, "%s: e - line %d of \"%s\", unterminated string\n",
108 	    myname, s_lineno, input_file_name);
109     print_pos(s_line, s_cptr);
110     done(1);
111 }
112 
113 
114 unterminated_text(t_lineno, t_line, t_cptr)
115 int t_lineno;
116 char *t_line;
117 char *t_cptr;
118 {
119     fprintf(stderr, "%s: e - line %d of \"%s\", unmatched %%{\n",
120 	    myname, t_lineno, input_file_name);
121     print_pos(t_line, t_cptr);
122     done(1);
123 }
124 
125 
126 unterminated_union(u_lineno, u_line, u_cptr)
127 int u_lineno;
128 char *u_line;
129 char *u_cptr;
130 {
131     fprintf(stderr, "%s: e - line %d of \"%s\", unterminated %%union \
132 declaration\n", myname, u_lineno, input_file_name);
133     print_pos(u_line, u_cptr);
134     done(1);
135 }
136 
137 
138 over_unionized(u_cptr)
139 char *u_cptr;
140 {
141     fprintf(stderr, "%s: e - line %d of \"%s\", too many %%union \
142 declarations\n", myname, lineno, input_file_name);
143     print_pos(line, u_cptr);
144     done(1);
145 }
146 
147 
148 illegal_tag(t_lineno, t_line, t_cptr)
149 int t_lineno;
150 char *t_line;
151 char *t_cptr;
152 {
153     fprintf(stderr, "%s: e - line %d of \"%s\", illegal tag\n",
154 	    myname, t_lineno, input_file_name);
155     print_pos(t_line, t_cptr);
156     done(1);
157 }
158 
159 
160 illegal_character(c_cptr)
161 char *c_cptr;
162 {
163     fprintf(stderr, "%s: e - line %d of \"%s\", illegal character\n",
164 	    myname, lineno, input_file_name);
165     print_pos(line, c_cptr);
166     done(1);
167 }
168 
169 
170 used_reserved(s)
171 char *s;
172 {
173     fprintf(stderr, "%s: e - line %d of \"%s\", illegal use of reserved symbol \
174 %s\n", myname, lineno, input_file_name, s);
175     done(1);
176 }
177 
178 
179 tokenized_start(s)
180 char *s;
181 {
182      fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s cannot be \
183 declared to be a token\n", myname, lineno, input_file_name, s);
184      done(1);
185 }
186 
187 
188 retyped_warning(s)
189 char *s;
190 {
191     fprintf(stderr, "%s: w - line %d of \"%s\", the type of %s has been \
192 redeclared\n", myname, lineno, input_file_name, s);
193 }
194 
195 
196 reprec_warning(s)
197 char *s;
198 {
199     fprintf(stderr, "%s: w - line %d of \"%s\", the precedence of %s has been \
200 redeclared\n", myname, lineno, input_file_name, s);
201 }
202 
203 
204 revalued_warning(s)
205 char *s;
206 {
207     fprintf(stderr, "%s: w - line %d of \"%s\", the value of %s has been \
208 redeclared\n", myname, lineno, input_file_name, s);
209 }
210 
211 
212 terminal_start(s)
213 char *s;
214 {
215     fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s is a \
216 token\n", myname, lineno, input_file_name, s);
217     done(1);
218 }
219 
220 
221 restarted_warning()
222 {
223     fprintf(stderr, "%s: w - line %d of \"%s\", the start symbol has been \
224 redeclared\n", myname, lineno, input_file_name);
225 }
226 
227 
228 no_grammar()
229 {
230     fprintf(stderr, "%s: e - line %d of \"%s\", no grammar has been \
231 specified\n", myname, lineno, input_file_name);
232     done(1);
233 }
234 
235 
236 terminal_lhs(s_lineno)
237 int s_lineno;
238 {
239     fprintf(stderr, "%s: e - line %d of \"%s\", a token appears on the lhs \
240 of a production\n", myname, s_lineno, input_file_name);
241     done(1);
242 }
243 
244 
245 prec_redeclared()
246 {
247     fprintf(stderr, "%s: w - line %d of  \"%s\", conflicting %%prec \
248 specifiers\n", myname, lineno, input_file_name);
249 }
250 
251 
252 unterminated_action(a_lineno, a_line, a_cptr)
253 int a_lineno;
254 char *a_line;
255 char *a_cptr;
256 {
257     fprintf(stderr, "%s: e - line %d of \"%s\", unterminated action\n",
258 	    myname, a_lineno, input_file_name);
259     print_pos(a_line, a_cptr);
260     done(1);
261 }
262 
263 
264 dollar_warning(a_lineno, i)
265 int a_lineno;
266 int i;
267 {
268     fprintf(stderr, "%s: w - line %d of \"%s\", $%d references beyond the \
269 end of the current rule\n", myname, a_lineno, input_file_name, i);
270 }
271 
272 
273 dollar_error(a_lineno, a_line, a_cptr)
274 int a_lineno;
275 char *a_line;
276 char *a_cptr;
277 {
278     fprintf(stderr, "%s: e - line %d of \"%s\", illegal $-name\n",
279 	    myname, a_lineno, input_file_name);
280     print_pos(a_line, a_cptr);
281     done(1);
282 }
283 
284 
285 untyped_lhs()
286 {
287     fprintf(stderr, "%s: e - line %d of \"%s\", $$ is untyped\n",
288 	    myname, lineno, input_file_name);
289     done(1);
290 }
291 
292 
293 untyped_rhs(i, s)
294 int i;
295 char *s;
296 {
297     fprintf(stderr, "%s: e - line %d of \"%s\", $%d (%s) is untyped\n",
298 	    myname, lineno, input_file_name, i, s);
299     done(1);
300 }
301 
302 
303 unknown_rhs(i)
304 int i;
305 {
306     fprintf(stderr, "%s: e - line %d of \"%s\", $%d is untyped\n",
307 	    myname, lineno, input_file_name, i);
308     done(1);
309 }
310 
311 
312 default_action_warning()
313 {
314     fprintf(stderr, "%s: w - line %d of \"%s\", the default action assigns an \
315 undefined value to $$\n", myname, lineno, input_file_name);
316 }
317 
318 
319 undefined_goal(s)
320 char *s;
321 {
322     fprintf(stderr, "%s: e - the start symbol %s is undefined\n", myname, s);
323     done(1);
324 }
325 
326 
327 undefined_symbol_warning(s)
328 char *s;
329 {
330     fprintf(stderr, "%s: w - the symbol %s is undefined\n", myname, s);
331 }
332