tarot code for viewing

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

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