sig

  type 'a terminal
  type 'a nonterminal
  type 'a symbol =
      T : 'a terminal -> 'a symbol
    | N : 'a nonterminal -> 'a symbol
  type xsymbol = X : 'a symbol -> xsymbol
  type 'a lr1state
  type production
  type item =
      CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production * int
  val compare_terminals : 'a terminal -> 'b terminal -> int
  val compare_nonterminals : 'a nonterminal -> 'b nonterminal -> int
  val compare_symbols : xsymbol -> xsymbol -> int
  val compare_productions :
    CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production ->
    CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production -> int
  val compare_items :
    CamlinternalMenhirLib.IncrementalEngine.INSPECTION.item ->
    CamlinternalMenhirLib.IncrementalEngine.INSPECTION.item -> int
  val incoming_symbol :
    'a CamlinternalMenhirLib.IncrementalEngine.INSPECTION.lr1state ->
    'a symbol
  val items :
    'a CamlinternalMenhirLib.IncrementalEngine.INSPECTION.lr1state ->
    CamlinternalMenhirLib.IncrementalEngine.INSPECTION.item list
  val lhs :
    CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production -> xsymbol
  val rhs :
    CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production ->
    xsymbol list
  val nullable : 'a nonterminal -> bool
  val first : 'a nonterminal -> 'b terminal -> bool
  val xfirst : xsymbol -> 'a terminal -> bool
  val foreach_terminal : (xsymbol -> 'a -> 'a) -> 'a -> 'a
  val foreach_terminal_but_error : (xsymbol -> 'a -> 'a) -> 'a -> 'a
  type 'a env
  val feed :
    'a symbol ->
    CamlinternalMenhirLib.IncrementalEngine.position ->
    'a ->
    CamlinternalMenhirLib.IncrementalEngine.position ->
    'b CamlinternalMenhirLib.IncrementalEngine.INSPECTION.env ->
    'b CamlinternalMenhirLib.IncrementalEngine.INSPECTION.env
end