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 */