Learn How Programming Languages Work
RSS FeedBuild tiny interpreters, one language feature at a time. Each interpreter makes part of language design and implementation concrete, using Elm as the current implementation language.
Recent Posts
-
Simplifying Whitespace with Lexeme Parsers in Elm
Learn how lexeme parsers simplify whitespace handling in elm/parser by consuming trailing whitespace and keeping parsers close to the grammar.
-
Why Recursive Elm Parsers Need Parser.lazy
Learn why recursive Elm parsers create cyclic definitions, how Parser.lazy breaks the cycle, and when recursive parsers do and don't need it.
-
DIFF: Adding Recursive Expressions to a Tiny Interpreter in Elm
Add recursive difference expressions to a tiny Elm interpreter and see how recursion shapes the grammar, AST, parser with lazy, and evaluator.
-
Setting Up a Reproducible Elm Interpreter Project with Nix
Set up a reproducible Elm interpreter project with a Nix flake, Elm tooling, helper commands, source and test structure, and grammar documentation.
-
Testing an Elm Interpreter with elm-test
Learn how to test an Elm interpreter with elm-test at the lexer, parser, and interpreter boundaries, then extract a reusable testValue helper.