sig
  module Loc :
    sig
      type t = Camlp4.PreCast.Loc.t
      val mk : string -> t
      val ghost : t
      val of_lexing_position : Lexing.position -> t
      val to_ocaml_location : t -> Camlp4_import.Location.t
      val of_ocaml_location : Camlp4_import.Location.t -> t
      val of_lexbuf : Lexing.lexbuf -> t
      val of_tuple : string * int * int * int * int * int * int * bool -> t
      val to_tuple : t -> string * int * int * int * int * int * int * bool
      val merge : t -> t -> t
      val join : t -> t
      val move : [ `both | `start | `stop ] -> int -> t -> t
      val shift : int -> t -> t
      val move_line : int -> t -> t
      val file_name : t -> string
      val start_line : t -> int
      val stop_line : t -> int
      val start_bol : t -> int
      val stop_bol : t -> int
      val start_off : t -> int
      val stop_off : t -> int
      val start_pos : t -> Lexing.position
      val stop_pos : t -> Lexing.position
      val is_ghost : t -> bool
      val ghostify : t -> t
      val set_file_name : string -> t -> t
      val strictly_before : t -> t -> bool
      val make_absolute : t -> t
      val print : Format.formatter -> t -> unit
      val dump : Format.formatter -> t -> unit
      val to_string : t -> string
      exception Exc_located of t * exn
      val raise : t -> exn -> 'a
      val name : string ref
    end
  type t = token
  val to_string : t -> string
  val print : Format.formatter -> t -> unit
  val match_keyword : string -> t -> bool
  val extract_string : t -> string
  module Filter :
    sig
      type token_filter = (t, Loc.t) Camlp4.Sig.stream_filter
      type t
      val mk : (string -> bool) -> t
      val define_filter : t -> (token_filter -> token_filter) -> unit
      val filter : t -> token_filter
      val keyword_added : t -> string -> bool -> unit
      val keyword_removed : t -> string -> unit
    end
  module Error : Camlp4.Sig.Error
end