1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #ifndef lint
8: static char sccsid[] = "@(#)yyerror.c 5.2 (Berkeley) 5/6/86";
9: #endif not lint
10:
11: #include "whoami.h"
12: #include "0.h"
13: #include "tree_ty.h" /* must be included for yy.h */
14: #include "yy.h"
15:
16: /*
17: * Yerror prints an error
18: * message and then returns
19: * NIL for the tree if needed.
20: * The error is flagged on the
21: * current line which is printed
22: * if the listing is turned off.
23: #ifdef PXP
24: *
25: * As is obvious from the fooling around
26: * with fout below, the Pascal system should
27: * be changed to use the new library "lS".
28: #endif
29: */
30: /*VARARGS*/
31: yerror(s, a1, a2, a3, a4, a5)
32: char *s;
33: char *a1, *a2, *a3, *a4, *a5;
34: {
35: #ifdef PI
36: char buf[256];
37: #endif
38: register int i;
39: static yySerrs;
40: #ifdef PXP
41: int ofout;
42: #endif
43:
44: if (errpfx == 'w' && opt('w') != 0) {
45: errpfx = 'E';
46: return;
47: }
48: /* no continuations allowed here */
49: if (errpfx == ' ')
50: errpfx = 'E';
51: #ifdef PXP
52: flush();
53: ofout = fout[0];
54: fout[0] = errout;
55: #endif
56: yyResume = 0;
57: #ifdef PI
58: geterr((int) s, buf);
59: s = buf;
60: #endif
61: yysync();
62: pchr(errpfx);
63: pchr(' ');
64: for (i = 3; i < yyecol; i++)
65: pchr('-');
66: printf("^--- ");
67: /*
68: if (yyecol > 60)
69: printf("\n\t");
70: */
71: printf(s, a1, a2, a3, a4, a5);
72: pchr('\n');
73: if (errpfx == 'E')
74: #ifdef PI
75: eflg = TRUE, codeoff();
76: #endif
77: #ifdef PXP
78: eflg = TRUE;
79: #endif
80: errpfx = 'E';
81: yySerrs++;
82: if (yySerrs >= MAXSYNERR) {
83: yySerrs = 0;
84: yerror("Too many syntax errors - QUIT");
85: pexit(ERRS);
86: }
87: #ifdef PXP
88: flush();
89: fout[0] = ofout;
90: return (0);
91: #endif
92: }
93:
94: /*
95: * A bracketing error message
96: */
97: brerror(where, what)
98: int where;
99: char *what;
100: {
101:
102: if (where == 0) {
103: line = yyeline;
104: setpfx(' ');
105: error("End matched %s on line %d", what, (char *) where);
106: return;
107: }
108: if (where < 0)
109: where = -where;
110: yerror("Inserted keyword end matching %s on line %d", what, (char *) where);
111: }
Defined functions
yerror
defined in line
31; used 38 times
- in line 84,
110
- in /usr/src/ucb/PORT/pascal/src/hash.c line
156,
195
- in /usr/src/ucb/PORT/pascal/src/pas.y line
531
- in /usr/src/ucb/PORT/pascal/src/string.c line
74
- in /usr/src/ucb/PORT/pascal/src/tree.c line
118,
124
- in /usr/src/ucb/PORT/pascal/src/yylex.c line
125,
145,
164,
186,
194,
205,
218,
239,
261,
267,
302
- in /usr/src/ucb/PORT/pascal/src/yypanic.c line
47,
60,
82,
94,
147,
153
- in /usr/src/ucb/PORT/pascal/src/yyparse.c line
70,
208
- in /usr/src/ucb/PORT/pascal/src/yyrecover.c line
206,
386-388(2),
409,
423,
443,
456,
476-481(2),
516,
523
Defined variables
sccsid
defined in line
8;
never used