sig
  type state
  type token
  type semantic_value
  exception Error
  val entry :
    [ `Legacy | `Simplified ] ->
    state -> (Lexing.lexbuf -> token) -> Lexing.lexbuf -> semantic_value
  type production
  type 'a env
  type 'a checkpoint = private
      InputNeeded of 'a env
    | Shifting of 'a env * 'a env * bool
    | AboutToReduce of 'a env * production
    | HandlingError of 'a env
    | Accepted of 'a
    | Rejected
  val offer :
    'a checkpoint ->
    token * IncrementalEngine.position * IncrementalEngine.position ->
    'a checkpoint
  type strategy = [ `Legacy | `Simplified ]
  val resume : ?strategy:strategy -> 'a checkpoint -> 'a checkpoint
  type supplier =
      unit -> token * IncrementalEngine.position * IncrementalEngine.position
  val lexer_lexbuf_to_supplier :
    (Lexing.lexbuf -> token) -> Lexing.lexbuf -> supplier
  val loop : ?strategy:strategy -> supplier -> 'a checkpoint -> 'a
  val loop_handle :
    ('-> 'answer) ->
    ('a checkpoint -> 'answer) -> supplier -> 'a checkpoint -> 'answer
  val loop_handle_undo :
    ('-> 'answer) ->
    ('a checkpoint -> 'a checkpoint -> 'answer) ->
    supplier -> 'a checkpoint -> 'answer
  val shifts : 'a checkpoint -> 'a env option
  val acceptable :
    'a checkpoint -> token -> IncrementalEngine.position -> bool
  type 'a lr1state = state
  val number : 'a lr1state -> int
  val production_index : production -> int
  val find_production : int -> production
  type element =
      Element : 'a lr1state * 'a * IncrementalEngine.position *
        IncrementalEngine.position -> element
  type stack = element General.stream
  val stack : 'a env -> stack
  val top : 'a env -> element option
  val pop_many : int -> 'a env -> 'a env option
  val get : int -> 'a env -> element option
  val current_state_number : 'a env -> int
  val equal : 'a env -> 'a env -> bool
  val positions :
    'a env -> IncrementalEngine.position * IncrementalEngine.position
  val env_has_default_reduction : 'a env -> bool
  val state_has_default_reduction : 'a lr1state -> bool
  val pop : 'a env -> 'a env option
  val force_reduction : production -> 'a env -> 'a env
  val input_needed : 'a env -> 'a checkpoint
  val start : state -> Lexing.position -> semantic_value checkpoint
end