sig

  type token = token
  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 * CamlinternalMenhirLib.IncrementalEngine.position *
    CamlinternalMenhirLib.IncrementalEngine.position -> 'a checkpoint
  val resume : 'a checkpoint -> 'a checkpoint
  type supplier =
      unit ->
      token * CamlinternalMenhirLib.IncrementalEngine.position *
      CamlinternalMenhirLib.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 -> CamlinternalMenhirLib.IncrementalEngine.position -> bool
  type 'a lr1state
  val number : 'a lr1state -> int
  val production_index : production -> int
  val find_production : int -> production
  type element =
      Element : 'a lr1state * 'a *
        CamlinternalMenhirLib.IncrementalEngine.position *
        CamlinternalMenhirLib.IncrementalEngine.position -> element
  type stack = element CamlinternalMenhirLib.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 ->
    CamlinternalMenhirLib.IncrementalEngine.position *
    CamlinternalMenhirLib.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
end