Skip to content

Latest commit

 

History

History
57 lines (44 loc) · 5.64 KB

File metadata and controls

57 lines (44 loc) · 5.64 KB

Resources

Would like to participate in the Lang Jam and need a few resources on creating a programming language? This page has you covered.

Tutorials

Overviews

Tools

  • 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 xlang A 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.

Books

Other

  • 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

Libraries

Rust

  • Chumsky - An easy to use parser combinator crate
  • Ariadne - A crate for generating beautiful compiler diagnostics
  • Codespan - Beautiful diagnostic reporting for text-based programming languages