~/talk

Macros for Domain-Specific Languages

Talkat OOPSLA 2020 · 2020-11-15..11-20· [compilers-and-language-design]
slides:none on file

Presents an implementation of a two-layer expander API for Racket that lets internal DSLs get their own expander and compiler while reusing host services like scopes, hygiene, and the expander environment. Demonstrates a PEG DSL that enforces left-recursion prohibition, compiles character-only alternatives to a binary-search optimization, and wires parse-variable bindings into Racket so IDE features like jump-to-definition work. Migrating four existing DSLs (Typed Racket, Rash, miniKanren, cmdline) shows the approach enables macro extensibility and new compiler-level optimizations.

AI-written summary · about

  1. 0:00Introduction to DSLs
  2. 2:57Extensible DSL Architecture
  3. 3:47DSL Compiler Pipeline
  4. 5:08Parser Expression Grammars
  5. 7:04Extending the PEG DSL
  6. 9:10Expander API and Scoping
  7. 11:14Environment Integration
  8. 14:29Evaluation and Impact
  9. 16:06Conclusion
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.