sig
  module Make :
    functor (T : EngineTypes.TABLE->
      sig
        type state = T.state
        type token = T.token
        type semantic_value = T.semantic_value
        exception Error
        val entry :
          [ `Legacy | `Simplified ] ->
          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
        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
end