Combinators for expressing ASN.1 grammars in Ocaml