This is my Clojure implementation of Rainer Joswig's Common Lisp implementation of Martin Fowler's C# implementation of a DSL.
I've taken some license and exploited Clojure's native maps and multimethods rather than creating a "class" for each mapping but this could be easily handled by using defrecord.