Awesome
Awesome Formal Languages and Compilers
A curated list of awesome programming language design, domain specific languages and homebrew compilers.
Contents
Tutorials
- Writing a C Compiler
- Writing a C Compiler - Part 1: Integers
- Writing a C Compiler - Part 2: Unary Operators
- Writing a C Compiler - Part 3: Binary Operators
- Writing a C Compiler - Part 4: Even More Binary Operators
- Writing a C Compiler - Part 5: Local Variables
- Writing a C Compiler - Part 6: Conditionals
- Writing a C Compiler - Part 7: Compound Statements
- Writing a C Compiler - Part 8: Loops
- PEG parser in Perl
- Build Your Own Lisp
- Writing your own programming language and compiler with Python
- Let's Build A Simple Interpreter
- Let's Build A Simple Interpreter - Part 1
- Let's Build A Simple Interpreter - Part 2
- Let's Build A Simple Interpreter - Part 3
- Let's Build A Simple Interpreter - Part 4
- Let's Build A Simple Interpreter - Part 5
- Let's Build A Simple Interpreter - Part 6
- Let's Build A Simple Interpreter - Part 7: Abstract Syntax Trees
- Let's Build A Simple Interpreter - Part 8
- Let's Build A Simple Interpreter - Part 9
- Let's Build A Simple Interpreter - Part 10
- Let's Build A Simple Interpreter - Part 11
- Let's Build A Simple Interpreter - Part 12
- Let's Build A Simple Interpreter - Part 13: Semantic Analysis
- Let's Build A Simple Interpreter - Part 14: Nested Scopes and a Source-to-Source Compiler
- Let's Build A Simple Interpreter - Part 15
- Let's Build A Simple Interpreter - Part 16: Recognizing Procedure Calls
- Let's Build A Simple Interpreter - Part 17: Call Stack and Activation Records
- Let's Build A Simple Interpreter - Part 18: Executing Procedure Calls
- Let's Build A Simple Interpreter - Part 19: Nested Procedure Calls
- Dragon taming with Tailbiter, a bytecode compiler for Python
- BASIC Interpreter Implemented in a Jupyter Notebook
- Let's Write a Brainfuck Compiler
- Build a JS Interpreter in JavaScript Using Acorn as a Parser
- Let's Write an LLVM Specializer for Python!
- Implementing a JIT Compiled Language with Haskell and LLVM
- Write You a Haskell- Building a modern functional compiler from first principles.
- PEG Parsing Series - Guido van Rossum
- PEG Parsing Series - Part 1: PEG Parsers
- PEG Parsing Series - Part 2: Building a PEG Parser
- PEG Parsing Series - Part 3: Generating a PEG Parser
- PEG Parsing Series - Part 4: Visualizing PEG Parsing
- PEG Parsing Series - Part 5: Left-recursive PEG Grammars
- PEG Parsing Series - Part 6: Adding Actions to a PEG Grammar
- PEG Parsing Series - Part 7: A Meta-Grammar for PEG Parsers
- PEG Parsing Series - Part 8: Implementing PEG Features
- PEG Parsing Series - Part 9: PEG at the Core Developer Sprint
- Pyleri - Parsing with Ease
Videos
Tools
- PyParsing - A Python Parsing Module
- Lark - A parsing toolkit for Python
- Unicode-friendly lexer generator for OCaml
- Menhir - A LR(1) parser generator for OCaml
- LPeg - Parsing Expression Grammars in Lua with first-class patterns
- Python Left-Right Parser (Pyleri) - An easy-to-use parser created for SiriDB
- TatSu - TatSu is a tool that takes grammars in a variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in Python