a little madness

A man needs a little madness, or else he never dares cut the rope and be free -Nikos Kazantzakis

Zutubi

Your Own Little Language

One of the most studied and best understood areas of computer science is lexical analysis and parsing. Fantastic tools (such as ANTLR) are also available to automatically generate parsers based on declarative input. Despite this, most developers rarely take the opportunity to design their own “little” languages. No, I’m not suggesting we should all start creating full-blown programming languages (although that might be fun…). I’m not talking about Domain Specific Languages (DSLs) either1, at least not in the strictest sense. When I say “little” I mean a language custom built to take care of a small task.

For example, in pulse you can filter build notifications using arbitrary boolean expressions. To allow this, we created a custom boolean expression language. This “little” language has the usual boolean operators (and, or, not) and primitives like “success” which evaluates to true if the build was successful. It was implemented in an afternoon, thanks to ANTLR writing most of the code for us. The result is a simple yet powerful way to specify filters, much more usable than a GUI of equal flexibility. To keep the simple cases simple we provide a GUI with pre-canned expressions for the most common scenarios. It’s the best of both worlds.

So keep your eyes open, there are opportunities for little languages everywhere. With a tool like ANTLR in your arsenal to do all the heavy lifting, there is no reason not to give little languages a go! To give you a head start, I’ll be presenting an “ANTLR By Example” series of posts that will show exactly how we used ANTLR to create the language described above. Stay tuned!


1 on second thought, that would make this post trendier…

Liked this post? Share it!

3 Responses to “Your Own Little Language”

  1. June 3rd, 2006 at 2:33 am

    Tom says:

    Isn’t a DSL a “a language custom built to take care of a small task”? See Wikipedia for example.

    But in any case, “ANTLR by Example” sounds like a useful series. So thanks in advance.

  2. June 3rd, 2006 at 2:55 am

    Jason says:

    Tom, I will concede that by many definitions what I am talking about are DSL’s. I see DSL’s as the “very high level” languages that Wikipedia refers to, which I don’t think particularly fits my example. However, if I were to be completely honest (with myself even ;)) I would admit that I am really just avoiding the term due to the surrounding hype.

  3. June 6th, 2006 at 3:00 am

    Tom says:

    Thanks for the clarification on intent. And you did manage to get a fair number of clicks, anyway.

Leave a Reply