add labels on CCParse.parse_ functions

This commit is contained in:
Simon Cruanes 2015-10-21 23:51:35 +02:00
parent 523097f158
commit 49c2e6fba2
2 changed files with 21 additions and 16 deletions

View file

@ -357,30 +357,30 @@ let fix_memo f =
in
p
let parse_exn ~input p = p input
let parse_exn ~input ~p = p input
let parse ~input p =
try `Ok (parse_exn ~input p)
let parse ~input ~p =
try `Ok (parse_exn ~input ~p)
with ParseError (lnum, cnum, msg) ->
`Error (Printf.sprintf "at line %d, column %d: error, %s" lnum cnum (msg ()))
let parse_string s p = parse ~input:(input_of_string s) p
let parse_string_exn s p = parse_exn ~input:(input_of_string s) p
let parse_string s ~p = parse ~input:(input_of_string s) ~p
let parse_string_exn s ~p = parse_exn ~input:(input_of_string s) ~p
let parse_file_exn ?size ~file p =
let parse_file_exn ?size ~file ~p =
let ic = open_in file in
let input = input_of_chan ?size ic in
try
let res = parse_exn ~input p in
let res = parse_exn ~input ~p in
close_in ic;
res
with e ->
close_in ic;
raise e
let parse_file ?size ~file p =
let parse_file ?size ~file ~p =
try
`Ok (parse_file_exn ?size ~file p)
`Ok (parse_file_exn ?size ~file ~p)
with
| ParseError (lnum, cnum, msg) ->
`Error (Printf.sprintf "at line %d, column %d: error, %s" lnum cnum (msg ()))

View file

@ -27,6 +27,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
(**
{1 Very Simple Parser Combinators}
{b status} still a bit unstable, the type {!'a t} might still change.
Examples:
{6 parse recursive structures}
@ -238,28 +240,31 @@ val fix_memo : ('a t -> 'a t) -> 'a t
(** Same as {!fix}, but the fixpoint is memoized.
@since 0.13 *)
(** {2 Parse} *)
(** {2 Parse}
val parse : input:input -> 'a t -> 'a or_error
Those functions have a label [~p] on the parser, since NEXT_RELEASE.
*)
val parse : input:input -> p:'a t -> 'a or_error
(** [parse ~input p] applies [p] on the input, and returns [`Ok x] if
[p] succeeds with [x], or [`Error s] otherwise *)
val parse_exn : input:input -> 'a t -> 'a
val parse_exn : input:input -> p:'a t -> 'a
(** @raise ParseError if it fails *)
val parse_string : string -> 'a t -> 'a or_error
val parse_string : string -> p:'a t -> 'a or_error
(** Specialization of {!parse} for string inputs *)
val parse_string_exn : string -> 'a t -> 'a
val parse_string_exn : string -> p:'a t -> 'a
(** @raise ParseError if it fails *)
val parse_file : ?size:int -> file:string -> 'a t -> 'a or_error
val parse_file : ?size:int -> file:string -> p:'a t -> 'a or_error
(** [parse_file ~file p] parses [file] with [p] by opening the file
and using {!input_of_chan}.
@param size size of chunks read from file
@since 0.13 *)
val parse_file_exn : ?size:int -> file:string -> 'a t -> 'a
val parse_file_exn : ?size:int -> file:string -> p:'a t -> 'a
(** Unsafe version of {!parse_file}
@since 0.13 *)