sig
  module Dump :
    sig
      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 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 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
  type 'a t = Structure.internal_entry
  val name : Structure.internal_entry -> string
  val print : Format.formatter -> Structure.internal_entry -> unit
  val dump : Format.formatter -> Structure.internal_entry -> unit
  val mk : Structure.gram -> string -> Structure.internal_entry
  val action_parse :
    Structure.internal_entry -> Structure.token_stream -> Structure.Action.t
  val lex :
    Structure.internal_entry ->
    Structure.Loc.t ->
    char Stream.t -> (Structure.Token.t * Structure.Loc.t) Stream.t
  val lex_string :
    Structure.internal_entry ->
    Structure.Loc.t ->
    string -> (Structure.Token.t * Structure.Loc.t) Stream.t
  val filter :
    Structure.internal_entry ->
    (Structure.Token.t * Structure.Token.Loc.t) Stream.t ->
    (Structure.Token.t * Structure.token_info) Stream.t
  val parse_tokens_after_filter :
    Structure.internal_entry -> Structure.token_stream -> 'a
  val parse_tokens_before_filter :
    Structure.internal_entry ->
    (Structure.Token.t * Structure.Token.Loc.t) Stream.t -> 'a
  val parse :
    Structure.internal_entry -> Structure.Loc.t -> char Stream.t -> 'a
  val parse_string :
    Structure.internal_entry -> Structure.Loc.t -> string -> 'a
  val of_parser :
    Structure.gram -> string -> (Structure.token_stream -> 'a) -> 'a t
  val setup_parser :
    Structure.internal_entry -> (Structure.token_stream -> 'a) -> unit
  val clear : Structure.internal_entry -> unit
  val obj : '-> 'a
end