PLAI
Table of Contents
Description
Programming Languages: Application and Interpretation (PLAI), 2nd edition, by Shriram Krishnamurthi. A textbook on the design and implementation of programming languages, structured as an iterative conversation building interpreters of increasing complexity.
- Author: Shriram Krishnamurthi (Brown University)
- Edition: Second (the edition used in Advprog)
- Implementation language:
plai-typed, a statically typed dialect of Racket - Advprog substitution: Common Lisp (via tolk)
- Online: cs.brown.edu/courses/cs173/2012/book/
Chapter Coverage in This Wiki
| Chapter | Title | Status |
|---|---|---|
| 1 | Introduction | ingested |
| 2 | Everything About Parsing | ingested |
| 3 | A First Look at Interpretation | ingested |
| 4 | A First Taste of Desugaring | not yet |
| 5 | Adding Functions | not yet |
| 6 | From Substitution to Environments | not yet |
Key Concepts Introduced
| Chapter | Key concept |
|---|---|
| 1 | define-type, type-case, test; active reading |
| 2 | Bicameral parsing; s-expressions; ArithC |
| 3 | Recursive interpreter; template method; semantics |
| 4 | Desugaring (surface language → core language) |
| 5 | Functions; substitution |
| 6 | Environments; closures |
Relationship to Tolk / Advprog
Advprog loosely follows PLAI but uses Common Lisp. The key correspondences:
| PLAI concept | Tolk / CL equivalent |
|---|---|
define-type |
defclass hierarchy |
type-case |
ematch / defmethod-bind |
plai-typed |
Common Lisp type system |
test |
fiveam |