a parser combinator library, maybe