Lox Implementations - munificent/craftinginterpreters GitHub Wiki
Some brave readers are implementing Lox (or variants thereof) and are making them open source. Particularly brave readers are porting it to other languages.
Are you porting jlox or clox to another language? Feel free to add it to this page!
Lox
C3
C
- paudsu01/clox (bytecode)
- zlliang/clox
- CabooseLang/Caboose
- calebschoepp/nqq (article)
- ghost-language/cghost
- jalalmostafa/clox
- Jason2605/Dictu
- valkarias/Pa
- KOREAN139/clox
- nicdard/loxs
- moria-world/emo
- tinwe6/loxi
- tung/clox (bytecode VM with computed gotos + extra language features, article)
- victorgomes/loxvm
- wy3/lox
- ImTouchk/CLox
- baioc/clox (bytecode)
- chidiwilliams/clox (bytecode)
- Roderland/clox (bytecode)
- bayerf/Lox68k (bytecode, complete, extended) Port to a Motorola 68008 single board computer
- HallofFamer/CLox (bytecode, extended)
- ravener/clox
- FrederikTobner/cellox
- woupiestek/clox
- vincepr/c_compiler (bytecode, extended, wasm runs in browser)
- xiaohuangren1001/lox-efi (bytecode) Port to UEFI Firmware
- txloc1909/lox (bytecode vm in
clox/
) - molee1354/simscript (bytecode, extended)
- Natniif/clox
- ubermenchh/clox
- AndreiMoraru123/clox (vanilla Lox on master + challenges solutions/attempts on feature branches)
- jhmcaleely/clox-pico clox ported to Pico Microcontrollers (article)
C++
- aakshintala/cpplox (Interpreter only in C++17 with Variants instead of visitor)
- aggsol/lox-simple
- ASMlover/loxcc (interpreter & bytecode)
- calebkoy/cplox (source-to-bytecode compiler and interpreter, without native functions)
- chanryu/cloxx (interpreter + mark-and-sweep garbage collector)
- codingpotato/Lox-modern-cpp (bytecode)
- DaanPosthuma/lox (interpreter (using dynamic dispatch instead of visitor))
- flyingalex/cpp_lox(interpreter)
- hashemi/cloxpp (bytecode)
- Jeff-Mott-OR/cpplox
- mspraggs/loxx
- pkusensei/clox (bytecode)
- rkirsling/cclox
- spraza/lox-cpp
- stheis2/ppclox
- the-lambda-way/CppLox (interpreter)
- ThorNielsen/loxint
- TobiPristupin/lox (Interpreter + some extra features)
- veera-sivarajan/lang0 (Interpreter with Lists and Lambdas)
- vilbedawg/jlox-cpp (Tree-walk interpreter with lists)
- asakidaisuke/levi
- chwwhc/Surpher (tree-walk interpreter in C++17)
- uvxwx/lox1
- ecyk/cpplox (tree-walk + bytecode)
- harishtpj/HPI (Tree walking interpreter with online playground)
- TA-800/Loxpp (Tree-walk interpreter, support for classes coming soon)
- mrjameshamilton/cpplox (A Lox interpreter and LLVM compiler)
C#
- nrosa01/CSLox (interpreter)
- ByronMayne/LoxSharp
- Captain-Quack/Lox
- collenirwin/Loxish
- drewbanas/cloxcs (bytecode)
- drewbanas/jloxcs
- h2oboi89/lox
- JasperDre/CSLox
- jonnyboyC/cs-Lox
- LoxScript
- MadHed/lox.net
- mrahhal/CSharpLox
- Nyhilo/NovaLox
- perlang-org/perlang (Lox-based language with (inferred and explicit) static typing support. Web page is at https://perlang.org
- perlun/cslox (incomplete)
- richsoft/CsLox
- shasta9/nlox
- SirCxyrtyx/cslox
- stevehalliwell/ulox-work (Both Tree-Walking and ByteCode interpreter inside Unity Game Engine.)
- tslater2006/Gravlox
- NoahBPeterson/csLox (Interpreter with demo)
- Jay-Madden/SharpLox (Tree walking interpreter with minorly modified syntax)
- FrederikTobner/Kellox
- Monsoonexe/RazerLox
- jmj0502/LSharp (Tree-Walking interpreter for a Lox superset.)
- clrudolphi/dlrLox (Lox implemented on the .NET dynamic runtime)
- robinlant/loxsharp (Tree-Waliking interpreter without inheritance and with some challanges done in main branch )
- escobar-west/csLox (interpreter)
Ceylon
Clojure
- raghavio/clojox
- ceronman/cloxure
- narimiran/cljox (interpreter)
Common Lisp
Crystal
- avrame/crylox
- dorianmariefr/crlox
- rebeccabuckingham/crystal-craftinginterpreters
- sauer2/crystalline-lox
- huynguyenau/lox-lang-crystal
D
Dart
- adeys/dlox
- rkirsling/dlox
- sma/lox
- BertrandBev/dlox bytecode VM with a neat little online playground
- definev/dlox
- jackdreilly/jlox
- ChessMax/dox
- roboli/lox_dart
Delphi
- bru32/PLOX (scanner)
- MarceloMelo/TheLoxLanguage4Delphi (interpreter & bytecode)
- derekdogg/Lox_Scanner (bytecode)
Dictu
Elixir
Erlang
Fortran
- awvwgk/flox (interpreter)
F#
- jmonasterio/flox_sharp_interpreter
- lust4life/lox-box/f# (interpreter)
Free Pascal
- JulStrat/loxip (interpreter - work in progress)
- jdehaan2014/fplox (bytecode virtual machine)
Go
- aliwalker/golox
- dabbertorres/golox
- goropikari/golox (interpreter)
- hutcho66/glox (interpreter with multiple additions)
- jfourkiotis/golox
- marcopacini/go-lox
- mohitranka/golox
- paulja/glox
- pravj/glox
- Roderland/glox (Interpreter)
- Shri333/golox (interpreter)
- nanmu42/bluelox (and an online playground in WASM)
- chidiwilliams/glox
- rami3l/golox (bytecode)
- michael-go/lox (interpreter, under golox/ folder)
- nickharrismcr/glox (bytecode with language extensions)
Hack
Haskell
- ccntrq/loxomotive
- Thomas-Neill/hlox
- sudo97/hlox (tree-walk, no classes)
- 0rphee/xolsh (tree-walk, passes
jlox
test suite, with online playground.)
Haxe
Inform 6
- GitLab:Natrium729/infolox (bytecode)
Java
- AmrDeveloper/Tank
- BlinkLang/BlinkLang
- caique/jlox
- Dandigit/pl-projects/jlox
- fsacer/FailLang
- Geert-Guldentops/jlox
- JasperDre/JLox
- jbduncan/jlox
- lucaspolo/jlox
- nicdard/loxs
- paudsu01/JLox (Interpreter)
- perlun/jlox (incomplete)
- protasm/jblox (Java bytecode Lox compiler/interpreter)
- SayedHajaj/DrawLang (article)
- vighneshq/jlox
- Roderland/lox (Interpreter)
- Leonardpepa/jlox
- Return5/R5Jlox
- microsoftjava/java_lox
- mrjameshamilton/jlox (An optimizing Lox compiler for the JVM using ProGuardCORE for Java bytecode generation)
- AndreiMoraru123/jlox (vanilla Lox on master + challenges solutions/attempts on feature branches)
- sravand123/TinkerScript (interpreter with tons of new features)
- buenvyron/ci-jlox (scanner done)
JavaScript
Julia
- GitLab:Natrium729/lox.jl (interpreter)
- nathanleiby/jlox (interpreter)
- lukemerrick/JuLox.jl (interpreter)
Kotlin
- anellie/klox,
- DichotoMe/klox
- felipesabino/lox-kotlin,
- GraydenH/klox,
- itskola/lox-kotlin
- mhashim6/klox,
- pin3da/CraftingInterpreters (interpreter)
- Sharparam/klox,
- HallofFamer/ktlox,
- mrjameshamilton/klox (A Kotlin implementation of lox with a JVM backend built using ProGuardCORE)
- cybergrouch/klox
- montreal91/RLC (WIP, Lox -> JVM bytecode compiler written from scratch)
Lua
MoonBit
- yj-qin/moonlox (bytecode)
Nim
- cabhishek/nimlox
- nc-x/crafty
- nocturn9x/japl (bytecode)
- rockcavera/nim-nlox
- rockcavera/nim-nloxvm (bytecode)
OCaml
- unfode/ocaml_lox
- blu-bird/bagol (interpreter - work in progress)
- ludwigpacifici/saumon
- samarthkishor/ocamlox (interpreter)
- tjammer/olox
- ldmnt/mlox (interpreter)
Odin
- OrigamiDev-Pete/odinlox (bytecode)
Onyx
- Syuparn/onylox (interpreter)
Perl
- ccntrq/plox (incomplete)
- dnmfarrell/Perl-Lox (interpreter)
PHP
PowerShell
- UnixY2k/PSLox (interpreter)
Python
- ramtinJ95/rj-pylox (WIP)
- ubermenchh/pylox
- FallenDeity/LoxInterpreter (inbuilt callables, new keywords, and lox native libraries)
- 1Hibiki1/locks-py
- yashrathi-git/loxscript
- BolunThompson/pylox
- Esamanoaz/plox (interpreter)
- iechevarria/pylox
- JHonaker/pylox
- kathleenbanawa/pylox
- kinshukk/pyterpreter
- kris-gaudel/py-lox (interpreter)
- mjx/pylox
- moreati/pylox
- MtScience/PyLox (interpreter, plus two new operators and a set of native functions)
- nkawaller/pylox (interpreter)
- nocturn9x/japl
- RoelAdriaans/yaplox
- selectnull/pylox
- ronsh909/pylox (interpreter)
- justnat3/pox
- mulhod/pylox
- brkp/pox
- ZhaoChuyang/plox (interpreter)
- ImAKappa/pylox
- BaLiKfromUA/pylox (tree-walk interpreter)
- txloc1909/lox (tree-walk interpreter in
pylox/
) - acinis/losos (WIP)
- HETHAT/LoxPy (interpreter)
- SamuelValentini/pylox (interpreter extended with fixed-size arrays)
- ostin-r/pylox (sans class inheritance, didn't do challenges at end of chapters)
Racket
ReScript
Ruby
- ArminKleinert/SlowLox,
- LevitatingBusinessMan/rulox (interpreter)
- perlun/cslox (Ruby conversion of the AstGenerator Java class from jlox),
- Famished-tiger/loxxy (Passes
jlox
test suite and executeslox.lox
flawlessly) - radanskoric/ruby_lox (Imitates Java code style and layout from the book to make it easier to follow along)
- mdesantis/rlox (interpreter, passes
jlox
test suite)
Rust
- fampiyush/rlox (Tree-walk Interpreter)
- hln33/rlox (Tree-walk Interpreter)
- vortexofdoom/crafting-interpreters-rust
- YangchenYe323/lox
- aalhendi/loxiest (bytecode, clox parity)
- AaronStGeorge/cat-lox
- abesto/clox-rs (bytecode with a playground)
- abesto/jlox-rs (interpreter with a playground)
- adambiltcliffe/rlox (bytecode)
- ajeetdsouza/loxcraft (bytecode VM, REPL, language server, online playground)
- alisww/lax
- anellie/cloxrs (bytecode)
- brightly-salty/rox (interpreter)
- darksecond/lox (bytecode)
- Harmful-Alchemist/rilox (interpreter)
- HarveyHunt/loxr
- jaredh159/rlox (interpreter)
- jeschkies/lox-rs (interpreter)
- jonnyboyC/spacelox
- Lapz/rox
- LevitatingBusinessMan/Loxidation (bytecode)
- mariosangiorgio/rulox
- mayhewj/lox
- mchlrhw/loxide (interpreter)
- nt591/lox-rust (bytecode)
- radogost/rlox (interpreter)
- rafasumi/rustlox (interpreter)
- rctcwyvrn/rlox (bytecode)
- rodaine/rlox
- rovjuvano/cloxrs (line-by-line port of clox to Rust with over 1500
unsafe
blocks, 90%unsafe
functions) - sasurau4/lox-rust (interpreter)
- silmeth/yarli
- smbl64/lox (interpreter)
- toyboot4e/loxrs (interpreter)
- tdp2110/crafting-interpreters-rs (interpreter/bytecode)
- trevarj/roxt (interpreter/bytecode)
- yanchith/relox
- glella/lako
- ceronman/loxido (bytecode)
- rami3l/dolores (interpreter)
- diegofreijo/rlox-vm (bytecode)
- pdogr/lox-rs (interpreter)
- veera-sivarajan/bessy (bytecode with a playground)
- gaxx/rox (bytecode with some implementation notes with simplified chinese translation)
- mideb/loxjit (a simple JIT compiler for x64 using inline caches)
- tseeker/rust-crafting-interpreters-part-1 (interpreter)
- michael-go/lox (bytecode, under rslox/ folder)
- zackradisic/rust-vs-zig (bytecode)
- zhouxs1023/rslox (bytecode)
- woupiestek/rlox
- boranseckin/rocks (interpreter)
- sagark4/rlox_ast_walk (interpreter)
- ryotsu/rox (bytecode, with a web playground)
- fabianbinna/lox-r (interpreter)
- WiHceeg/rilox (interpreter)
- hahn324/lox_treewalk
- danieldidiobalsamo/lox_interpreter_rust (tree-walk interpreter)
- WenzeJin/rlox (tree-walk interpreter, will support list and map)
- zhjngli/rustlox (tree-walk interpreter)
- Cheshulko/Lox-interpreter-rs (interpreter)
Scala
- bencwallace/slox
- grokking-vietnam/grox (A functional, cross compiling Scala, ScalaJS interpreter)
- fighur/sclox
Scheme
Spark
Standard ML
Swift
- alexito4/slox
- eirikvaa/slox
- danielctull/slox
- hashemi/bslox (bytecode)
- hashemi/slox
- heckj/slox
- SwampThingTom/swift-lox
- woolsweater/slox
TypeScript
- zlliang/tslox (interpreter)
- berkio3x/ferrous (interpreter)
- langium/langium-lox (interpreter with vscode extension)
- jeroenptrs/tslox
- quantomistro/lox.ts
- mtso/lox (tree-walk interpreter)
- golergka/ts-lox (tree-walk interpreter)
- williamsk91/tslox (interpreter)
- aadonkeyz/jslox (web playground)
- DavidTimms/loxdown (interpreter with static type system and web playground)
- chidiwilliams/loxjs (interpreter with web playground at chidiwilliams/lox-playground)
- alexkowalenko/alox (interpreter)
- jhonnatangomes/tsrabbit (interpreter)
- defpis/tslox (interpreter)
- woupiestek/tslox (both)
- danvk/gravlax (interpreter with currency support)
- bpetermann/ts-lox (interpreter)
- roboli/lox-ts
- liangyuanruo/tslox (interpreter)
Wren
Xojo
Zig
- jmonasterio/zlox_zig_interpreter
- jwmerrill/zig-lox (bytecode)
- raulgrell/zox (bytecode)
- nathanleiby/zlox (bytecode)
- zackradisic/rust-vs-zig (bytecode)
- tusharhero/zlox
- zlw/zlox (bytecode)
- tushyagupta81/interpreter-zig