- First-class (run-time) macros and meta-circular evaluation
- Continuations by example: Exceptions, time-traveling search, generators, threads, and coroutines
- Compiling Scheme to C with closure conversion
- Compiling to Java
- Architectures for interpreters: Substitutional, denotational, big-step and small-step
- k-CFA: Determining types and/or control-flow in languages like Python, Java and Scheme
- Compiling to lambda-calculus: Turtles all the way down
- A-Normalization: Why and How
- Java as a CESK machine
- Writing an interpreter, CESK-style
- Tree transformations: Desugaring Scheme
- What is static program analysis?
- Understand and implement laziness with examples in Scala, JavaScript, Swift and Racket
parsing
- McLexer an McHighlight: Lexical analyzers and syntax-highlighters in JavaScript
- Implementing regular expression pattern-matching and nondeterministic finite automata (NFAs) in Java
- A regular expression matcher in Scheme using derivatives
- Lexing and parsing in Scala using combinators: M-Expression syntax
- A non-blocking lexing toolkit for Scala in less than 800 lines of code, from regex derivatives
- Yacc is dead: An update
- Standalone lexers with lex: synopsis, examples, and pitfalls
- Parsing regular expressions with recursive descent
- Lexical analysis in Racket
- Desugaring regular operations in context-free grammars
- Parsing S-Expressions in Scala