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