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 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 = 'Camlp4.Struct.Grammar.Parser.Make.StreamOrig.t
        exception Failure
        exception Error of string
        val peek :
          'Camlp4.Struct.Grammar.Parser.Make.StreamOrig.t -> 'a option
        val junk : 'Camlp4.Struct.Grammar.Parser.Make.StreamOrig.t -> unit
        val dup : 'Stream.t -> 'Stream.t
      end
    val try_parser :
      ('Camlp4.Struct.Grammar.Parser.Make.Stream.t -> 'b) ->
      'Camlp4.Struct.Grammar.Parser.Make.Stream.t -> 'b
    val level_number : Structure.internal_entry -> string -> int
    val strict_parsing : bool Pervasives.ref
    val strict_parsing_warning : bool Pervasives.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)
       Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t) ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val skip_if_empty :
      Structure.Loc.t ->
      ('a * Structure.token_info) Camlp4.Struct.Grammar.Parser.Make.Stream.t ->
      Structure.Action.t
    val do_recover :
      (Structure.internal_entry ->
       '->
       '->
       Structure.tree ->
       (Structure.Token.t * Structure.token_info)
       Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t) ->
      Structure.internal_entry ->
      '->
      '->
      Structure.Loc.t ->
      Structure.Action.t ->
      Structure.symbol ->
      Structure.tree ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val recover :
      (Structure.internal_entry ->
       '->
       '->
       Structure.tree ->
       (Structure.Token.t * Structure.token_info)
       Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t) ->
      Structure.internal_entry ->
      '->
      '->
      Structure.Loc.t ->
      Structure.Action.t ->
      Structure.symbol ->
      Structure.tree ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val parser_of_tree :
      Structure.internal_entry ->
      int ->
      int ->
      Structure.tree ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val parser_cont :
      ((Structure.Token.t * Structure.token_info)
       Camlp4.Struct.Grammar.Parser.Make.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)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val parser_of_token_list :
      (Structure.Loc.t ->
       Structure.Action.t ->
       (Structure.Token.t * Structure.token_info)
       Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t) ->
      Structure.symbol list ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val parser_of_symbol :
      Structure.internal_entry ->
      int ->
      Structure.symbol ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val parse_top_symb :
      Structure.internal_entry ->
      Structure.symbol ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val start_parser_of_levels :
      Structure.internal_entry ->
      int ->
      Structure.level list ->
      int ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
    val start_parser_of_entry :
      Structure.internal_entry ->
      int ->
      (Structure.Token.t * Structure.token_info)
      Camlp4.Struct.Grammar.Parser.Make.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)
      Camlp4.Struct.Grammar.Parser.Make.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)
      Camlp4.Struct.Grammar.Parser.Make.Stream.t -> Structure.Action.t
  end