linguae icon indicating copy to clipboard operation
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