💻 Scheme interpreter in Jack (the nand2tetris language).
Latest commit 4b1bc68 Jan 30, 2015 @osnr update readme
Permalink
Failed to load latest commit information.
Cell.jack can now evaluate (+ 10 3) Jan 3, 2015
CellConsts.jack rudimentary error system (propagation is awkward) so we don't crash e… Jan 30, 2015
Environment.jack fixes to tokenizing and primitive symbol detection. lambda eval seems… Jan 4, 2015
ErrorCell.jack rudimentary error system (propagation is awkward) so we don't crash e… Jan 30, 2015
Eval.jack rudimentary error system (propagation is awkward) so we don't crash e… Jan 30, 2015
LambdaCell.jack
List.jack fix lots of stupid reversing mistakes. cons now works, as well as lam… Jan 28, 2015
ListCell.jack
Main.jack
NumberCell.jack parsing, tokenizing seem to work with simple test case Jan 4, 2015
Parser.jack rudimentary error system (propagation is awkward) so we don't crash e… Jan 30, 2015
ProcCell.jack add a bunch of builtin functions. CAR and CDR and * work, CONS doesn'… Jan 5, 2015
README.md update readme Jan 30, 2015
StringList.jack
SymbolCell.jack add a bunch of builtin functions. CAR and CDR and * work, CONS doesn'… Jan 5, 2015

README.md

JackScheme is a Scheme interpreter written in Jack for the nand2tetris machine. Compile it with the Jack compiler and run it in the VM emulator.

It's just a REPL for now. Not meant to implement any serious dialect of Scheme. Fairly closely modeled on this C++ Lisp interpreter.

Missing stuff:

  • Garbage collection
  • Most of the standard library, including any kind of I/O or graphics, or even comparisons (only implemented functions are car, cdr, and cons)
  • Hacky error reporting (so if you use an undefined symbol or something like that in certain places, it'll just crash)
  • Variables/state

Probably quite buggy as well.