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