awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com

Programming Language and Interpreter Construction

Ranking updated Jun 30, 2026

For a project for learning language design hands-on, the first results are munificent/craftinginterpreters, kanaka/mal and robertkrimen/otto (Otto is a production-ready Go implementation of a JavaScript interpreter, not an educational guide that teaches how to build an interpreter step by step — it lacks the accompanying book or tutorial you would need to learn the construction process). lotabout/write-a-c-interpreter and wren-lang/wren round out the shortlist. Compare the match explanations and check the project documentation against your requirements.

Resources and frameworks for designing custom programming languages, compilers, virtual machines, and runtime interpreter environments.

Programming Language and Interpreter Construction

Find the best repos with AI.We'll search the best matching repositories with AI.
  • munificent/craftinginterpretersmunificent avatar

    munificent/craftinginterpreters

    10,539View on GitHub↗

    Crafting Interpreters is a comprehensive resource for building a complete programming language from scratch. It provides a structured guide to the fundamental components of language implementation, including lexing, parsing, and the design of execution engines. The project demonstrates two distinct approaches to language execution: a tree-walking interpreter that evaluates source code by traversing its abstract syntax structure, and a stack-based virtual machine that compiles code into custom bytecode for execution. These implementations are supported by core runtime mechanisms such as lexica

    Crafting Interpreters is exactly the educational guide you're looking for: it walks through building a complete interpreter for the Lox language with step-by-step code, covering lexing, parsing, a tree-walking evaluator, a bytecode VM, a REPL, closures, and built-in data structures, all in a structured book format.

    HTMLTree-Walking Interpreters
    View on GitHub↗10,539
  • kanaka/malkanaka avatar

    kanaka/mal

    10,665View on GitHub↗

    This project is a Lisp interpreter implementation guide and framework designed to teach the core principles of programming language design. It provides a structured, step-by-step technical framework for building a functional Lisp language from scratch, featuring a specialized interpreter engine and an S-expression parser that converts syntax into abstract syntax trees. The project emphasizes a code-as-data metaprogramming framework, enabling the implementation of macros, quoting, and quasiquoting to transform expressions during evaluation. It is designed with host language agnosticism, allowi

    This project offers a step-by-step framework for implementing a Lisp interpreter across many languages, covering lexing, parsing, evaluation, a REPL, closures, and built-in data structures — exactly the kind of educational guide you're looking for to build an interpreter from scratch.

    AssemblyInterpreter ImplementationsPedagogical InterpretersAbstract Syntax Tree Parsing
    View on GitHub↗10,665
  • robertkrimen/ottorobertkrimen avatar

    robertkrimen/otto

    8,439View on GitHub↗

    Otto is a Go implementation of a JavaScript interpreter and embedded scripting engine. It provides a runtime environment for executing JavaScript code within native applications and includes a parser that converts source code into an abstract syntax tree for analysis and processing. The project enables the creation of custom scripting interfaces by binding native Go functions into the JavaScript global scope. It also includes a utility to translate JavaScript regular expression patterns into compatible formats for other programming languages. The engine supports safe script sandboxing throug

    Otto is a production-ready Go implementation of a JavaScript interpreter, not an educational guide that teaches how to build an interpreter step by step — it lacks the accompanying book or tutorial you would need to learn the construction process.

    GoInterpreter Tree WalkingTree-Walking Interpreters
    View on GitHub↗8,439
  • lotabout/write-a-c-interpreterlotabout avatar

    lotabout/write-a-C-interpreter

    4,343View on GitHub↗

    This project is a C language interpreter and a practical implementation of a programming language. It parses and executes C source code directly, removing the requirement for a separate compilation step. The interpreter is designed for self-hosting, meaning it is capable of interpreting its own source code to demonstrate recursive language processing and execution. The system covers the primary stages of language processing, including lexical analysis, recursive descent parsing, and tree-walk interpretation using an abstract syntax tree. It manages memory and scope through a dynamic symbol t

    This repository implements a C language interpreter that covers parsing and tree-walk execution, making it a useful codebase to study, but it is a working interpreter for an existing language rather than a step-by-step educational guide for building a custom language interpreter from scratch.

    CTree-Walking Interpreters
    View on GitHub↗4,343
  • wren-lang/wrenwren-lang avatar

    wren-lang/wren

    8,043View on GitHub↗

    Wren is an embeddable, class-based scripting language and bytecode interpreter. It provides a dependency-free virtual machine designed for integrating dynamic script execution into host applications via a C API. The language is centered on a modern object-oriented model featuring inheritance, method overloading, and first-class functions. It utilizes a concurrent fiber runtime to manage lightweight, cooperatively scheduled execution paths without relying on operating system threads. The project includes a comprehensive suite of object-oriented primitives, closure-based state capture, and a m

    Wren is a complete embeddable scripting language and bytecode interpreter, but it is not designed as an educational step-by-step guide to building an interpreter from scratch, lacking the accompanying tutorial the visitor is looking for.

    WrenBytecode Virtual MachinesClosure CapturesFirst-Class Functions
    View on GitHub↗8,043
  • php/php-srcphp avatar

    php/php-src

    40,150View on GitHub↗

    This project is the core source code for a general-purpose, server-side scripting language designed for web development. It provides a high-performance execution engine that parses and runs scripts to generate dynamic content, supported by a comprehensive standard library for data manipulation, networking, and system interaction. The repository serves as an open-source development platform where the language runtime and its interpreter are built, maintained, and evolved through community-driven governance. The runtime is powered by a stack-based virtual machine that executes compiled bytecode

    php-src is the production source of the PHP language runtime itself—a real-world interpreter with a stack-based VM—but it is not an educational step-by-step tutorial on building an interpreter from scratch, so it does not match the learning-focused intent.

    CParsers & Lexers
    View on GitHub↗40,150
  • traefik/yaegitraefik avatar

    traefik/yaegi

    8,311View on GitHub↗

    Yaegi is a Go language interpreter and embedded scripting engine that executes Go source code at runtime without requiring a separate compilation step. It provides a mechanism for evaluating Go expressions and files dynamically, functioning as both a library for compiled applications and a standalone read-eval-print-loop environment. The project enables the integration of dynamic Go scripts into compiled programs to allow for runtime extensibility and plugin development. It facilitates the conversion of interpreted symbols from evaluated scripts into usable interfaces and types within a compi

    Yaegi is a production-ready Go interpreter and embedded scripting engine, not an educational guide for building an interpreter from scratch — it provides runtime Go execution but no step-by-step tutorial or learning material.

    GoInteractive Read-Eval-Print Loops
    View on GitHub↗8,311
  • alda-lang/aldaalda-lang avatar

    alda-lang/alda

    5,906View on GitHub↗

    Alda is a text-based music programming language and command-line tool for composing, playing, and live-coding musical scores. It functions as a MIDI composition engine that renders plain-text scores into audio output, and as a live coding environment where code entered in a read-eval-print loop produces real-time playback without restarting the interpreter. The system distinguishes itself through an event-driven playback engine that schedules timed note events, an instrument-attribute inheritance model that cascades properties like volume and tempo from global defaults to individual parts, an

    Alda is a finished music-programming-language interpreter and composition tool, not an educational step-by-step guide on building an interpreter — it can serve as a reference but lacks the tutorial structure and teaching focus this search expects.

    GoInteractive Read-Eval-Print Loops
    View on GitHub↗5,906
  • oils-for-unix/oilsoils-for-unix avatar

    oils-for-unix/oils

    3,288View on GitHub↗

    Oils is a Unix shell interpreter and scripting language runtime that combines a modern shell language with POSIX and Bash compatibility. It functions as a structured data shell, integrating JSON and J8 formats to manage complex data without relying on string parsing. The system is distinguished by a C++ transpiled interpreter that converts a subset of Python source code into strongly typed C++ for high-performance execution. It features a garbage-collected typed runtime that supports prototype-based polymorphism, lexical closures, and reference-based variable mutation. To decouple shell logic

    Oils is a production-grade Unix shell interpreter and runtime, not an educational step-by-step tutorial for building a language interpreter from scratch, so it does not match the request for a learning guide with a book or walkthrough.

    PythonClosure CapturesClosures
    View on GitHub↗3,288
Compare the top 10 at a glance
RepositoryStarsLanguageLicenseLast push
munificent/craftinginterpreters10.5KHTMLotherAug 7, 2024
kanaka/mal10.7KAssemblyNOASSERTIONOct 22, 2025
robertkrimen/otto
8.4K
Go
MIT
Jun 13, 2025
lotabout/write-a-c-interpreter4.3KCgpl-2.0Nov 21, 2025
wren-lang/wren8KWrenMITNov 19, 2025
php/php-src40.2KCBSD-3-ClauseJun 16, 2026
traefik/yaegi8.3KGoApache-2.0Feb 9, 2026
alda-lang/alda5.9KGoEPL-2.0May 13, 2026
oils-for-unix/oils3.3KPythonotherFeb 5, 2026

Related searches

  • a project-based way to learn compilers
  • a comprehensive guide to programming languages
  • a hands-on project for learning systems programming
  • a study path for compiler theory
  • a curriculum for learning Clojure
  • a collection of free programming textbooks
  • a programming language for building software applications
  • a curriculum for learning Haskell