Skip to content
/ linguae Public

A playground for parsers, type checkers, interpreters, compilers, etc.

Notifications You must be signed in to change notification settings

igstan/linguae

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Directory Description
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.
lingua-011-bidirectional-typechecking A small bidirectional typechecker.
lingua-012-chatgpt-c++-compiler C++ compiler written entirely by ChatGPT 4

About

A playground for parsers, type checkers, interpreters, compilers, etc.

Resources

Stars

Watchers

Forks