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.1 (Berkeley) 6/5/85";
9: #endif not lint
10:
11: /*
12: * pi - Pascal interpreter code translator
13: *
14: * Charles Haley, Bill Joy UCB
15: * Version 1.2 January 1979
16: *
17: *
18: * pxp - Pascal execution profiler
19: *
20: * Bill Joy UCB
21: * Version 1.2 January 1979
22: */
23:
24: #include "whoami.h"
25: #include "0.h"
26: #include "yy.h"
27:
28: /*
29: * Yerror prints an error
30: * message and then returns
31: * NIL for the tree if needed.
32: * The error is flagged on the
33: * current line which is printed
34: * if the listing is turned off.
35: #ifdef PXP
36: *
37: * As is obvious from the fooling around
38: * with fout below, the Pascal system should
39: * be changed to use the new library "lS".
40: #endif
41: */
42: yerror(s, a1, a2, a3, a4, a5)
43: char *s;
44: {
45: #ifdef PI
46: char buf[256];
47: #endif
48: register int i, j;
49: static yySerrs;
50: #ifdef PXP
51: /*
52: int ofout;
53: */
54: #endif
55:
56: if (errpfx == 'w' && opt('w') != 0)
57: return;
58: #ifdef PXP
59: /*
60: flush();
61: ofout = fout[0];
62: fout[0] = errout;
63: */
64: #endif
65: yyResume = 0;
66: #ifdef PI
67: geterr(s, buf);
68: s = buf;
69: #endif
70: yysync();
71: putc(errpfx, stderr);
72: putc(' ', stderr);
73: for (i = 3; i < yyecol; i++)
74: putc('-', stderr);
75: fprintf(stderr, "^--- ");
76: /*
77: if (yyecol > 60)
78: printf("\n\t");
79: */
80: fprintf(stderr, s, a1, a2, a3, a4, a5);
81: putc('\n', stderr);
82: if (errpfx == 'E')
83: #ifdef PI
84: eflg++, cgenflg++;
85: #endif
86: #ifdef PXP
87: eflg++;
88: #endif
89: errpfx = 'E';
90: yySerrs++;
91: if (yySerrs >= MAXSYNERR) {
92: yySerrs = 0;
93: yerror("Too many syntax errors - QUIT");
94: pexit(ERRS);
95: }
96: #ifdef PXP
97: /*
98: flush();
99: fout[0] = ofout;
100: */
101: return (0);
102: #endif
103: }
104:
105: /*
106: * A bracketing error message
107: */
108: brerror(where, what)
109: int where;
110: char *what;
111: {
112:
113: if (where == 0) {
114: line = yyeline;
115: setpfx(' ');
116: error("End matched %s on line %d", what, where);
117: return;
118: }
119: if (where < 0)
120: where = -where;
121: yerror("Inserted keyword end matching %s on line %d", what, where);
122: }
Defined functions
Defined variables
sccsid
defined in line
8;
never used