Creating Your Own Programming Language

This page summarizes the projects mentioned and recommended in the original post on /r/learnprogramming

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • spi

    Simple Pascal Interpreter - Based on ruslanspivak's project that was written in Python.

  • I've been going down this rabbit hole for the last few years (!). Turns out I really enjoy compiler theory and design. I can whole heartedly recommend you start off with these 3 resources: https://ruslanspivak.com/lsbasi-part1/, http://craftinginterpreters.com/, https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html in that order. My first project when trying out Go was going through ruslanpivak's series https://github.com/thegtproject/spi (a little rough around the edges!) and it was a lot of fun.

  • mal

    mal - Make a Lisp

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • AECforWebAssembly

    A port of ArithmeticExpressionCompiler from x86 to WebAssembly, so that the programs written in the language can run in a browser. The compiler has been rewritten from JavaScript into C++.

  • You can see the compiler for my programming language on GitHub, in case it helps you: https://github.com/FlatAssembler/AECforWebAssembly

  • Lark

    Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.

  • I have not used the other parser generator libraries people have mentioned, but I recently used lark to write a compiler for a BASIC like language and it's really simple to use if you know about context free grammars. I've read a bit of http://craftinginterpreters.com/ and there are example grammars in there. You can either go through that site or you can checkout the examples in the lark github and get straight into it. They also have a gitter channel where you can ask for help.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts