sig
  module Symbols :
    functor (T : sig type 'a terminal type 'a nonterminal end->
      sig
        type 'a symbol =
            T : 'T.terminal -> 'a symbol
          | N : 'T.nonterminal -> 'a symbol
        type xsymbol = X : 'a symbol -> xsymbol
      end
  module Make :
    functor
      (TT : TableFormat.TABLES) (IT : 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 = int
                                        val terminal : int -> xsymbol
                                        val nonterminal : int -> xsymbol
                                        val rhs :
                                          PackedIntArray.t * PackedIntArray.t
                                        val lr0_core : PackedIntArray.t
                                        val lr0_items :
                                          PackedIntArray.t * PackedIntArray.t
                                        val lr0_incoming : PackedIntArray.t
                                        val nullable : string
                                        val first : int * string
                                      end) (ET : sig
                                                   type state
                                                   val number : state -> int
                                                   type token
                                                   type terminal = int
                                                   type nonterminal = int
                                                   type semantic_value =
                                                       Obj.t
                                                   val token2terminal :
                                                     token -> terminal
                                                   val token2value :
                                                     token -> semantic_value
                                                   val error_terminal :
                                                     terminal
                                                   val error_value :
                                                     semantic_value
                                                   val foreach_terminal :
                                                     (terminal -> '-> 'a) ->
                                                     '-> 'a
                                                   type production
                                                   val production_index :
                                                     production -> int
                                                   val find_production :
                                                     int -> production
                                                   val default_reduction :
                                                     state ->
                                                     ('env ->
                                                      production -> 'answer) ->
                                                     ('env -> 'answer) ->
                                                     'env -> 'answer
                                                   val action :
                                                     state ->
                                                     terminal ->
                                                     semantic_value ->
                                                     ('env ->
                                                      bool ->
                                                      terminal ->
                                                      semantic_value ->
                                                      state -> 'answer) ->
                                                     ('env ->
                                                      production -> 'answer) ->
                                                     ('env -> 'answer) ->
                                                     'env -> 'answer
                                                   val goto_nt :
                                                     state ->
                                                     nonterminal -> state
                                                   val goto_prod :
                                                     state ->
                                                     production -> state
                                                   val maybe_goto_nt :
                                                     state ->
                                                     nonterminal ->
                                                     state option
                                                   val is_start :
                                                     production -> bool
                                                   exception Error
                                                   type semantic_action =
                                                       (state,
                                                        semantic_value,
                                                        token)
                                                       EngineTypes.env ->
                                                       (state,
                                                        semantic_value)
                                                       EngineTypes.stack
                                                   val semantic_action :
                                                     production ->
                                                     semantic_action
                                                   val may_reduce :
                                                     state ->
                                                     production -> bool
                                                   val log : bool
                                                   module Log :
                                                     sig
                                                       val state :
                                                         state -> unit
                                                       val shift :
                                                         terminal ->
                                                         state -> unit
                                                       val reduce_or_accept :
                                                         production -> unit
                                                       val lookahead_token :
                                                         terminal ->
                                                         Lexing.position ->
                                                         Lexing.position ->
                                                         unit
                                                       val initiating_error_handling :
                                                         unit -> unit
                                                       val resuming_error_handling :
                                                         unit -> unit
                                                       val handling_error :
                                                         state -> unit
                                                     end
                                                 end) (E : sig
                                                             type 'a env =
                                                                 (ET.state,
                                                                  ET.semantic_value,
                                                                  ET.token)
                                                                 CamlinternalMenhirLib.EngineTypes.env
                                                           end->
      sig
        type 'a symbol =
            T : 'IT.terminal -> 'a symbol
          | N : 'IT.nonterminal -> 'a symbol
        type xsymbol = X : 'a symbol -> xsymbol
        type item = int * int
        val compare_terminals : 'IT.terminal -> 'IT.terminal -> int
        val compare_nonterminals :
          'IT.nonterminal -> 'IT.nonterminal -> int
        val compare_symbols : xsymbol -> xsymbol -> int
        val compare_productions : int -> int -> int
        val compare_items : item -> item -> int
        val incoming_symbol : 'IT.lr1state -> 'a symbol
        val items : 'IT.lr1state -> item list
        val lhs : int -> xsymbol
        val rhs : int -> xsymbol list
        val nullable : 'IT.nonterminal -> bool
        val first : 'IT.nonterminal -> 'IT.terminal -> bool
        val xfirst : xsymbol -> 'IT.terminal -> bool
        val foreach_terminal : (xsymbol -> '-> 'a) -> '-> 'a
        val foreach_terminal_but_error : (xsymbol -> '-> 'a) -> '-> 'a
        val feed :
          'a symbol ->
          IncrementalEngine.position ->
          '-> IncrementalEngine.position -> 'E.env -> 'E.env
      end
end