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[] = "@(#)error.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: #ifdef PXP
29: extern int yyline;
30: extern char errout;
31: #endif
32:
33: char errpfx = 'E';
34: extern int yyline;
35: /*
36: * Panic is called when impossible
37: * (supposedly, anyways) situations
38: * are encountered.
39: #ifdef PI
40: * Panic messages should be short
41: * as they do not go to the message
42: * file.
43: #endif
44: */
45: panic(s)
46: char *s;
47: {
48:
49: #ifdef DEBUG
50: fprintf(stderr, "Snark (%s) line=%d yyline=%d\n", s, line, yyline);
51: #endif
52: #ifdef PXP
53: Perror( "Snark in pxp", s);
54: #endif
55: #ifdef PI
56: Perror( "Snark in pi", s);
57: #endif
58: pexit(DIED);
59: }
60:
61: extern char *errfile;
62: /*
63: * Error is called for
64: * semantic errors and
65: * prints the error and
66: * a line number.
67: */
68: error(a1, a2, a3, a4)
69: {
70: #ifdef PI
71: char buf[256];
72: register int i;
73: #endif
74: #ifdef PXP
75: /*
76: int ofout;
77: */
78: #endif
79:
80: if (errpfx == 'w' && opt('w') != 0) {
81: errpfx == 'E';
82: return;
83: }
84: #ifdef PXP
85: /*
86: flush();
87: ofout = fout[0];
88: fout[0] = errout;
89: */
90: #endif
91: #ifdef PI
92: Enocascade = 0;
93: geterr(a1, buf);
94: a1 = buf;
95: #endif
96: if (line < 0)
97: line = -line;
98: yySsync();
99: yysetfile(filename);
100: #ifdef PI
101: if (errpfx == ' ') {
102: printf(" ");
103: for (i = line; i >= 10; i =/ 10)
104: putchar(' ');
105: printf("... ");
106: } else if (Enoline)
107: printf(" %c - ", errpfx);
108: else
109: #endif
110: fprintf(stderr, "%c %d - ", errpfx, line);
111: fprintf(stderr, a1, a2, a3, a4);
112: if (errpfx == 'E')
113: #ifdef PI
114: eflg++, cgenflg++;
115: #endif
116: #ifdef PXP
117: eflg++;
118: #endif
119: errpfx = 'E';
120: #ifdef PI
121: if (Eholdnl)
122: Eholdnl = 0;
123: else
124: #endif
125: putc('\n', stderr);
126: #ifdef PXP
127: /*
128: flush();
129: fout[0] = ofout;
130: */
131: #endif
132: }
133:
134: #ifdef PI
135: cerror(a1, a2, a3, a4)
136: {
137:
138: if (Enocascade)
139: return;
140: setpfx(' ');
141: error(a1, a2, a3, a4);
142: }
143: #endif
Defined functions
error
defined in line
68; used 3 times
panic
defined in line
45; used 10 times
Defined variables
sccsid
defined in line
8;
never used