linguae
linguae copied to clipboard
A playground for parsers, type checkers, interpreters, compilers, etc.
Linguae
This is where I learn about implementing parsers, type checkers, interpreters and compilers.
In general, each "lingua" tries to be as self-contained and small as possible, focusing on a single concept or implementation detail.
- lingua-000-tiger — Working through Modern Compiler Implementation in ML.
- lingua-001-visitor-interpreter — Tree-based interpreter that uses the Visitor pattern for tree traversal.
- lingua-002-hm-inference-sml — Damas-Hindley-Milner type inference in Standard ML.
- lingua-003-tree-interpreter — Tree-based interpreter for a language supporting closures, mutation and recursive let bindings.
- lingua-004-lisp-parser — Parser for a LISP-like language.
- lingua-005-debugger-scalajs — Incomplete debugger for an ML-like language in Scala.js.
- lingua-006-hm-inference-scala — Damas-Hindley-Milner type inference in Scala.
- lingua-007-µml-swift — A small ML written in Apple's Swift.
- lingua-008-partial-evaluation — A basic, yet quite impressive, partial evaluator.
- lingua-009-shunting-yard — The Shunting Yard algorithm for parsing infix operators.
- lingua-010-jit-hello-world-apple-silicon — JIT Hello World for Apple Silicon