sig
  type pattern = string * string
  exception Error of string
  type location = int * int
  and location_function = int -> Token.location
  and 'a lexer_func = char Stream.t -> 'Stream.t * Token.location_function
  and 'a glexer = {
    tok_func : 'Token.lexer_func;
    tok_using : Token.pattern -> unit;
    tok_removing : Token.pattern -> unit;
    tok_match : Token.pattern -> '-> string;
    tok_text : Token.pattern -> string;
    mutable tok_comm : Token.location list option;
  }
  val lexer_text : Token.pattern -> string
  val default_match : Token.pattern -> string * string -> string
  val lexer_func_of_parser :
    (char Stream.t -> 'a * Token.location) -> 'Token.lexer_func
  val lexer_func_of_ocamllex : (Lexing.lexbuf -> 'a) -> 'Token.lexer_func
  val make_stream_and_location :
    (unit -> 'a * Token.location) -> 'Stream.t * Token.location_function
  val eval_char : string -> char
  val eval_string : string -> string
end