Wiki Overview — Interpreters: PLAI, Tolk, Advprog
Table of Contents
Cluster navigation hub. Read this before diving into any topic. For the full page listing, see index.
What This Wiki Is
This wiki covers the theory and practice of writing interpreters for programming
languages, as taught in the Advanced Programming (Advprog) course and grounded
in the textbook Programming Languages: Application and Interpretation (PLAI,
2nd ed.) by Shriram Krishnamurthi. The implementation language is Common Lisp,
using the tolk library. Currently: 7 sources, ~20 pages, 4 clusters.
Cluster Map
interpreter-architecture ← core theory: AST, parse, interpret, semantics
│
├── tolk-implementation ← CL realisation of the theory
│
├── plai-book ← source text (chs. 1-3 so far)
│
└── advprog-course ← classroom application
Cluster: interpreter-architecture
Enter at: Interpreter Architecture
The central cluster. Covers the design of the parse→interpret pipeline, abstract syntax trees, the role of semantics, and how meaning is assigned to language constructs. All other clusters connect to this one.
Key entry points:
- "What is an AST?" → Abstract Syntax Tree
- "How does parsing work?" → Parsing
- "How does an interpreter evaluate?" → Interpreter
Cluster: tolk-implementation
Enter at: Tolk
The Common Lisp realisation of PLAI's interpreter patterns. Uses CLOS
for AST nodes, trivia for pattern matching, metabang-bind for slot
binding, and fiveam for tests. The arithmetic interpreter (tolk/arith)
is the first language implemented.
Key entry points:
- "How does tolk represent AST nodes?" → Abstract Syntax Tree
- "How does tolk's arith interpreter work?" → Tolk Arith
Cluster: plai-book
Enter at: PLAI
Shriram Krishnamurthi's textbook. Chapters 1-3 are ingested. The book
uses plai-typed (a typed Racket dialect); tolk/advprog uses Common Lisp instead.
Cluster: advprog-course
Enter at: Advprog
The Advanced Programming course at AUC. Interpreter material begins with the 2026-04-20 class. Follows PLAI loosely; uses Common Lisp throughout.