functor (T : EngineTypes.TABLE) ->

  sig
    type state = T.state
    type token = T.token
    type semantic_value = T.semantic_value
    exception Error
    val entry :
      state -> (Lexing.lexbuf -> token) -> Lexing.lexbuf -> semantic_value
    type production = T.production
    type 'a env = (T.state, T.semantic_value, T.token) EngineTypes.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
    val resume : '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 : supplier -> 'a checkpoint -> 'a
    val loop_handle :
      ('a -> 'answer) ->
      ('a checkpoint -> 'answer) -> supplier -> 'a checkpoint -> 'answer
    val loop_handle_undo :
      ('a -> '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