sig
  module Make :
    functor (Structure : Structure.S->
      sig
        module Tools :
          sig
            val empty_entry : string -> '-> 'b
            val stream_map : ('-> 'b) -> 'Stream.t -> 'Stream.t
            val keep_prev_loc :
              ('a * Structure.Loc.t) Stream.t ->
              ('a * Structure.token_info) Stream.t
            val drop_prev_loc :
              ('a * Structure.token_info) Stream.t ->
              ('a * Structure.Loc.t) Stream.t
            val get_cur_loc :
              ('a * Structure.token_info) Stream.t -> Structure.Loc.t
            val get_prev_loc :
              ('a * Structure.token_info) Stream.t -> Structure.Loc.t
            val is_level_labelled : string -> Structure.level -> bool
            val warning_verbose : bool ref
            val get_token_list :
              '->
              Structure.symbol list ->
              Structure.symbol ->
              Structure.tree ->
              (Structure.symbol list * Structure.symbol * Structure.tree)
              option
            val is_antiquot : string -> bool
            val eq_Stoken_ids : string -> string -> bool
            val logically_eq_symbols :
              Structure.internal_entry ->
              Structure.symbol -> Structure.symbol -> bool
            val eq_symbol : Structure.symbol -> Structure.symbol -> bool
          end
        module Parser :
          sig
            module Tools :
              sig
                val empty_entry : string -> '-> 'b
                val stream_map : ('-> 'b) -> 'Stream.t -> 'Stream.t
                val keep_prev_loc :
                  ('a * Structure.Loc.t) Stream.t ->
                  ('a * Structure.token_info) Stream.t
                val drop_prev_loc :
                  ('a * Structure.token_info) Stream.t ->
                  ('a * Structure.Loc.t) Stream.t
                val get_cur_loc :
                  ('a * Structure.token_info) Stream.t -> Structure.Loc.t
                val get_prev_loc :
                  ('a * Structure.token_info) Stream.t -> Structure.Loc.t
                val is_level_labelled : string -> Structure.level -> bool
                val warning_verbose : bool ref
                val get_token_list :
                  '->
                  Structure.symbol list ->
                  Structure.symbol ->
                  Structure.tree ->
                  (Structure.symbol list * Structure.symbol * Structure.tree)
                  option
                val is_antiquot : string -> bool
                val eq_Stoken_ids : string -> string -> bool
                val logically_eq_symbols :
                  Structure.internal_entry ->
                  Structure.symbol -> Structure.symbol -> bool
                val eq_symbol : Structure.symbol -> Structure.symbol -> bool
              end
            module Failed :
              sig
                module Tools :
                  sig
                    val empty_entry : string -> '-> 'b
                    val stream_map : ('-> 'b) -> 'Stream.t -> 'Stream.t
                    val keep_prev_loc :
                      ('a * Structure.Loc.t) Stream.t ->
                      ('a * Structure.token_info) Stream.t
                    val drop_prev_loc :
                      ('a * Structure.token_info) Stream.t ->
                      ('a * Structure.Loc.t) Stream.t
                    val get_cur_loc :
                      ('a * Structure.token_info) Stream.t -> Structure.Loc.t
                    val get_prev_loc :
                      ('a * Structure.token_info) Stream.t -> Structure.Loc.t
                    val is_level_labelled : string -> Structure.level -> bool
                    val warning_verbose : bool ref
                    val get_token_list :
                      '->
                      Structure.symbol list ->
                      Structure.symbol ->
                      Structure.tree ->
                      (Structure.symbol list * Structure.symbol *
                       Structure.tree)
                      option
                    val is_antiquot : string -> bool
                    val eq_Stoken_ids : string -> string -> bool
                    val logically_eq_symbols :
                      Structure.internal_entry ->
                      Structure.symbol -> Structure.symbol -> bool
                    val eq_symbol :
                      Structure.symbol -> Structure.symbol -> bool
                  end
                module Search :
                  sig
                    val tree_in_entry :
                      Structure.symbol ->
                      Structure.tree -> Structure.desc -> Structure.tree
                  end
                module Print :
                  sig
                    val flatten_tree :
                      Structure.tree -> Structure.symbol list list
                    val print_symbol :
                      Format.formatter -> Structure.symbol -> unit
                    val print_meta :
                      Format.formatter ->
                      string -> Structure.symbol list -> unit
                    val print_symbol1 :
                      Format.formatter -> Structure.symbol -> unit
                    val print_rule :
                      Format.formatter -> Structure.symbol list -> unit
                    val print_level :
                      Format.formatter ->
                      (Format.formatter -> unit -> unit) ->
                      Structure.symbol list list -> unit
                    val levels :
                      Format.formatter -> Structure.level list -> unit
                    val entry :
                      Format.formatter -> Structure.internal_entry -> unit
                  end
                val name_of_symbol :
                  Structure.internal_entry -> Structure.symbol -> string
                val name_of_symbol_failed :
                  Structure.internal_entry -> Structure.symbol -> string
                val name_of_tree_failed :
                  Structure.internal_entry -> Structure.tree -> string
                val magic : '-> '-> 'c
                val tree_failed :
                  Structure.internal_entry ->
                  '-> Structure.symbol -> Structure.tree -> string
                val symb_failed :
                  Structure.internal_entry ->
                  '-> Structure.symbol -> Structure.symbol -> string
                val symb_failed_txt :
                  Structure.internal_entry ->
                  Structure.symbol -> Structure.symbol -> string
              end
            module Print :
              sig
                val flatten_tree :
                  Structure.tree -> Structure.symbol list list
                val print_symbol :
                  Format.formatter -> Structure.symbol -> unit
                val print_meta :
                  Format.formatter -> string -> Structure.symbol list -> unit
                val print_symbol1 :
                  Format.formatter -> Structure.symbol -> unit
                val print_rule :
                  Format.formatter -> Structure.symbol list -> unit
                val print_level :
                  Format.formatter ->
                  (Format.formatter -> unit -> unit) ->
                  Structure.symbol list list -> unit
                val levels : Format.formatter -> Structure.level list -> unit
                val entry :
                  Format.formatter -> Structure.internal_entry -> unit
              end
            module StreamOrig :
              sig
                type 'a t = 'Stream.t
                exception Failure
                exception Error of string
                val from : (int -> 'a option) -> 'a t
                val of_list : 'a list -> 'a t
                val of_string : string -> char t
                val of_channel : in_channel -> char t
                val iter : ('-> unit) -> 'a t -> unit
                val next : 'a t -> 'a
                val empty : 'a t -> unit
                val peek : 'a t -> 'a option
                val junk : 'a t -> unit
                val count : 'a t -> int
                val npeek : int -> 'a t -> 'a list
                val iapp : 'a t -> 'a t -> 'a t
                val icons : '-> 'a t -> 'a t
                val ising : '-> 'a t
                val lapp : (unit -> 'a t) -> 'a t -> 'a t
                val lcons : (unit -> 'a) -> 'a t -> 'a t
                val lsing : (unit -> 'a) -> 'a t
                val sempty : 'a t
                val slazy : (unit -> 'a t) -> 'a t
                val dump : ('-> unit) -> 'a t -> unit
              end
            val njunk : 'Stream.t -> int -> unit
            val loc_bp :
              ('a * Structure.token_info) Stream.t -> Structure.Loc.t
            val loc_ep :
              ('a * Structure.token_info) Stream.t -> Structure.Loc.t
            val drop_prev_loc :
              ('a * Structure.token_info) Stream.t ->
              ('a * Structure.Loc.t) Stream.t
            val add_loc :
              Structure.Loc.t ->
              (('a * Structure.token_info) Stream.t -> 'b) ->
              ('a * Structure.token_info) Stream.t -> 'b * Structure.Loc.t
            val stream_peek_nth : 'Stream.t -> int -> 'a option
            module Stream :
              sig
                type 'a t = 'StreamOrig.t
                exception Failure
                exception Error of string
                val peek : 'StreamOrig.t -> 'a option
                val junk : 'StreamOrig.t -> unit
                val dup : 'Stream.t -> 'Stream.t
              end
            val try_parser : ('Stream.t -> 'b) -> 'Stream.t -> 'b
            val level_number : Structure.internal_entry -> string -> int
            val strict_parsing : bool ref
            val strict_parsing_warning : bool ref
            val top_symb :
              Structure.internal_entry ->
              Structure.symbol -> Structure.symbol
            val top_tree :
              Structure.internal_entry -> Structure.tree -> Structure.tree
            val entry_of_symb :
              Structure.internal_entry ->
              Structure.symbol -> Structure.internal_entry
            val continue :
              Structure.internal_entry ->
              Structure.Loc.t ->
              Structure.Action.t ->
              Structure.symbol ->
              Structure.tree ->
              ((Structure.Token.t * Structure.token_info) Stream.t ->
               Structure.Action.t) ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val skip_if_empty :
              Structure.Loc.t ->
              ('a * Structure.token_info) Stream.t -> Structure.Action.t
            val do_recover :
              (Structure.internal_entry ->
               '->
               '->
               Structure.tree ->
               (Structure.Token.t * Structure.token_info) Stream.t ->
               Structure.Action.t) ->
              Structure.internal_entry ->
              '->
              '->
              Structure.Loc.t ->
              Structure.Action.t ->
              Structure.symbol ->
              Structure.tree ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val recover :
              (Structure.internal_entry ->
               '->
               '->
               Structure.tree ->
               (Structure.Token.t * Structure.token_info) Stream.t ->
               Structure.Action.t) ->
              Structure.internal_entry ->
              '->
              '->
              Structure.Loc.t ->
              Structure.Action.t ->
              Structure.symbol ->
              Structure.tree ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val parser_of_tree :
              Structure.internal_entry ->
              int ->
              int ->
              Structure.tree ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val parser_cont :
              ((Structure.Token.t * Structure.token_info) Stream.t ->
               Structure.Action.t) ->
              Structure.internal_entry ->
              int ->
              int ->
              Structure.symbol ->
              Structure.tree ->
              Structure.Loc.t ->
              Structure.Action.t ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val parser_of_token_list :
              (Structure.Loc.t ->
               Structure.Action.t ->
               (Structure.Token.t * Structure.token_info) Stream.t ->
               Structure.Action.t) ->
              Structure.symbol list ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val parser_of_symbol :
              Structure.internal_entry ->
              int ->
              Structure.symbol ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val parse_top_symb :
              Structure.internal_entry ->
              Structure.symbol ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val start_parser_of_levels :
              Structure.internal_entry ->
              int ->
              Structure.level list ->
              int ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val start_parser_of_entry :
              Structure.internal_entry ->
              int ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val continue_parser_of_levels :
              Structure.internal_entry ->
              int ->
              Structure.level list ->
              int ->
              Structure.Loc.t ->
              '->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
            val continue_parser_of_entry :
              Structure.internal_entry ->
              int ->
              Structure.Loc.t ->
              Structure.Action.t ->
              (Structure.Token.t * Structure.token_info) Stream.t ->
              Structure.Action.t
          end
        val is_before : Structure.symbol -> Structure.symbol -> bool
        val derive_eps : Structure.symbol -> bool
        val tree_derive_eps : Structure.tree -> bool
        val empty_lev :
          string option -> Camlp4.Sig.Grammar.assoc option -> Structure.level
        val change_lev :
          Structure.internal_entry ->
          Structure.level ->
          string ->
          string option -> Camlp4.Sig.Grammar.assoc option -> Structure.level
        val change_to_self :
          Structure.internal_entry -> Structure.symbol -> Structure.symbol
        val get_level :
          Structure.internal_entry ->
          Camlp4.Sig.Grammar.position option ->
          Structure.level list ->
          Structure.level list *
          (string option ->
           Camlp4.Sig.Grammar.assoc option -> Structure.level) *
          Structure.level list
        val check_gram : Structure.internal_entry -> Structure.symbol -> unit
        val tree_check_gram :
          Structure.internal_entry -> Structure.tree -> unit
        val get_initial :
          Structure.symbol list -> bool * Structure.symbol list
        val insert_tokens : Structure.gram -> Structure.symbol list -> unit
        val insert_tree :
          Structure.internal_entry ->
          Structure.symbol list ->
          Structure.Action.t -> Structure.tree -> Structure.tree
        val insert_level :
          Structure.internal_entry ->
          bool ->
          Structure.symbol list ->
          Structure.Action.t -> Structure.level -> Structure.level
        val levels_of_rules :
          Structure.internal_entry ->
          Camlp4.Sig.Grammar.position option ->
          (string option * Camlp4.Sig.Grammar.assoc option *
           (Structure.symbol list * Structure.Action.t) list)
          list -> Structure.level list
        val extend :
          Structure.internal_entry ->
          Camlp4.Sig.Grammar.position option *
          (string option * Camlp4.Sig.Grammar.assoc option *
           (Structure.symbol list * Structure.Action.t) list)
          list -> unit
      end
end