Mercurial > repo
comparison interps/c-intercal/src/ick_lose.h @ 996:859f9b4339e6
<Gregor> tar xf egobot.tar.xz
author | HackBot |
---|---|
date | Sun, 09 Dec 2012 19:30:08 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
995:6883f5911eb7 | 996:859f9b4339e6 |
---|---|
1 /* ick_lose.h --- error message strings */ | |
2 | |
3 /* | |
4 * Note: these error message texts, with one exception, are direct from | |
5 * the Princeton compiler (INTERCAL-72) sources (transmitted by Don Woods). | |
6 * The one exception is IE632, which in INTERCAL-72 had the error message | |
7 * PROGRAM ATTEMPTED TO EXIT WITHOUT ERROR MESSAGE | |
8 * ESR's "THE NEXT STACK HAS RUPTURED!..." has been retained on the grounds | |
9 * that it is more obscure and much funnier. For context, find a copy of | |
10 * Joe Haldeman's SF short story "A !Tangled Web", ick_first published in | |
11 * Analog magazine in September 1981 and later anthologized in the author's | |
12 * "Infinite Dreams" (Ace 1985). | |
13 */ | |
14 /* An undecodable statement has been encountered in the course of execution. */ | |
15 #define IE000 "000 %s\n\ | |
16 ON THE WAY TO %d\n" | |
17 /* An expression contains a syntax error. */ | |
18 #define IE017 "017 DO YOU EXPECT ME TO FIGURE THIS OUT?\n\ | |
19 ON THE WAY TO %d\n" | |
20 /* Improper use has been made of statement identifiers. */ | |
21 #define IE079 "079 PROGRAMMER IS INSUFFICIENTLY POLITE\n\ | |
22 ON THE WAY TO %d\n" | |
23 /* Improper use has been made of statement identifiers. */ | |
24 #define IE099 "099 PROGRAMMER IS OVERLY POLITE\n\ | |
25 ON THE WAY TO %d\n" | |
26 /* Program has attempted 80 levels of NEXTing */ | |
27 #define IE123 "123 PROGRAM HAS DISAPPEARED INTO THE BLACK LAGOON\n\ | |
28 ON THE WAY TO %d\n" | |
29 /* Program has attempted to transfer to a non-existent line label */ | |
30 #define IE129 "129 PROGRAM HAS GOTTEN LOST\n\ | |
31 ON THE WAY TO WHO KNOWS WHERE\n" | |
32 /* An ABSTAIN or REINSTATE statement references a non-existent line label */ | |
33 #define IE139 "139 I WASN'T PLANNING TO GO THERE ANYWAY\n\ | |
34 ON THE WAY TO %d\n" | |
35 /* A line label has been multiply defined. */ | |
36 #define IE182 "182 YOU MUST LIKE THIS LABEL A LOT!\n\ | |
37 ON THE WAY TO %d\n" | |
38 /* An invalid line label has been encountered. */ | |
39 #define IE197 "197 SO! 65535 LABELS AREN'T ENOUGH FOR YOU?\n\ | |
40 ON THE WAY TO %d\n" | |
41 /* An expression involves an unidentified variable. */ | |
42 #define IE200 "200 NOTHING VENTURED, NOTHING GAINED\n\ | |
43 ON THE WAY TO %d\n" | |
44 /* An attempt has been made to give an array a dimension of zero. */ | |
45 #define IE240 "240 ERROR HANDLER PRINTED SNIDE REMARK\n\ | |
46 ON THE WAY TO %d\n" | |
47 /* Invalid dimensioning information was supplied | |
48 * in defining or using an array. */ | |
49 #define IE241 "241 VARIABLES MAY NOT BE STORED IN WEST HYPERSPACE\n\ | |
50 ON THE WAY TO %d\n" | |
51 /* A 32-bit value has been assigned to a 16-bit variable. */ | |
52 #define IE275 "275 DON'T BYTE OFF MORE THAN YOU CAN CHEW\n\ | |
53 ON THE WAY TO %d\n" | |
54 /* A retrieval has been attempted for an unSTASHed value. */ | |
55 #define IE436 "436 THROW STICK BEFORE RETRIEVING!\n\ | |
56 ON THE WAY TO %d\n" | |
57 /* A WRITE IN statement or interleave ($) operation | |
58 * has produced value requiring over 32 bits to represent. */ | |
59 #define IE533 "533 YOU WANT MAYBE WE SHOULD IMPLEMENT 64-BIT VARIABLES?\n\ | |
60 ON THE WAY TO %d\n" | |
61 /* Insufficient data. (raised by reading past EOF) */ | |
62 #define IE562 "562 I DO NOT COMPUTE\n\ | |
63 ON THE WAY TO %d\n" | |
64 /* Input data is invalid. */ | |
65 #define IE579 "579 WHAT BASE AND/OR LANGUAGE INCLUDES %s?\n\ | |
66 ON THE WAY TO %d\n" | |
67 /* The expression of a RESUME statement evaluated to #0. */ | |
68 #define IE621 "621 ERROR TYPE 621 ENCOUNTERED\n\ | |
69 ON THE WAY TO %d\n" | |
70 /* Program execution terminated via a RESUME statement instead of GIVE UP. */ | |
71 #define IE632 "632 THE NEXT STACK RUPTURES. ALL DIE. OH, THE EMBARRASSMENT!\n\ | |
72 ON THE WAY TO %d\n" | |
73 /* Execution has passed beyond the last statement of the program. */ | |
74 #define IE633 "633 PROGRAM FELL OFF THE EDGE\n\ | |
75 ON THE WAY TO THE NEW WORLD\n" | |
76 /* A compiler error has occurred (see section 8.1). */ | |
77 #define IE774 "774 RANDOM COMPILER BUG\n\ | |
78 ON THE WAY TO %d\n" | |
79 /* An unexplainable compiler error has occurred (see J. Lyon or D. Woods). */ | |
80 #define IE778 "778 UNEXPLAINED COMPILER BUG\n\ | |
81 ON THE WAY TO %d\n" | |
82 | |
83 /* | |
84 * These errors are unique to C-INTERCAL. | |
85 */ | |
86 /* You tried to use a C-INTERCAL extension with the `ick_traditional' flag on */ | |
87 #define IE111 "111 COMMUNIST PLOT DETECTED, COMPILER IS SUICIDING\n\ | |
88 ON THE WAY TO %d\n" | |
89 /* Cannot find the magically included system library */ | |
90 #define IE127 "127 SAYING 'ABRACADABRA' WITHOUT A MAGIC WAND WON'T DO YOU ANY GOOD\n\ | |
91 ON THE WAY TO THE CLOSET\n" | |
92 /* Out of stash space */ | |
93 #define IE222 "222 BUMMER, DUDE!\n\ | |
94 ON THE WAY TO %d\n" | |
95 /* (AIS) Out of memory during I/O */ | |
96 #define IE252 "252 I'VE FORGOTTEN WHAT I WAS ABOUT TO SAY\n\ | |
97 ON THE WAY TO %d\n" | |
98 /* (AIS) Can't reverse an expression in an assignment. This is the | |
99 same error number as in CLC-INTERCAL, but the message is different. */ | |
100 #define IE277 "277 YOU CAN ONLY DISTORT THE LAWS OF MATHEMATICS SO FAR\n\ | |
101 ON THE WAY TO %d\n" | |
102 /* (AIS) The spark/ears nesting is too deep. */ | |
103 #define IE281 "281 THAT MUCH QUOTATION AMOUNTS TO PLAGIARISM\n\ | |
104 ON THE WAY TO %d\n" | |
105 /* Too many variables. */ | |
106 #define IE333 "333 YOU CAN'T HAVE EVERYTHING, WHERE WOULD YOU PUT IT?\n\ | |
107 ON THE WAY TO %d\n" | |
108 /* Out of memory during compilation. */ | |
109 #define IE345 "345 THAT'S TOO COMPLEX FOR ME TO GRASP\n\ | |
110 ON THE WAY TO SOMEWHERE\n" | |
111 /* (AIS, from the suggestion by Malcom Ryan) | |
112 GO BACK or GO AHEAD was executed without a choicepoint. */ | |
113 #define IE404 "404 I'M ALL OUT OF CHOICES!\n\ | |
114 ON THE WAY TO %d\n" | |
115 /* (AIS) WHILE, MAYBE, GO BACK, or GO AHEAD used without the -m option. */ | |
116 #define IE405 "405 PROGRAM REJECTED FOR MENTAL HEALTH REASONS\n\ | |
117 ON THE WAY TO %d\n" | |
118 /* A COME FROM statement references a non-existent line label. */ | |
119 #define IE444 "444 IT CAME FROM BEYOND SPACE\n\ | |
120 ON THE WAY TO %d\n" | |
121 /* (AIS) We just buffer-overflowed. (Detecting this /before/ the overflow | |
122 happens is probably more secure, but harder and less fun. As long as we | |
123 don't return from any functions, it's probably safe in theory, but don't | |
124 rely on this. */ | |
125 #define IE553 "553 BETTER LATE THAN NEVER\n\ | |
126 ON THE WAY TO %d\n" | |
127 /* More than one COME FROM references the same label. */ | |
128 #define IE555 "555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n\ | |
129 ON THE WAY TO %d\n" | |
130 /* Too many source lines, or too many input files, or source line is | |
131 too long. */ | |
132 #define IE666 "666 COMPILER HAS INDIGESTION\n\ | |
133 ON THE WAY TO %d\n" | |
134 /* No such source file. */ | |
135 #define IE777 "777 A SOURCE IS A SOURCE, OF COURSE, OF COURSE\n\ | |
136 ON THE WAY TO %d\n" | |
137 /* Can't open C output file */ | |
138 #define IE888 "888 I HAVE NO FILE AND I MUST SCREAM\n\ | |
139 ON THE WAY TO %d\n" | |
140 /* Can't open C skeleton file. */ | |
141 #define IE999 "999 NO SKELETON IN MY CLOSET, WOE IS ME!\n\ | |
142 ON THE WAY TO %d\n" | |
143 /* Source file name with invalid extension (use .i or .[3-7]i). */ | |
144 #define IE998 "998 EXCUSE ME,\n\ | |
145 YOU MUST HAVE ME CONFUSED WITH SOME OTHER COMPILER\n" | |
146 /* (AIS) File used of a type for which the required libraries aren't | |
147 available. */ | |
148 #define IE899 "899 HELLO?\n\ | |
149 CAN ANYONE GIVE ME A HAND HERE?\n" | |
150 /* Illegal possession of a controlled unary operator. */ | |
151 #define IE997 "997 ILLEGAL POSSESSION OF A CONTROLLED UNARY OPERATOR.\n\ | |
152 ON THE WAY TO %d\n" | |
153 /* (AIS) Command found after TRY AGAIN. */ | |
154 #define IE993 "993 I GAVE UP LONG AGO\n\ | |
155 ON THE WAY TO %d\n" | |
156 /* (AIS) Memory allocation failure during multithreading */ | |
157 #define IE991 "991 YOU HAVE TOO MUCH ROPE TO HANG YOURSELF\n\ | |
158 ON THE WAY TO %d\n" | |
159 /* (AIS) Unimplemented feature used. This should never come up, hopefully. */ | |
160 #define IE995 "995 DO YOU REALLY EXPECT ME TO HAVE IMPLEMENTED THAT?\n\ | |
161 ON THE WAY TO %d\n" | |
162 /* | |
163 * AIS: These errors are specific to PIC-INTERCAL | |
164 */ | |
165 /* (AIS) Attempted to use an unsupported language feature. */ | |
166 #define IE256 "256 THAT'S TOO HARD FOR MY TINY BRAIN\n\ | |
167 ON THE WAY TO %d\n" | |
168 | |
169 /* (AIS) Attempted to use a PIC feature in a non-PIC program. */ | |
170 #define IE652 "652 HOW DARE YOU INSULT ME!\n\ | |
171 ON THE WAY TO %d\n" | |
172 | |
173 /* | |
174 * AIS: These errors are generated by the yuk debugger | |
175 */ | |
176 /* (AIS) fgets' buffer overflowed on debugger comand input. */ | |
177 #define IE810 "810 ARE ONE-CHARACTER COMMANDS TOO SHORT FOR YOU?\n\ | |
178 ON THE WAY TO %d\n" | |
179 | |
180 /* (AIS) Too many breakpoints. */ | |
181 #define IE811 "811 PROGRAM IS TOO BADLY BROKEN TO RUN\n\ | |
182 ON THE WAY TO %d\n" | |
183 | |
184 /* | |
185 * (AIS) Warnings produced by -l. | |
186 */ | |
187 | |
188 /* (AIS) Non-INTERCAL-72 identifier used. */ | |
189 #define W112 "112 THAT RELIES ON THE NEW WORLD ORDER\n\ | |
190 ON THE WAY TO %d\n" | |
191 | |
192 /* (AIS) That stupid idiom in syslib was used. */ | |
193 #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\ | |
194 ON THE WAY TO %d\n" | |
195 | |
196 /* (AIS) Possibly nonportable unary operator. */ | |
197 #define W534 "534 KEEP LOOKING AT THE TOP BIT\n\ | |
198 ON THE WAY TO %d\n" | |
199 | |
200 /* (AIS) Expression still contains INTERCAL operators after | |
201 optimization. Only in binary, because this nearly always | |
202 happens in the higher bases. Syslib causes quite a lot of | |
203 these. This warning is fine on INTERCAL-like lines, but | |
204 flags a mistake on lines that are meant to be translations | |
205 of C. */ | |
206 #define W018 "018 THAT WAS MEANT TO BE A JOKE\n\ | |
207 ON THE WAY TO %d\n" | |
208 | |
209 /* (AIS) Possible misplaced unary operator. At the moment, ick -l cannot | |
210 detect this condition (so it never comes up). It's meant to detect | |
211 expressions like '?"?.1~#256"$#2'~#3 (from numio.i); in this expression, | |
212 the second what has no effect (it changes only the msb of the immediately | |
213 surrounding expression, which is eventually filtered out by the select | |
214 against #3). But detecting this would probably require code that could | |
215 check which bits of a result were going to be used elsewhere in an | |
216 expression, which is something I haven't written yet (but would make | |
217 a decent optimize_pass3). */ | |
218 #define W016 "016 DON'T TYPE THAT SO HASTILY\n\ | |
219 ON THE WAY TO %d\n" | |
220 | |
221 /* (AIS) Possibly overflowing assignment or ick_mingle. Syslib causes some of | |
222 these too, in complicated situations where the bugcatcher can't figure | |
223 out what's happening, and also in a few blatant statements in the mould | |
224 of DO .3 <- :3, which are quite clearly possible overflows. Strangely | |
225 enough, there's a commented-out section of code in feh.c that suggests | |
226 that someone tried to make this an error (using a more general check | |
227 which would have caught more correct code involving GETS, but none | |
228 involving $). As a middle ground, I've made it an -l warning. */ | |
229 #define W276 "276 YOU CAN'T EXPECT ME TO CHECK BACK THAT FAR\n\ | |
230 ON THE WAY TO %d\n" | |
231 | |
232 /* (AIS) A line will inevitably cause an expression-reversal failure. */ | |
233 #define W278 "278 FROM A CONTRADICTION, ANYTHING FOLLOWS\n\ | |
234 ON THE WAY TO A HUGE DISASTER\n" | |
235 | |
236 /* (AIS) The two following warnings are both compile-time traps for | |
237 near-certain runtime errors. As such, they have similar numbers | |
238 and similar messages. In fact, they're a shameless ripoff of the | |
239 originals, but should serve as a reminder for anyone aware of the | |
240 original messages. */ | |
241 /* (AIS) Dimension given for an ick_array will come out as #0. */ | |
242 #define W239 "239 WARNING HANDLER PRINTED SNIDE REMARK\n\ | |
243 ON THE WAY TO %d\n" | |
244 | |
245 /* (AIS) RESUME argument will come out as #0. */ | |
246 #define W622 "622 WARNING TYPE 622 ENCOUNTERED\n\ | |
247 ON THE WAY TO %d\n" | |
248 | |
249 extern int ick_lineno; | |
250 | |
251 extern void /*@noreturn@*/ ick_lose(const char *m, int n, /*@null@*/ const char *s) | |
252 #ifdef __GNUC__ | |
253 __attribute__ ((noreturn)) | |
254 #endif | |
255 ; | |
256 | |
257 extern void ick_lwarn(const char *m, int n, /*@null@*/ const char *s); | |
258 | |
259 /* ick_lose.h ends here */ |