3 releases

0.0.3 May 12, 2020
0.0.2 May 11, 2020
0.0.1 May 10, 2020

#23 in #lox

MIT license

125KB
3.5K SLoC

lox-lang: a Lox runtime for Rust projects

Lox is a (mostly) toy scripting language designed by Bob Nystrom for his book Crafting Interpreters. This library (and the included wrapper binary) implement a virtual machine runtime for it that can be used on its own or embedded into a larger application. See the crate documentation for usage information.


lib.rs:

An implementation of the Lox programming language.

About Lox

Lox is a dynamically typed, interpreted scripting language. It was designed by Bob Nystrom for his book Crafting Interpreters.

About this implementation

This library aims to implement Lox faithfully to the quasi-specification laid out in the book, as well as some language extensions suggested as exercises to the reader. It is loosely based off of the book's third part, which is a guide to implementing an interpreter in C.

Usage

Included in this package (and installable via cargo install lox_lang) is a small wrapper executable named loxi. It is the simplest route to trying out the Lox language.

If you want to embed Lox in a larger Rust project, you will need to create an instance of VM and use its interpret method to run your code:

let mut my_vm = lox_lang::VM::default();
my_vm.interpret(r#" print "hello " + "world"; "#).unwrap();

Dependencies

~5.5MB
~107K SLoC