I think there are good counter-arguments in these comments, but I also think DSLs should be approached with caution: creating a non-trivial DSL that is correct in a consistent and intuitive way, which provides useful feedback on syntax errors, and is documented well enough to be used by someone else, is a lot of work.