Do you know who does Boo? As more people use Boo, they talk about it, and the community grows by word-of-mouth. Below are some postings related to Boo from people around the Internet.
In this article, Jeff presents an extensible parsing implementation called OMeta. OMeta is based on a variant of a Parsing Expression Grammar (PEG). Jeff also offers the original paper from the 2007 Dynamic Languages Symposium that described the concept. There is already an OMeta implementation over JavaScript dubbed OMeta/JS1).
Limited in JavaScript knowledge, Jeff pulled the implementation into the .NET realm, building an implementation on top of C#. The implementation translates the OMeta code into C#, which can then be further compiled. Jeff also presents his reasons for adding “another” .NET language to the mix and makes a cursory review of many, including Boo. Boo in particular is passed over even for its DSL capabilities, but the author likely did not know about the plans to use PEGs from within Boo. One commenter did mention Boo, to whom Jeff replied, “I hadn’t heard about MetaBoo, but agree that PEG is a nice way to express it. … I’d like to get OMeta# to the point where you could use Boo as a host language some day. I think that way would allow the best of both worlds.”
Jeff also presents some guiding principles:
While the implementation is not fully fleshed out, Jeff presents one working end-to-end demo to play with, as well as the source to OMeta#, made available on the OMeta# CodePlex site under an MIT License. Here’s an example clipping from his post:
ometa BootStrappedNumberParser
{
MyNumber = MyNumber:n Digit:d ->@@Convert.ToInt32(n) * 10 + d.ToDigit()@@
| Digit:d ->@@d.ToDigit()@@
}
In Power of Boo, Michael looks at Boo’s metaprogramming faculties, including using AST Attributes for cross-cutting concerns. In particular he notes the SingletonAttribute already included in Boo.Lang.Useful.
In a related post, Michael also takes a brief look at what sets Boo apart from C#, including duck typing and the extensible compiler.