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