tarot code for viewing

rain1 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago
apps 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago
build 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago
chez 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago
compiler 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago
qcode 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago
scripts e69c241b92 support bootstrapping and running off of chez 10 months ago
test 9688c4aa38 0 1 year ago
vm 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago
.gitignore 77f112ab4e error instead of crashing for invalid or missing TAROTPATH 10 months ago
README.txt e69c241b92 support bootstrapping and running off of chez 10 months ago
TODO.txt 9688c4aa38 0 1 year ago
standard-functions.scm 855457438f Fixed the parser problem due to broken case macro. Able to self host again!!! 10 months ago

README.txt

environment variable TAROTPATH should be set to the folder that contains this text file.

$TAROTPATH/vm/vm
cd $TAROTPATH/vm ; make # to build it

$TAROTPATH/compiler
is the source code of the compiler and standard library

$TAROTPATH/qcode-1
all of the standard library .q files.

$TAROTPATH/qcode-2
loaded next, contains parser.q and compiler.q

$TAROTPATH/qcode
build scripts

$TAROTPATH/build
temporary build products

## Building and testing

add scripts to PATH

scripts/build.sh
will (self host) build the qcode

scripts/test.sh
will run the tests

both of the commands can run off chez instead of tarot if you use TAROT_BOOTSTRAP=1


## Test Directory Structure
test/
src/ contains Scheme source code to tests
run/ contains compiled qcode files
out/ contains the actual output of running the .q file
exp/ contains the expected output of running the .q file

## PITFALLS

the load order of .q files is important
if a global is used before it is defined (as opposed to just referred to in a lambda) the value will be #f
aliases like (define foo bar) may have to be eta-expanded if load order is unlucky