After reading this article, it dawned on me, how easy it might be to write parsers using internal dsl syntax. Looks a bit clumsy in C#, yet rather expressive.
I've used wonderful Magnum library built by Dru Sellers and Chris (creators of open source service bus MassTransit project) as a foundation, since it already contains a base for monadic parsers.
As an example, look how easy it is to write a parser for following simple grammar, describing file version structure:
<version> ::= <part>{<delim><part>|<part>}
<part> ::= <positive integer>+ | <letter>+
<delim> ::= “.” | “,” | “(” | “)” | “ “
And parser in mere 10 lines of code:
Good luck!
Thursday, 7 October 2010
Applying monadic combinators to build simple parser
Subscribe to:
Posts (Atom)