Would like to participate in the Lang Jam and need a few resources on creating a programming language? This page has you covered.
- The super tiny compiler
- Introduction to Pest in Rust and Using Pest to make a language
- How to Write a Lisp Interpreter in Python (Advanced / Part 2)
- Parsing with OCamllex and Menhir
- How to make your papers run - tutorial on using using Makam to define prototype evaluators
- Creating Languages in Racket by Matthew Flatt Communications of the ACM, January 2012 code
- 7 lines of code, 3 minutes: Implement a programming language from scratch
- 5 Tips For Making a Programming Language from JT
- Building a programming language in an hour from JT
- Pest, Nom, lalrpop - libraries for helping you write a parser in Rust
- List of langdev libraries for Rust
- Nanopass - embedded DSL for Scheme and Racket for defining multipass compilers
- Makam - metalanguage useful for prototyping languages
- Template for a Racket language in Racket - A working example of a #lang language you can use as a starting point for creating your own #lang language. (Template based on
xlangA language of combinators and numeric constants, implemented in Racket.) - Sham: A DSL for runtime code generation in Racket - use this to target WASM or LLVM
- RLMeta - RLMeta is a programming language in which you write grammars. Grammars have rules that specify how to match objects from an input stream and specify what should happen when objects are matched. It can be used to write lexers, parsers, tree transformers, code generators, and similar tools. The RLMeta compiler is implemented in RLMeta itself which makes it a metacompiler. (There are multiple versions of RLMeta that all live in blog posts and the theory behind them is quite well documented.)
- Online Intel 8086 emulator - a web-based assembler IDE with live debugging
- Ohm - a parsing toolkit for JavaScript, with an online editor/visualizer for debugging grammars.
- Compiler course notes for creating a Python compiler - Freely available, and goes over many steps for building up your own Python compiler
- Crafting Interpeters - Newly released and available for free online
- Practical Foundations for Programming Languages - "a comprehensive framework for formulating and analyzing a broad range of ideas in programming languages", one of the best modern introductions to programming language design. Abbreviated online edition available for free.
- Programming Language Pragmatics - A textbook that goes into some of the thinking behind different styles of programming languages
- The Dragon book - A classic, though also quite the tome
- Flex and Bison - A book explaining use of flex and bison from the very basics to create parsers.
- Build Your Own Lisp - Learn C and build your own programming language in 1000 lines of code. Freely available online.
- Beautiful Racket: an introduction to language-oriented programming using Racket by Matthew Butterick
- Programming Languages: Application and Interpretation by Shriram Krishnamurthi. Freely available online.
- Writing a Compiler in Go by Thorsten Ball.
- Write you a programming language - huge collection of small programming languages that you can implement in a relatively small amount of time for educational purposes as well as other useful resources
- PL resources - a collection of compiler, runtime, and runtime optimization resources
- Context Free - a YouTube channel dedicated to programming languages