Skip to content

prggTheProgrammer/loxlox

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LoxLox

LoxLox is an interpreter for Crafting Interpreters' Lox language written in ... Lox.

Below are a few notes about running LoxLox, but you can read more about LoxLox here.

How to run LoxLox

First clone the LoxLox repo as well as the Crafting Interpreters one:

$ git clone https://github.com/benhoyt/loxlox
$ git clone https://github.com/munificent/craftinginterpreters

Then patch the Crafting Interpreters repo to add the required builtins to JLox (getc, chr, etc) and build JLox:

$ cd craftinginterpreters
$ git apply ../loxlox/jlox_diff.patch
$ make jlox
$ cd ../loxlox

Now you're ready to run LoxLox (input is passed to LoxLox on stdin):

$ 
$ ./jlox lox.lox < example.lox
1
4
9
16
Waddles quacks
6
105
$ ./jlox lox.lox < sum.lox 
4.99995E9
$ echo 'print "Hello world!";' | ./jlox lox.lox 
Hello world!

Running the tests

To run the Lox test suite under LoxLox, use this command:

$ python test.py

Note that several tests will fail. That's expected -- the code works; the remaining failures are only from differences in the runtime error messages between JLox and LoxLox.

To run the tests and diff against the git-committed failures file (should be no diffs):

$ python test.py > failures
$ git diff failures

Contact me

Contact me if you have any feedback or suggestions. And if you get LoxLox to run under LoxLox ... mind blown.

About

Lox interpreter written in Lox

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.7%
  • Shell 0.3%