{"id":1556,"url":"https://github.com/patrickporto/awesome-compilers-languages","name":"awesome-compilers-languages","description":"A curated list of awesome programming language design, domain specific languages and homebrew compilers","projects_count":57,"last_synced_at":"2026-08-06T04:00:33.148Z","repository":{"id":47820380,"uuid":"282534899","full_name":"patrickporto/awesome-compilers-languages","owner":"patrickporto","description":"A curated list of awesome programming language design, domain specific languages and homebrew compilers","archived":false,"fork":false,"pushed_at":"2023-02-03T11:24:23.000Z","size":393,"stargazers_count":44,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-07-17T22:04:15.179Z","etag":null,"topics":["awesome","awesome-list"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patrickporto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-25T22:25:56.000Z","updated_at":"2026-06-06T16:42:28.000Z","dependencies_parsed_at":"2023-02-18T06:15:30.735Z","dependency_job_id":null,"html_url":"https://github.com/patrickporto/awesome-compilers-languages","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/patrickporto/awesome-compilers-languages","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickporto%2Fawesome-compilers-languages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickporto%2Fawesome-compilers-languages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickporto%2Fawesome-compilers-languages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickporto%2Fawesome-compilers-languages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrickporto","download_url":"https://codeload.github.com/patrickporto/awesome-compilers-languages/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickporto%2Fawesome-compilers-languages/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36327349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-06T02:00:07.852Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-04T17:53:46.398Z","updated_at":"2026-08-06T04:00:33.149Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Tools","Tutorials","Videos","Homebrew"],"sub_categories":[],"readme":"# Awesome Formal Languages and Compilers [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)\n\nA curated list of awesome programming language design, domain specific languages and homebrew compilers.\n\n## Contents\n\n- [Tutorials](#tutorials)\n- [Videos](#videos)\n- [Tools](#tools)\n- [Homebrew](#homebrew)\n\n## Tutorials\n\n- Writing a C Compiler\n  - [Writing a C Compiler - Part 1: Integers](https://norasandler.com/2017/11/29/Write-a-Compiler.html)\n  - [Writing a C Compiler - Part 2: Unary Operators](https://norasandler.com/2017/12/05/Write-a-Compiler-2.html)\n  - [Writing a C Compiler - Part 3: Binary Operators](https://norasandler.com/2017/12/15/Write-a-Compiler-3.html)\n  - [Writing a C Compiler - Part 4: Even More Binary Operators](https://norasandler.com/2017/12/28/Write-a-Compiler-4.html)\n  - [Writing a C Compiler - Part 5: Local Variables](https://norasandler.com/2018/01/08/Write-a-Compiler-5.html)\n  - [Writing a C Compiler - Part 6: Conditionals](https://norasandler.com/2018/02/25/Write-a-Compiler-6.html)\n  - [Writing a C Compiler - Part 7: Compound Statements](https://norasandler.com/2018/03/14/Write-a-Compiler-7.html)\n  - [Writing a C Compiler - Part 8: Loops](https://norasandler.com/2018/04/10/Write-a-Compiler-8.html)\n- [PEG parser in Perl](https://docs.perl6.org/language/grammar_tutorial)\n- [Build Your Own Lisp](http://www.buildyourownlisp.com)\n- [Writing your own programming language and compiler with Python](https://blog.usejournal.com/writing-your-own-programming-language-and-compiler-with-python-a468970ae6df)\n- Let's Build A Simple Interpreter\n  - [Let's Build A Simple Interpreter - Part 1](https://ruslanspivak.com/lsbasi-part1/)\n  - [Let's Build A Simple Interpreter - Part 2](https://ruslanspivak.com/lsbasi-part2/)\n  - [Let's Build A Simple Interpreter - Part 3](https://ruslanspivak.com/lsbasi-part3/)\n  - [Let's Build A Simple Interpreter - Part 4](https://ruslanspivak.com/lsbasi-part4/)\n  - [Let's Build A Simple Interpreter - Part 5](https://ruslanspivak.com/lsbasi-part5/)\n  - [Let's Build A Simple Interpreter - Part 6](https://ruslanspivak.com/lsbasi-part6/)\n  - [Let's Build A Simple Interpreter - Part 7: Abstract Syntax Trees](https://ruslanspivak.com/lsbasi-part7/)\n  - [Let's Build A Simple Interpreter - Part 8](https://ruslanspivak.com/lsbasi-part8/)\n  - [Let's Build A Simple Interpreter - Part 9](https://ruslanspivak.com/lsbasi-part9/)\n  - [Let's Build A Simple Interpreter - Part 10](https://ruslanspivak.com/lsbasi-part10/)\n  - [Let's Build A Simple Interpreter - Part 11](https://ruslanspivak.com/lsbasi-part11/)\n  - [Let's Build A Simple Interpreter - Part 12](https://ruslanspivak.com/lsbasi-part12/)\n  - [Let's Build A Simple Interpreter - Part 13: Semantic Analysis](https://ruslanspivak.com/lsbasi-part13/)\n  - [Let's Build A Simple Interpreter - Part 14: Nested Scopes and a Source-to-Source Compiler](https://ruslanspivak.com/lsbasi-part14/)\n  - [Let's Build A Simple Interpreter - Part 15](https://ruslanspivak.com/lsbasi-part15/)\n  - [Let's Build A Simple Interpreter - Part 16: Recognizing Procedure Calls](https://ruslanspivak.com/lsbasi-part16/)\n  - [Let's Build A Simple Interpreter - Part 17: Call Stack and Activation Records](https://ruslanspivak.com/lsbasi-part17/)\n  - [Let's Build A Simple Interpreter - Part 18: Executing Procedure Calls](https://ruslanspivak.com/lsbasi-part18/)\n  - [Let's Build A Simple Interpreter - Part 19: Nested Procedure Calls](https://ruslanspivak.com/lsbasi-part19/)\n- [Dragon taming with Tailbiter, a bytecode compiler for Python](https://codewords.recurse.com/issues/seven/dragon-taming-with-tailbiter-a-bytecode-compiler)\n- [BASIC Interpreter Implemented in a Jupyter Notebook](https://github.com/norvig/pytudes/blob/master/ipynb/BASIC.ipynb)\n- [Let's Write a Brainfuck Compiler](https://www.hackdoor.io/articles/BKQMZJzP/let-s-write-a-brainfuck-compiler)\n- [Build a JS Interpreter in JavaScript Using Acorn as a Parser](https://blog.bitsrc.io/build-a-js-interpreter-in-javascript-using-acorn-as-a-parser-5487bb53390c)\n- [Let's Write an LLVM Specializer for Python!](http://dev.stephendiehl.com/numpile/)\n- [Implementing a JIT Compiled Language with Haskell and LLVM](https://www.stephendiehl.com/llvm/)\n- [Write You a Haskell- Building a modern functional compiler from first principles.](http://dev.stephendiehl.com/fun/)\n- [PEG Parsing Series - Guido van Rossum](https://medium.com/@gvanrossum_83706/peg-parsing-series-de5d41b2ed60)\n  - [PEG Parsing Series - Part 1: PEG Parsers](https://medium.com/@gvanrossum_83706/peg-parsers-7ed72462f97c)\n  - [PEG Parsing Series - Part 2: Building a PEG Parser](https://medium.com/@gvanrossum_83706/building-a-peg-parser-d4869b5958fb)\n  - [PEG Parsing Series - Part 3: Generating a PEG Parser](https://medium.com/@gvanrossum_83706/generating-a-peg-parser-520057d642a9)\n  - [PEG Parsing Series - Part 4: Visualizing PEG Parsing](https://medium.com/@gvanrossum_83706/visualizing-peg-parsing-93a36f259423)\n  - [PEG Parsing Series - Part 5: Left-recursive PEG Grammars](https://medium.com/@gvanrossum_83706/left-recursive-peg-grammars-65dab3c580e1)\n  - [PEG Parsing Series - Part 6: Adding Actions to a PEG Grammar](https://medium.com/@gvanrossum_83706/adding-actions-to-a-peg-grammar-d5e00fa1092f)\n  - [PEG Parsing Series - Part 7: A Meta-Grammar for PEG Parsers](https://medium.com/@gvanrossum_83706/a-meta-grammar-for-peg-parsers-3d3d502ea332)\n  - [PEG Parsing Series - Part 8: Implementing PEG Features](https://medium.com/@gvanrossum_83706/implementing-peg-features-76caa4b2151f)\n  - [PEG Parsing Series - Part 9: PEG at the Core Developer Sprint](https://medium.com/@gvanrossum_83706/peg-at-the-core-developer-sprint-8b23677b91e6)\n- [Pyleri - Parsing with Ease](https://tomassetti.me/pyleri-tutorial/)\n\n## Videos\n\n- [Writing a PEG parser for fun and profit - Guido van Rossum](https://www.youtube.com/watch?v=QppWTvh7_sI)\n\n## Tools\n\n- [PyParsing - A Python Parsing Module](https://github.com/pyparsing/pyparsing)\n- [Lark - A parsing toolkit for Python](https://github.com/lark-parser/lark)\n- [Unicode-friendly lexer generator for OCaml](https://github.com/ocaml-community/sedlex)\n- [Menhir - A LR(1) parser generator for OCaml](http://gallium.inria.fr/~fpottier/menhir/)\n- [LPeg - Parsing Expression Grammars in Lua with first-class patterns](http://www.inf.puc-rio.br/~roberto/lpeg/)\n- [Python Left-Right Parser (Pyleri) - An easy-to-use parser created for SiriDB](https://github.com/transceptor-technology/pyleri)\n- [TatSu - TatSu is a tool that takes grammars in a variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in Python](https://github.com/neogeny/TatSu)\n\n## Homebrew\n\n- [A C parser and interpreter written in Python](https://github.com/albertz/PyCParser)\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/patrickporto%2Fawesome-compilers-languages/projects"}