In this post I will be reviewing some considerations that I usually have in mind while designing a DSL. The audience When you are working on a DSL, the first and most important thing to have in mind is the audience you are aiming for. It’s gonna be technical people, business executives, sales people, etc…, etc…. The syntax If the audience is not a bunch of techies, here is set of design rules that you should follow (at least, they've worked out for me): The syntax should be as much as closest to the domain terms that the user uses on a daily basis. Use sentences like “ when something_happen :” instead of “ if (somethingHappen){..} ”. Use logical operators like “ and ”, “ or ” instead of “ && ”, “ || ”. Don't make your syntax case sensitive. snake_case works better than PascalCase. When syntax error happen (and it will happen) provide useful messages that lead the user to the right path. Try to avoid the use of parentheses as much as you can. (our
There are two hard things in computer science: cache invalidation,
naming things, and off-by-one errors.