sig
  type token =
      Bcomment of string
    | Constant of string
    | Directive of string
    | Escape of string
    | Id of string
    | Keyword of int * string
    | Lcomment of string
    | Numeric of string
    | String of string
    | Symbol of int * string
    | Text of string
  val string_of_token : Higlo.token -> string
  exception Unknown_lang of string
  type lexer = Ulexing.lexbuf -> Higlo.token list
  val get_lexer : string -> Higlo.lexer
  val register_lang : string -> Higlo.lexer -> unit
  val parse : lang:string -> string -> Higlo.token list
  type classes = {
    bcomment : string;
    constant : string;
    directive : string;
    escape : string;
    id : string;
    keyword : int -> string;
    lcomment : string;
    numeric : string;
    string : string;
    symbol : int -> string;
    text : string;
  }
  val default_classes : Higlo.classes
  val token_to_xtmpl : ?classes:Higlo.classes -> Higlo.token -> Xtmpl.tree
  val to_xtmpl :
    ?classes:Higlo.classes -> lang:string -> string -> Xtmpl.tree list
end