Lisps let you define macros. Racket lets you define languages.
https://docs.racket-lang.org/guide/languages.html
https://docs.racket-lang.org/guide/more-hash-lang.html
Example of a language-in-racket: https://github.com/soegaard/minipascal/tree/master