Some black magic with parser combinators