#+title: implementing languages in Racket - tags :: [[file:20210411214221-programming_language_implementation.org][programming language implementation]] [[file:20210307165050-racket.org][Racket]] [[file:20210307165050-racket.org][Racket]] has a lot of tools for implementing new programming languages. * Process In general, there are two steps to implement a new language in Racket: you must first implement a reader and then an expander. ** Reader The reader is like a parser. It takes text and converts it into [[file:20210307153354-s_expression.org][s-expressions]]. ** Expander The expander is what either generates Racket code or otherwise how the s-expressions from the reader correspond to Racket code. * Links - [[https://github.com/racket/racket/wiki/Creating-Languages][Creating Languages · racket/racket Wiki · GitHub]] - [[https://docs.racket-lang.org/guide/hash-languages.html][17.3 Defining new #lang Languages]]