Red (the language) supports some very elegant DSLs. Here's Parse, a lovely way of defining grammars: https://www.red-lang.org/2013/11/041-introducing-parse.html