package parsexp

  1. Overview
  2. Docs

Parser automaton

Warning: the API of this module is not fixed and might change! Use Sexp_parsing for the stable version.

type ('user_state, 'stack) state

Internal state of the automaton

type ('u, 's) mode =
  1. | Single
    (*

    Parse a single s-expression

    *)
  2. | Many
    (*

    Parse a list of s-expressions

    *)
  3. | Eager of {
    1. got_sexp : ('u, 's) state -> 's -> 's;
      (*

      Whether to consider no s-expression in the input as an error or not.

      The mutability is used in Parsexp.Eager*.Lexbuf_consumer.

      *)
    2. mutable no_sexp_is_error : bool;
    }
    (*

    Gives back s-expressions as soon as they are found.

    *)
type state_cst
type ('u, 's) kind =
  1. | Positions : (Positions.Builder.t, unit) kind
  2. | Sexp : (unit, Parsexp__.Automaton_stack.t) kind
  3. | Sexp_with_positions : (Positions.Builder.t, Parsexp__.Automaton_stack.t) kind
  4. | Cst : (state_cst, Parsexp__.Automaton_stack.For_cst.t) kind
val new_state : ?initial_pos:Positions.pos -> ('u, 's) mode -> ('u, 's) kind -> ('u, 's) state
val reset : ?pos:Positions.pos -> (_, _) state -> unit
val positions : (Positions.Builder.t, _) state -> Positions.t
val mode : ('u, 's) state -> ('u, 's) mode
val offset : (_, _) state -> int

Number of characters fed to the parser

val line : (_, _) state -> int

Position in the text

val column : (_, _) state -> int
val has_unclosed_paren : ('u, 's) state -> bool

Whether there are some unclosed parentheses

val set_error_state : (_, _) state -> unit
val feed : ('u, 's) state -> char -> 's -> 's
val feed_eoi : ('u, 's) state -> 's -> 's