An implementation of Scheme in the C language No right reserved or No warranty given by Kiyokazu SUTO This is an implementation of the programming language Scheme conforming to Revised^4 Report on the Algorithmic Language Scheme. All the features but the procedure `char-ready?' in the report are implemented. (Anyone have any idea to implement `char-ready?' which works in multi-byte character environments?) In addition, the following extensions are available: support for multiple character encoding systems Codes for EUC and Shifted JIS (`c/euc.c' and `c/sjis.c') are included. dynamic wind and exception handling For each feature, two versions are included: one is compliant to the proposals in ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/prop and another is very dependent of my implementation. The former is written by making use of the latter. package and multiple values They resemble those in Common Lisp, but are not exactly the same. plug-in's Common Lisp compatible logical operations on integers, interfaces to GNU's regular expression library (regex), and interfaces to X Toolkit Intrinsics and Athena widget set. $1. Files ========= readme.doc This file. builtin.doc The list of built-in objects with brief expositions. readme.sj More detailed document written in Japanese (encoded with so-called Shift JIS). makefile.ux, makefile.dos Makefiles for UNIX and MS-DOS respectively. c/ Directory of C sources. scm/ Directory of Scheme sources. scm/sys/ Directory of Scheme sources using implementation dependent functionalities. scm/sys/init.opt List of the scheme sources required for the 1st making of a dump file. As for the dump file, imagine a format file in type-setting by TeX. C sources are written for C compilers conforming to the ANSI standard. I strongly recommend to use the GNU C complier (version 2.5.8 or higher) and the GNU make (version 3.71 or higher). $2. Installation ================ In the following, the symbol `${TOP}' represents the directory where you have extracted the files from the archive. First of all, make a directory for binaries. The name of the directory must be equal to the value of `BIN' described below. If your C compiler is djgpp (emx/gcc, or BC++, resp.), and if you chose any name other than `dj' ( `em', or `bc', resp.) , you need to change the corresponding part of ${TOP}/c/makefile.dos. Then copy ${TOP}/makefile.{ux,dos} to ${TOP}/makefile, and change the definitions of variables in it according to your environment. The variables `BIN' (the directory for binaries), `TOP' (the top of the directory tree as noted above), and `BINDIR' (see below) must be properly re-defined. You can enable some optional features by defining the variable `EXDIRs' as a space-separated list of subdirectories (excluding the last `/') of ${TOP}/c/. The possible choices at present are: logop Logical operations on integers conforming to CLtL 2nd ed. regex Interfaces to the GNU regular expression library (regex 0.12). xt Interfaces to X Toolkit Intrinsics and Athena widget set. After you've modified the definition of `EXDIRs', you have to re-build some makefiles and header files in ${TOP}/c/ by performing `make config', which requires perl. Then, following the standard procedure `make all ; make install', you shall have the binaries in the directory specified by `BINDIR'. $3. Command Line Options ======================== The following command line options are encoded in the C source ${TOP}/c/init.c (the first line is what I've input at command line). % bin/sick -? bin/sick 3.05 @[