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…
This entry was posted on Friday, June 2nd, 2006 at 3:25 am and is filed under ANTLR, Java, Programming Languages, Technology. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

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.
June 3rd, 2006 at 2:55 am
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.
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.