An OCaml parser generator with an EBNF input language