I Introduction and Macro Foundations
1 Example Racket Languages
1.1 Racket Variants
1.2 Changing the Surface Syntax
1.3 Changing the Evaluation Model
2 From Syntactic Abstraction to Language Construction
2.1 Syntactic Abstraction
2.2 Language Extension
2.3 Language Construction
3 A Model of Expansion
3.1 An Interpreter
3.2 A Parser
3.3 Desugaring
3.4 Quasiquotation
3.5 Macros
3.6 Exercises
II Macros and Languages
4 Syntax Objects
4.1 The Little Syntaxer
4.2 Datum to Syntax
5 Macros
5.1 Defining Macros
5.2 Run Time and Compile Time
5.3 Exercises
6 Patterns and Templates
6.1 Introducing syntax-parse
6.2 Using syntax-parse
6.3 Ellipses
6.4 Syntax Classes
6.5 Simple Macros
6.6 Exercises
7 Modules
7.1 Defining Modules
7.2 Macros and Modules
7.3 Exercises
8 Languages
8.1 From Modules to Languages
8.2 The Core module Form
8.3 Modules and Renaming
8.4 Adjusting #%module-begin
8.5 The Application Form
8.6 Installing a Language
8.7 Exercises