Mercurial > repo
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/interps/c-intercal/src/ick_lose.h Sun Dec 09 19:30:08 2012 +0000 @@ -0,0 +1,259 @@ +/* ick_lose.h --- error message strings */ + +/* + * Note: these error message texts, with one exception, are direct from + * the Princeton compiler (INTERCAL-72) sources (transmitted by Don Woods). + * The one exception is IE632, which in INTERCAL-72 had the error message + * PROGRAM ATTEMPTED TO EXIT WITHOUT ERROR MESSAGE + * ESR's "THE NEXT STACK HAS RUPTURED!..." has been retained on the grounds + * that it is more obscure and much funnier. For context, find a copy of + * Joe Haldeman's SF short story "A !Tangled Web", ick_first published in + * Analog magazine in September 1981 and later anthologized in the author's + * "Infinite Dreams" (Ace 1985). + */ +/* An undecodable statement has been encountered in the course of execution. */ +#define IE000 "000 %s\n\ + ON THE WAY TO %d\n" +/* An expression contains a syntax error. */ +#define IE017 "017 DO YOU EXPECT ME TO FIGURE THIS OUT?\n\ + ON THE WAY TO %d\n" +/* Improper use has been made of statement identifiers. */ +#define IE079 "079 PROGRAMMER IS INSUFFICIENTLY POLITE\n\ + ON THE WAY TO %d\n" +/* Improper use has been made of statement identifiers. */ +#define IE099 "099 PROGRAMMER IS OVERLY POLITE\n\ + ON THE WAY TO %d\n" +/* Program has attempted 80 levels of NEXTing */ +#define IE123 "123 PROGRAM HAS DISAPPEARED INTO THE BLACK LAGOON\n\ + ON THE WAY TO %d\n" +/* Program has attempted to transfer to a non-existent line label */ +#define IE129 "129 PROGRAM HAS GOTTEN LOST\n\ + ON THE WAY TO WHO KNOWS WHERE\n" +/* An ABSTAIN or REINSTATE statement references a non-existent line label */ +#define IE139 "139 I WASN'T PLANNING TO GO THERE ANYWAY\n\ + ON THE WAY TO %d\n" +/* A line label has been multiply defined. */ +#define IE182 "182 YOU MUST LIKE THIS LABEL A LOT!\n\ + ON THE WAY TO %d\n" +/* An invalid line label has been encountered. */ +#define IE197 "197 SO! 65535 LABELS AREN'T ENOUGH FOR YOU?\n\ + ON THE WAY TO %d\n" +/* An expression involves an unidentified variable. */ +#define IE200 "200 NOTHING VENTURED, NOTHING GAINED\n\ + ON THE WAY TO %d\n" +/* An attempt has been made to give an array a dimension of zero. */ +#define IE240 "240 ERROR HANDLER PRINTED SNIDE REMARK\n\ + ON THE WAY TO %d\n" +/* Invalid dimensioning information was supplied + * in defining or using an array. */ +#define IE241 "241 VARIABLES MAY NOT BE STORED IN WEST HYPERSPACE\n\ + ON THE WAY TO %d\n" +/* A 32-bit value has been assigned to a 16-bit variable. */ +#define IE275 "275 DON'T BYTE OFF MORE THAN YOU CAN CHEW\n\ + ON THE WAY TO %d\n" +/* A retrieval has been attempted for an unSTASHed value. */ +#define IE436 "436 THROW STICK BEFORE RETRIEVING!\n\ + ON THE WAY TO %d\n" +/* A WRITE IN statement or interleave ($) operation + * has produced value requiring over 32 bits to represent. */ +#define IE533 "533 YOU WANT MAYBE WE SHOULD IMPLEMENT 64-BIT VARIABLES?\n\ + ON THE WAY TO %d\n" +/* Insufficient data. (raised by reading past EOF) */ +#define IE562 "562 I DO NOT COMPUTE\n\ + ON THE WAY TO %d\n" +/* Input data is invalid. */ +#define IE579 "579 WHAT BASE AND/OR LANGUAGE INCLUDES %s?\n\ + ON THE WAY TO %d\n" +/* The expression of a RESUME statement evaluated to #0. */ +#define IE621 "621 ERROR TYPE 621 ENCOUNTERED\n\ + ON THE WAY TO %d\n" +/* Program execution terminated via a RESUME statement instead of GIVE UP. */ +#define IE632 "632 THE NEXT STACK RUPTURES. ALL DIE. OH, THE EMBARRASSMENT!\n\ + ON THE WAY TO %d\n" +/* Execution has passed beyond the last statement of the program. */ +#define IE633 "633 PROGRAM FELL OFF THE EDGE\n\ + ON THE WAY TO THE NEW WORLD\n" +/* A compiler error has occurred (see section 8.1). */ +#define IE774 "774 RANDOM COMPILER BUG\n\ + ON THE WAY TO %d\n" +/* An unexplainable compiler error has occurred (see J. Lyon or D. Woods). */ +#define IE778 "778 UNEXPLAINED COMPILER BUG\n\ + ON THE WAY TO %d\n" + +/* + * These errors are unique to C-INTERCAL. + */ +/* You tried to use a C-INTERCAL extension with the `ick_traditional' flag on */ +#define IE111 "111 COMMUNIST PLOT DETECTED, COMPILER IS SUICIDING\n\ + ON THE WAY TO %d\n" +/* Cannot find the magically included system library */ +#define IE127 "127 SAYING 'ABRACADABRA' WITHOUT A MAGIC WAND WON'T DO YOU ANY GOOD\n\ + ON THE WAY TO THE CLOSET\n" +/* Out of stash space */ +#define IE222 "222 BUMMER, DUDE!\n\ + ON THE WAY TO %d\n" +/* (AIS) Out of memory during I/O */ +#define IE252 "252 I'VE FORGOTTEN WHAT I WAS ABOUT TO SAY\n\ + ON THE WAY TO %d\n" +/* (AIS) Can't reverse an expression in an assignment. This is the + same error number as in CLC-INTERCAL, but the message is different. */ +#define IE277 "277 YOU CAN ONLY DISTORT THE LAWS OF MATHEMATICS SO FAR\n\ + ON THE WAY TO %d\n" +/* (AIS) The spark/ears nesting is too deep. */ +#define IE281 "281 THAT MUCH QUOTATION AMOUNTS TO PLAGIARISM\n\ + ON THE WAY TO %d\n" +/* Too many variables. */ +#define IE333 "333 YOU CAN'T HAVE EVERYTHING, WHERE WOULD YOU PUT IT?\n\ + ON THE WAY TO %d\n" +/* Out of memory during compilation. */ +#define IE345 "345 THAT'S TOO COMPLEX FOR ME TO GRASP\n\ + ON THE WAY TO SOMEWHERE\n" +/* (AIS, from the suggestion by Malcom Ryan) + GO BACK or GO AHEAD was executed without a choicepoint. */ +#define IE404 "404 I'M ALL OUT OF CHOICES!\n\ + ON THE WAY TO %d\n" +/* (AIS) WHILE, MAYBE, GO BACK, or GO AHEAD used without the -m option. */ +#define IE405 "405 PROGRAM REJECTED FOR MENTAL HEALTH REASONS\n\ + ON THE WAY TO %d\n" +/* A COME FROM statement references a non-existent line label. */ +#define IE444 "444 IT CAME FROM BEYOND SPACE\n\ + ON THE WAY TO %d\n" +/* (AIS) We just buffer-overflowed. (Detecting this /before/ the overflow + happens is probably more secure, but harder and less fun. As long as we + don't return from any functions, it's probably safe in theory, but don't + rely on this. */ +#define IE553 "553 BETTER LATE THAN NEVER\n\ + ON THE WAY TO %d\n" +/* More than one COME FROM references the same label. */ +#define IE555 "555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n\ + ON THE WAY TO %d\n" +/* Too many source lines, or too many input files, or source line is + too long. */ +#define IE666 "666 COMPILER HAS INDIGESTION\n\ + ON THE WAY TO %d\n" +/* No such source file. */ +#define IE777 "777 A SOURCE IS A SOURCE, OF COURSE, OF COURSE\n\ + ON THE WAY TO %d\n" +/* Can't open C output file */ +#define IE888 "888 I HAVE NO FILE AND I MUST SCREAM\n\ + ON THE WAY TO %d\n" +/* Can't open C skeleton file. */ +#define IE999 "999 NO SKELETON IN MY CLOSET, WOE IS ME!\n\ + ON THE WAY TO %d\n" +/* Source file name with invalid extension (use .i or .[3-7]i). */ +#define IE998 "998 EXCUSE ME,\n\ + YOU MUST HAVE ME CONFUSED WITH SOME OTHER COMPILER\n" +/* (AIS) File used of a type for which the required libraries aren't + available. */ +#define IE899 "899 HELLO?\n\ + CAN ANYONE GIVE ME A HAND HERE?\n" +/* Illegal possession of a controlled unary operator. */ +#define IE997 "997 ILLEGAL POSSESSION OF A CONTROLLED UNARY OPERATOR.\n\ + ON THE WAY TO %d\n" +/* (AIS) Command found after TRY AGAIN. */ +#define IE993 "993 I GAVE UP LONG AGO\n\ + ON THE WAY TO %d\n" +/* (AIS) Memory allocation failure during multithreading */ +#define IE991 "991 YOU HAVE TOO MUCH ROPE TO HANG YOURSELF\n\ + ON THE WAY TO %d\n" +/* (AIS) Unimplemented feature used. This should never come up, hopefully. */ +#define IE995 "995 DO YOU REALLY EXPECT ME TO HAVE IMPLEMENTED THAT?\n\ + ON THE WAY TO %d\n" +/* + * AIS: These errors are specific to PIC-INTERCAL + */ +/* (AIS) Attempted to use an unsupported language feature. */ +#define IE256 "256 THAT'S TOO HARD FOR MY TINY BRAIN\n\ + ON THE WAY TO %d\n" + +/* (AIS) Attempted to use a PIC feature in a non-PIC program. */ +#define IE652 "652 HOW DARE YOU INSULT ME!\n\ + ON THE WAY TO %d\n" + +/* + * AIS: These errors are generated by the yuk debugger + */ +/* (AIS) fgets' buffer overflowed on debugger comand input. */ +#define IE810 "810 ARE ONE-CHARACTER COMMANDS TOO SHORT FOR YOU?\n\ + ON THE WAY TO %d\n" + +/* (AIS) Too many breakpoints. */ +#define IE811 "811 PROGRAM IS TOO BADLY BROKEN TO RUN\n\ + ON THE WAY TO %d\n" + +/* + * (AIS) Warnings produced by -l. + */ + +/* (AIS) Non-INTERCAL-72 identifier used. */ +#define W112 "112 THAT RELIES ON THE NEW WORLD ORDER\n\ + ON THE WAY TO %d\n" + +/* (AIS) That stupid idiom in syslib was used. */ +#define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\ + ON THE WAY TO %d\n" + +/* (AIS) Possibly nonportable unary operator. */ +#define W534 "534 KEEP LOOKING AT THE TOP BIT\n\ + ON THE WAY TO %d\n" + +/* (AIS) Expression still contains INTERCAL operators after + optimization. Only in binary, because this nearly always + happens in the higher bases. Syslib causes quite a lot of + these. This warning is fine on INTERCAL-like lines, but + flags a mistake on lines that are meant to be translations + of C. */ +#define W018 "018 THAT WAS MEANT TO BE A JOKE\n\ + ON THE WAY TO %d\n" + +/* (AIS) Possible misplaced unary operator. At the moment, ick -l cannot + detect this condition (so it never comes up). It's meant to detect + expressions like '?"?.1~#256"$#2'~#3 (from numio.i); in this expression, + the second what has no effect (it changes only the msb of the immediately + surrounding expression, which is eventually filtered out by the select + against #3). But detecting this would probably require code that could + check which bits of a result were going to be used elsewhere in an + expression, which is something I haven't written yet (but would make + a decent optimize_pass3). */ +#define W016 "016 DON'T TYPE THAT SO HASTILY\n\ + ON THE WAY TO %d\n" + +/* (AIS) Possibly overflowing assignment or ick_mingle. Syslib causes some of + these too, in complicated situations where the bugcatcher can't figure + out what's happening, and also in a few blatant statements in the mould + of DO .3 <- :3, which are quite clearly possible overflows. Strangely + enough, there's a commented-out section of code in feh.c that suggests + that someone tried to make this an error (using a more general check + which would have caught more correct code involving GETS, but none + involving $). As a middle ground, I've made it an -l warning. */ +#define W276 "276 YOU CAN'T EXPECT ME TO CHECK BACK THAT FAR\n\ + ON THE WAY TO %d\n" + +/* (AIS) A line will inevitably cause an expression-reversal failure. */ +#define W278 "278 FROM A CONTRADICTION, ANYTHING FOLLOWS\n\ + ON THE WAY TO A HUGE DISASTER\n" + +/* (AIS) The two following warnings are both compile-time traps for + near-certain runtime errors. As such, they have similar numbers + and similar messages. In fact, they're a shameless ripoff of the + originals, but should serve as a reminder for anyone aware of the + original messages. */ +/* (AIS) Dimension given for an ick_array will come out as #0. */ +#define W239 "239 WARNING HANDLER PRINTED SNIDE REMARK\n\ + ON THE WAY TO %d\n" + +/* (AIS) RESUME argument will come out as #0. */ +#define W622 "622 WARNING TYPE 622 ENCOUNTERED\n\ + ON THE WAY TO %d\n" + +extern int ick_lineno; + +extern void /*@noreturn@*/ ick_lose(const char *m, int n, /*@null@*/ const char *s) +#ifdef __GNUC__ + __attribute__ ((noreturn)) +#endif +; + +extern void ick_lwarn(const char *m, int n, /*@null@*/ const char *s); + +/* ick_lose.h ends here */