- Books - General Overview - Introductory - Advanced
- Papers
- Courses
- Tutorials
- Comipler related Tools
- rust lang
- Computer Systems: A Programmer’s Perspective, R. Bryant, D. O'Hallaron - Comprehensive treatement of Computer Systems including Compilers, Interpreters and Runtimes.
- Elements of Computing Systems, N. Nisan, S. Schocken - How to build a computer starting with Nand Logic Gates and then move to Machine Code, Assemblers, Compilers and Operating Systems.
- SICP, H. Abelson, G. Sussman - Structure and Interpretation of Computer Programs.
- Other editions: HTML5/EPUB version.
- Basics of Compiler Design, T. Mogensen - Short and concise book on the basic concepts behind Compiler Design.
- Beautiful Racket, M. Butterick - How to make your own Programming Language with Racket.
- Build Your Own Lisp, D. Holden - Learn C and build your own Lisp programming language in 1000 lines of code.
- Compilers: Principles, Techniques, and Tools, A. Aho, M. Lam, R. Sethi, J. Ullman - The infamous Dragons Book, a classic textbook on Compiler Construction.
- Crafting Interpreters, B. Nystrom - Everything you need to learn to build an interpreted, full-featured, efficient scripting language.
- GitHub Repo.
- Discussions: HN.
- Create Your Own Programming Language - Very short book on building your own programming language with video tutorials and source code projects for 3 example programming languages.
- Discussions: HN.
- Engineering a Compiler, K. Cooper, L. Torczon - Modern comprehensive textbook on Compilers Construction. It covers SSA Form and recent research on Machine Code Generation.
- Essentials of Programming Languages, D. Friedman & M. Wand - Fundamental concepts of programming languages with a focus on Semantics, Interpretation and CPS (Continuation Passing Style).
- Language Implementation Patterns, T. Parr - Learn the patterns behind building programming languages and build an interpreter yourself, using ANTLR.
- Modern Compiler Implementation in ML, A. Appel.
- Other editions: MCI in C, MCI in Java.
- Programming Language Pragmatics, M. Scott.
- Programming Languages: Application and Interpretation, S. Krishnamurthi.
- PDF.
- Programming Languages: Theory and Practice.
- Project Oberon, N. Wirth & J. Gutknecht.
- Other editions: 2013 Edition.
- The BEAM Book - Description of the ERTS (Erlang Runtime System) and the BEAM Virtual Machine.
- Virtual Machines, Smith and Nait.
- Virtual Machines, Iain Craig.
- Writing an Interpreter in Go, T. Ball.
- Writing Compilers and Interpreters: A Software Engineering Approach.
- Advanced Compiler Design and Implementation, S. Muchnick.
- Advanced Topics in Types and Programming Languages, B. Pierce.
- A Retargetable C Compiler: Design and Implementation, D. Hanson.
- Building an Optimizing Compiler, B. Morgan.
- Compiling with Continuations, A. Appel.
- Design Concepts in Programming Languages, F. Turbak, D. Gifford, M. Sheldon - also contains some introductory level material.
- Instruction Level Parallelism, A. Aiken, U. Banerjee, A. Kejariwal, A. Nicolau.
- Linkers and Loaders.
- Optimizing Compilers for Modern Architectures, R. Allen & K. Kennedy.
- Parsing Techniques: A Practical Guide.
- The Garbage Collection Handbook: The Art of Automatic Memory Management, R. Jones, A. Hosking, E. Moss.
- The Implemetation of Functional Programming Langauges, S. P. Jones.
- The SSA Book, Springer, Zadeck.
- Types and Programming Languages, B. Pierce.
- Warren's Abstract Machine - Prolog in Haskell, H. Aït-Kaci.
* A Brief History of JIT Compilation, J. Aycock.
- A Flexible Prolog Interpreter in Python, C. Bolz & M. Leuschel.
- A Graph Higher-Order IR, R. Leißa, M. Koster & S. Hack.
- A Micro-Manual for LISP - Not the Whole Truth, J. McCarthy.
- Other editions: Neat and nice typeset.
- A Prolog Interpreter in Python, C. Bolz.
- A Simple Multi-Processor Computer Based on Subleq, O. Mazonka, A. Kolodin.
- An Evil Copy: How the Loader Betrays You - About security issues related to Dynamic Loading.
- An Incremental Approach to Compiler Construction.
- Compiler Construction Using Scheme, E. Hilsdale, J. Ashley, R. Dybvig & D. Friedman.
- Compiling with Continuations: Continued, A. Kennedy.
- Definitional Interpreters for Higher-Order Programming Languages, J. Reynolds.
- Draining the Swamp: Micro Virtual Machines as Solid Foundation for Languauage Development, K. Wang, Y. Lin, S. Blackburn, M. Norrish & A. Hosking.
- Engineering Definitional Interpreters, J. Midtgaard, N. Ramsey, B. Larsen.
- Garbage Collection in an Uncooperative Environment, H. Boehm, M. Weiser.
- Machine Code Obfuscation via Instruction Set Reduction and CFG Linearization, C. Jonischkeit.
MOV
is Turing-Complete, S. Dolan.- Nanopass Framework for Commercial Compiler Development, A. Keep & R. Dybvig.
- Nanopass Framework for Compiler Education, D. Sarkar, O. Waddell & R. Dybvig.
- Notes on Graph Algorithms Used in Optimizing Compilers, C. Offner.
- Packrat Parsing Thesis on PEG, B. Ford.
- PEG-based transformer provides front-end, middle-end and back-end stages in a simple Compiler, I. Piumarta.
- Pycket: A Tracing JIT for a Functional Language.
- PyPy’s Approach to VM Construction, A. Rigo & S. Pedroni.
- RABBIT: A Compiler for SCHEME, G. Steele.
- Simple and Efficient Construction of SSA Form.
- SSA-based Register Allocation, S. Hack & G. Goos.
- The Essence of Compiling with Continuations, C. Flanagan, A. Sabry, B. Duba & M. Felleisen.
- The Page-Faults Weird Machine: Lessons in Instruction-less Computation, J. Bangert, S. Bratus, R. Shapiro, S. Smith.
- Trace-based JIT Compilation for Lazy Functional Languages, T. Schilling.
- Using Datalog with Binary Decision Diagrams for Program Analysis, J. Whaley, D. Avots, M. Carbin & M. Lam.
- Formal Languages and Automata Theory -- CS162 in University of California, Irvine - Formal aspects of describing and recognizing languages by grammars and automata. Parsing regular and context-free languages.
- CMSC 430: Design and Implementation of Programming Languages in UDM - Students will design and implement several related languages.
- Compilers Construction, Cambridge - Introduction to compiler construction course from the University of Cambridge.
- Compiler Construction for Undergrads, RICE University - Introduction to compiler construction and language translators course from the RICE University.
- Compilers Theory, Stanford - YouTube, Stanford.edu, Class Notes -Introduction to Compilers theory and construction course from Stanford.
- Design and Construction of Compilers, University of Texas - Design and construction of compilers including lexical analysis, parsing, code generation techniques, error analysis and simple code optimizations.
- DSL Design and Implementation Summer School - Summer School program on the topics of DSL Design and Implementation hosted by the EPFL University.
- Foundations of Programming Languages - Concepts that underlie the design, definition, implementation and use of modern programming languages from a formal standpoint.
- Nand2Tetris: How to Build a Computer from First Principles, Part 2 - This 2nd part of the Nand2Tetris course covers basic language design and elementary compiler construction concepts in addition to many other topics on a basic level.
- NPTEL's Principles of Compiler Design Course - Introductory course from NPTEL on Compiler Design.
- NPTEL's Compiler Design Course - Slightly more advanced course than their Principles of Compiler Design course, covers SSA Form to a good degree.
- Programming Languages: Part A, by Grossman - Part 1 of a 3-part course series to the basic concepts of programming languages, with a strong emphasis on functional programming.
- Programming Languages: Part B, by Grossman - Part 2 of a 3-part course series to the basic concepts of programming languages, with a strong emphasis on functional programming.
- Programming Languages: Part C, by Grossman - Part 3 of a 3-part course series to the basic concepts of programming languages, with a strong emphasis on functional programming.
- Types, Logic, Semantics, and Verification from Oregon University's Summer School - Summer School program that consists of 80 minute lectures presented by internationally recognized leaders in programming languages and formal reasoning research.
- Virtual Machines and Managed Runtimes, UCB CS294 - Introductory course on Virtual Machines and Managed Runtimes from the University of Berkeley.
- Virtual Machines Summer School 2016 (VMSS 2016) - VMSS is a Summer School program that aims to give an overview of the field, targeted at early career researchers.
- the-super-tiny-compiler-CN
- A Tutorial Implementation of a Dependently Typed Lambda Calculus.
- A Beginner's Guide to Linkers - Tutorial for helping C & C++ programmers understand the essentials of what the linker does.
- Algorithm W Step By Step.
- Building a LISP from scratch with Swift.
- Compiler Optmization Tutorial.
- Hindley-Damas-Milner Tutorial - Extensively documented walkthrough for typechecking a basic functional language using the Hindley-Damas-Milner algorithm.
- How I Wrote a Programming Language, and How You Can Too.
- Discussions: Reddit.
- Implementing a JIT Compiled Language with Haskell and LLVM.
- Kaleidoscope: Implementing a Language with LLVM in Objective Caml.
- Let’s Build A Simple Interpreter.
- Lisperator - How to implement a programming language in JavaScript.
- Little Lisp Interpreter - Interpreter that supports function invocation, lambdas, lets, ifs, numbers, strings, a few library functions, and lists in under 120 lines of JavaScript.
lis.py
, v1: (How to Write a (Lisp) Interpreter (in Python)) - Tutorial by Peter Norvig on writing a simple Lisp interpreter.lis.py
, v2: An ((Even Better) Lisp) Interpreter (in Python) - Follow-up tutorial by Peter Norvig on makinglis.py
slightly better.- LLVM Tutorial: Implementing Kaleidoscope.
- Metacompiler Tutorial, Part 1.
- Project: A Programming Language - Chapter 11 from the book Eloquent JavaScript, 2nd Edition.
- Write You a Haskell.
- Writing a Language in Truffel - Interpreter development tutorial using Truffel, by Cristian Esquivias.
- GCC, the GNU Compiler Collection
- The LLVM Compiler Infrastructure
- Rust a systems programming language wants to replace C/C++
- Python is a programming language that lets you work quickly
- OpenJDK is the open-source implementation of the Java
- kotlin - a language which is 100% interoperable with Java Android
- Online Compiler Explorer
- jison -- lex-yacc in javascript
- Python Lex-Yacc
- ANTLR (ANother Tool for Language Recognition)--a powerful parser generator
- JFlex is a lexical analyzer generator written in Java
- byaccj is a parser generator written in Java
* C4 - mini C Language Compiler in 4 Functions.
- 8cc - C Compiler supporting all C11 language features
- 9cc - NEXT of 8cc
- compiler book - 9cc book jp
- 9cc in rust
- chibicc - NEXT of 9cc -- chibicc: A Small C Compiler
- Black - Scheme interpreter for the Reflective Programming Language "Black", by Kenichi Asai's.
- Other sources: GitHub Mirror.
- Discussions: HN.
- CarpVM - Experimental VM implementation in C.
- Charly - Interpreter for a dynamically typed language written in Crystal.
- Dale - Lisp-flavoured C: a system programming language.
- Eschelle - Open source cross platform multi-paradigm language with VM & JIT
- Gecho - Simple-stack language implementation in C.
- gocaml - Minimal functional programming language implementation in Go and LLVM.
- Hython - Haskell-powered Python 3 interpreter.
- Discussions: Reddit.
- llgo - Go frontend for LLVM written in Go.
- Mal's Interpreter - Clojure-inspired Lisp interpreter implemented in 64 languages.
- MetaScala - Metacircular JVM implementation in Scala.
- mini-js - Experimental self-hosted JavaScript compiler in 1K LoC.
- MunVM - Lua VM & Compiler in C.
- MY-BASIC - An embeddable BASIC dialect interpreter in C with modern paradigms.
- Poprc - Compiler for the Popr Language.
- PyCOOLC - Compiler for the COOL Programming Language written in Python 3.
- RabbitVM - RISC-based VM implementation in C.
- stack_cpu - Stack-machine simulator.
- The Super Tiny Compiler - Tiny educational compiler project in JavaScript.
- Discussions: HN.
- tinyc.c - Tiny-C language compiler in C.
- tisp - "Time is Space" Programming Language Interpreter.
- toy c compiler in rust--rucc
- Regular Expression to NFA (Non-Deterministic Finite Automata)
- Convert NFA to DFA Online
- Scanner Generator. Regular Expressions to NFA, DFA, and Lexical Analyzer
- lex yacc in javascript
- lex yacc in rust
- context free grammar checker
- Generate Predict, First, and Follow Sets from EBNF (Extended Backus Naur Form) Grammar
- LL(1) Parser Generator. First, Follow, & Predict Sets. Table
- LR(0) Parser Generator. Grammar to NFA, DFA, Table
- SLR(1) Parser Generator. Grammar to NFA, DFA, Table