An expressive packrat parser combinator for Io