|
|
1.1 root 1: /* Copyright (c) 1979 Regents of the University of California */
2: /*
3: * pi - Pascal interpreter code translator
4: *
5: * Charles Haley, Bill Joy UCB
6: * Version 1.2 January 1979
7: *
8: *
9: * pxp - Pascal execution profiler
10: *
11: * Bill Joy UCB
12: * Version 1.2 January 1979
13: */
14:
15: #include "0.h"
16: #include "yy.h"
17:
18: #ifdef PXP
19: extern int yyline;
20: extern char errout;
21: #endif
22:
23: char errpfx 'E';
24: extern int yyline;
25: /*
26: * Panic is called when impossible
27: * (supposedly, anyways) situations
28: * are encountered.
29: #ifdef PI
30: * Panic messages should be short
31: * as they do not go to the message
32: * file.
33: #endif
34: */
35: panic(s)
36: char *s;
37: {
38:
39: #ifdef DEBUG
40: fprintf(stderr, "Snark (%s) line=%d yyline=%d\n", s, line, yyline);
41: #endif
42: #ifdef PXP
43: Perror( "Snark in pxp", s);
44: #endif
45: #ifdef PI
46: Perror( "Snark in pi", s);
47: #endif
48: pexit(DIED);
49: }
50:
51: extern char *errfile;
52: /*
53: * Error is called for
54: * semantic errors and
55: * prints the error and
56: * a line number.
57: */
58: error(a1, a2, a3, a4)
59: {
60: #ifdef PI
61: char buf[256];
62: register int i;
63: #endif
64: #ifdef PXP
65: /*
66: int ofout;
67: */
68: #endif
69:
70: if (errpfx == 'w' && opt('w') != 0)
71: return;
72: #ifdef PXP
73: /*
74: flush();
75: ofout = fout[0];
76: fout[0] = errout;
77: */
78: #endif
79: #ifdef PI
80: Enocascade = 0;
81: geterr(a1, buf);
82: a1 = buf;
83: #endif
84: if (line < 0)
85: line = -line;
86: yySsync();
87: yysetfile(filename);
88: #ifdef PI
89: if (errpfx == ' ') {
90: printf(" ");
91: for (i = line; i >= 10; i =/ 10)
92: putchar(' ');
93: printf("... ");
94: } else if (Enoline)
95: printf(" %c - ", errpfx);
96: else
97: #endif
98: fprintf(stderr, "%c %d - ", errpfx, line);
99: fprintf(stderr, a1, a2, a3, a4);
100: if (errpfx == 'E')
101: #ifdef PI
102: eflg++, cgenflg++;
103: #endif
104: #ifdef PXP
105: eflg++;
106: #endif
107: errpfx = 'E';
108: #ifdef PI
109: if (Eholdnl)
110: Eholdnl = 0;
111: else
112: #endif
113: putc('\n', stderr);
114: #ifdef PXP
115: /*
116: flush();
117: fout[0] = ofout;
118: */
119: #endif
120: }
121:
122: #ifdef PI
123: cerror(a1, a2, a3, a4)
124: {
125:
126: if (Enocascade)
127: return;
128: setpfx(' ');
129: error(a1, a2, a3, a4);
130: }
131: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.