Module type CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE

module type INCREMENTAL_ENGINE = sig .. end

type token;
type production;
type env('a);
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
let offer:
  (
    checkpoint('a),
    (
      token,
      CamlinternalMenhirLib.IncrementalEngine.position,
      CamlinternalMenhirLib.IncrementalEngine.position,
    )
  ) =>
  checkpoint('a);
let resume: checkpoint('a) => checkpoint('a);
type supplier =
  unit =>
  (
    token,
    CamlinternalMenhirLib.IncrementalEngine.position,
    CamlinternalMenhirLib.IncrementalEngine.position,
  );
let lexer_lexbuf_to_supplier:
  (Lexing.lexbuf => token, Lexing.lexbuf) => supplier;
let loop: (supplier, checkpoint('a)) => 'a;
let loop_handle:
  ('a => 'answer, checkpoint('a) => 'answer, supplier, checkpoint('a)) =>
  'answer;
let loop_handle_undo:
  (
    'a => 'answer,
    (checkpoint('a), checkpoint('a)) => 'answer,
    supplier,
    checkpoint('a)
  ) =>
  'answer;
let shifts: checkpoint('a) => option(env('a));
let acceptable:
  (checkpoint('a), token, CamlinternalMenhirLib.IncrementalEngine.position) =>
  bool;
type lr1state('a);
let number: lr1state('a) => int;
let production_index: production => int;
let find_production: int => production;
type element = 
| Element : 'a lr1state * 'a * CamlinternalMenhirLib.IncrementalEngine.position * CamlinternalMenhirLib.IncrementalEngine.position -> element
type stack = CamlinternalMenhirLib.General.stream(element);
let stack: env('a) => stack;
let top: env('a) => option(element);
let pop_many: (int, env('a)) => option(env('a));
let get: (int, env('a)) => option(element);
let current_state_number: env('a) => int;
let equal: (env('a), env('a)) => bool;
let positions:
  env('a) =>
  (
    CamlinternalMenhirLib.IncrementalEngine.position,
    CamlinternalMenhirLib.IncrementalEngine.position,
  );
let env_has_default_reduction: env('a) => bool;
let state_has_default_reduction: lr1state('a) => bool;
let pop: env('a) => option(env('a));
let force_reduction: (production, env('a)) => env('a);
let input_needed: env('a) => checkpoint('a);