Forked from Sprache, a simple lightweight library for constructing parsers directly in C# code writen by Nicholas Blumhardt