A recursive-desent parser combinator framework for Java