Invited Keynote: Building Languages in Racket: Syntax Objects as an Intermediate Representation
Racket supports a spectrum of program manipulations — from simple syntactic abstractions to complete language construction — though a unified framework based on macros. More precisely, Racket’s support for defining and extending programming languages relies on an intermediate representation of program fragments as syntax objects. Syntax objects (which originate with Scheme) extend S-expressions (which originate with Lisp) with information about binding, source locations, and other properties. In this talk, we’ll look at language construction in Racket and how syntax objects work not only as the input and output of macros, but also for carrying information across other program-manipulation phases and for cooperating with the programming environment.