tags : [[programming language implementation]] [[Racket]]
[[Racket]] has a lot of tools for implementing new programming languages.
In general, there are two steps to implement a new language in Racket: you must first implement a reader and then an expander.
The reader is like a parser. It takes text and converts it into [[s-expressions]].
The expander is what either generates Racket code or otherwise how the s-expressions from the reader correspond to Racket code.