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