home *** CD-ROM | disk | FTP | other *** search
- Release Notes for C-INTERCAL
-
- DISCREDITS
-
- This package is an implementation of the language INTERCAL designed by Don
- Woods and James Lyon, who have since spent more than twenty years trying to
- live it down.
-
- This implementation was created by Eric S. Raymond <esr@snark.thyrsus.com>
- during a fit of lunacy from which he has since mostly recovered. It has
- been considerably hacked upon and improved by Steve Swales, Michael Ernst,
- Louis Howell (who wrote the array support stubbed out in Eric's original
- version), and others. Brian Raiter ported it to Linux (doing ANSI cleanup
- along the way), enabled it to use flex, and proofed the manual.
-
- FILES
-
- The compiler itself is in the src directory. Setting a symbol in the
- makefile will allow you to install it and its libraries and support files
- in a directory of your choice. The doc directory contains (surprise!)
- documentation, and pit contains various examples of INTERCAL source code,
- writhing in agony.
-
- The files included are:
-
- READ.ME -- this file
- BUGS -- current bug and to-do list
- NEWS -- info on features and fixes new in this release
- intercal.el -- elisp for editing INTERCAL code under GNU Emacs
-
- doc/READ.ME -- historical notes on the docs
- doc/intercal.mm -- the manual in groffable form
- doc/THEORY -- some notes on the internals of the INTERCAL compiler
-
- src/Makefile -- makefile for the INTERCAL compiler
- src/lexer.l -- the lexical analyzer specification (in LEX)
- src/ick.y -- the grammar specification (in YACC)
- src/ick.h -- compilation types and defines
- src/perpetrate.c -- main routine for compiler
- src/feh.c -- INTERCAL-to-C code generator
- src/fiddle.c -- the INTERCAL operators
- src/lose.[ch] -- INTERCAL compile- and run-time error handling
- src/ick-wrap.c -- the driver for generated C-from-INTERCAL code
- src/arrgghh.c -- option argument parsing for generated programs
- src/cesspool.c -- the INTERCAL runtime support code
- src/cesspool.h -- interface to INTERCAL runtime support
- src/numerals.c -- numerals table for INTERCAL input
-
- pit/* -- sample INTERCAL code; see pit/CATALOG
-
- HOW TO GET STARTED
-
- You want a man page? Man pages are for wimps. To compile an INTERCAL
- program `foo.i' to executable code, just do
-
- ick foo.i
-
- There's a -c option that leaves the generated `foo.c' in place for inspection
- (suppressing compilation to machine code), a -d option that enables verbose
- parse reporting from the yacc/bison parser, a -t option that requires strict
- INTERCAL-72 compliance (rejecting COME FROM and the extensions for bases other
- than two), a -b option that disables the INTERCAL-72 random-bug feature,
- and an -O option that enables the (hah!) optimizer. Invoking ick -?
- prints a usage message. Other than that, yer on yer own.
-
- Another switch affects C-INTERCAL's runtime behavior. The `-C'
- option forces output in "clockface" mode, for superstitious users who
- believe writing "IV" upside-down offends IVPITER and would rather
- see IIII.
-
- Every INTERCAL runtime also accepts certain options at runtime (code by
- Steve Swales). These include [+/-]help, [+/-]traditional, and [+/-]wimpmode.
- The help option (with either + or -) triggers a 'usage' message. The
- +traditional option is presently a no-op.
-
- Steve writes: "The wimpmode option is the most interesting. I found myself
- always running my test programs with filters on both ends to work around the
- 'nifty' INTERCAL number representations. This was so painful that I decided it
- would be LESS painful (and a lot less code) if I added a 'wimp' option. With
- the +wimpmode option, the user is subjected to a humiliating message about what
- a wimp he or she is to use this mode, but after that is allowed to use
- conventional numerical notation. While such a mode doubtless violates to some
- extent the INTERCAL philosophy, the fact that a 'unbutcher' command has been
- posted clearly indicates the need for it. Anyway... if you don't like it, don't
- use it... the default is -wimpmode (i.e. NOT wimp mode)."
-
- SPREADING THE BLAME
-
- There is an INTERCAL Resource Page at http://www.ccil.org/intercal
-
- The latest version of INTERCAL is also kept available at the
- Retrocomputing Museun, http://www.ccil.org/retro.
-
- There is, in addition, an occasionally active USENET newsgroup devoted to the
- language: alt.lang.intercal.
-
- NOTES ON THE LINUX BUILD
-
- At the top of ick.h are two defines that you may need to remove if you
- are using lex instead of flex.
-
- Many lexes export a yylineno variable, an undocumented feature that is
- not in flex (by default). If your build fails because of redecleration
- of yylineno, comment out the define of YYLINENO_BY_HAND.
-
- Some lexes also supply a yyrestart function to begin parsing a second
- file, while others automatically restart after seeing an EOF. (This is
- the case with flex.) If your build fails at link time because
- yyrestart is not defined, comment out the define of USE_YYRESTART.
-
- If you are using gcc in an non-ANSI environment, such as SunOS, it is
- strongly recommended that you add "-Wno-unused -Wimplicit" to the gcc
- command in the makefile. If you are in an ANSI environment and are
- using the current versions of gcc, flex, and bison, C-INTERCAL should
- build with no warnings.
-
- LICENSING
-
- C-INTERCAL is now distributed under the General Public License,
- except for the C skeleton file which is explicitly *not* GPLed
- in order to avoid the (possibly mythical) "license virus" effect.
- See the file COPYING for details on the General Public License.
-