In between the new job and the new baby I have still managed to finish up the project I’ve been working on for myself.
It’s a C# implementation of Alessandro Warth’s OMeta pattern matching meta-language.
The IronMeta system builds parsers that can operate not only on streams of characters, but streams of objects of arbitrary types. The matchers can operate using the semantics of Parsing Expression Grammars or as fully backtracking recursive descent parsers.
IronMeta uses Warth, Douglass and Millstein’s algorithm for handling both direct and indirect left-recursion.
Grammar rules in IronMeta can take parameters, and in fact can match parameters against a pattern, allowing for different rule patterns depending on the number, type and value of parameters passed to them.
IronMeta also allows for higher-order rules, i.e. rules that can take other rules as parameters.