package parsexp

  1. Overview
  2. Docs
type t

State of the parser

val reset : ?pos:Positions.pos -> t -> unit

Reset the given parsing state. The following always succeed:

reset t ?pos;
assert (t = create ?pos ())
val offset : t -> int

Number of characters fed to the parser

Position in the text

val line : t -> int
val column : t -> int
val position : t -> Positions.pos
val stop : t -> unit

Prevent the state from receiving any more characters. Trying to feed more characters will result in an exception, unless the state is reset.

module Read_only : sig ... end
val create : ?pos:Positions.pos -> ?reraise_notrace:bool -> ?no_sexp_is_error:bool -> (Read_only.t -> parsed_value -> unit) -> t

create ~f create a new eager parser state. f will be called on each s-expression found. If f raises, then the parser is made unusable (stop t is invoked).

no_sexp_is_error controls the behavior of the parse when the end of input is reached and no s-expression has been found. When no_sexp_is_error is false (the default) feed_eoi just returns (), when it is false feed_eoi raises. In any case, if the end of input is reached while parsing an incomplete s-expression such as (abc, error is raised.

reraise_notrace controls whether or not the exceptions raised by f are reraised without a backtrace. (false: with, true: without) Generally you should pass true if you're using raise_nontrace in f, especially if using exceptions for control flow.

f must not save the read-only parser state it receives to access it after returning. It is unspecified what values it will read if it does so.

OCaml

Innovation. Community. Security.