(** Lexing buffer. *) type t (** The state of the buffer *) val from_lexbuf : ?reset_line:bool -> Sedlexing.lexbuf -> t (** Create a new buffer *) val start : t -> unit (** Intialize a new run *) val buffer : t -> Sedlexing.lexbuf (** Extract the sedlex buffer. Required in each rule. *) val positions : t -> Lexing.position * Lexing.position (** Extract the starting and ending position for the matched token *) val content : t -> string (** Extract the token matched by the rule *) val set_start_position : t -> Lexing.position -> unit (** Reset the starting position. Used while parsing the string to keep the begining of the whole string. *) val tokenize : (t -> 'a) -> t -> unit -> 'a * Lexing.position * Lexing.position (** Function to use in the parser in order to extract the token match, and the starting and ending position. *) val level : t -> int (** The state track the nesting level in the expression. Depending of the level, the token [!] will be considered as a comment or a boolean operation. *) val incr_level : t -> unit val decr_level : t -> unit val reset_level : t -> unit val rollback : t -> unit (** Rollback the latest token matched *)