You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The bootstrap directory contains the following:
bootstrap.c is a bootstrap interpreter for scheme, intended for bootstraping compile/compile.scm (currently non-existant because git doeesn't track empty directories).
prims.c contains the primitive procedures for the bootstrapper
lib.scm implements a standard library for the bootstrapper to run.
To test, type at a terminal:
$ make
$ ./bootstrap/bootstrap
> (load "bootstrap/lib.scm")
prims.c currently defines:
char->integer
integer->char
number->string
string->number
symbol->string
string->symbol
boolean?
char?
integer?
pair?
symbol?
procedure?
string?
port?
quotient
remainder
=
<
cons
car
cdr
set-car!
set-cdr!
eq?
string-append
apply
eval
exit
interaction-enviroment
enviroment
null-enviroment
open-input-file
read-char
unread-char (non-standard) - (unread-char char port) pushes a character back to an input port
eof-object?
close-input-file
read
load
open-output-file (takes a non-standard optional second argument a symbol indicating what to di if it already exists: overwrite or append. Default is overwrite.)
close-output-file
write-char
write
display
error
string-append
system (non-standard) - excecutes shell code
gensym
bootstrap.c currently recognises the following special forms:
if
set!
define
quote
lambda
begin
cond, including =>
let
and
or
declare (non-standard) - ignored by the interpreter, the compiler will use them to aid compilation
bootstrap/lib.scm defines:
number?
list
not
append (varadic version)
length
reverse
vector? (always false)
range
map
filter
foldl
foldr
accumulate
all c...r functions
memq
memv
The following (non-standard) variable is availiable on startup:
args - command line arguments
Currently tested on Ubuntu only.
SHOULD work on all OSs currently (though untested) but I only plan to support unix.