sig
  type lexbuf
  exception Error
  exception InvalidCodepoint of int
  val create : (int array -> int -> int -> int) -> Ulexing.lexbuf
  val from_stream : int Stream.t -> Ulexing.lexbuf
  val from_int_array : int array -> Ulexing.lexbuf
  val from_latin1_stream : char Stream.t -> Ulexing.lexbuf
  val from_latin1_channel : Pervasives.in_channel -> Ulexing.lexbuf
  val from_latin1_string : string -> Ulexing.lexbuf
  val from_utf8_stream : char Stream.t -> Ulexing.lexbuf
  val from_utf8_channel : Pervasives.in_channel -> Ulexing.lexbuf
  val from_utf8_string : string -> Ulexing.lexbuf
  type enc = Ascii | Latin1 | Utf8
  val from_var_enc_stream :
    Ulexing.enc Pervasives.ref -> char Stream.t -> Ulexing.lexbuf
  val from_var_enc_string :
    Ulexing.enc Pervasives.ref -> string -> Ulexing.lexbuf
  val from_var_enc_channel :
    Ulexing.enc Pervasives.ref -> Pervasives.in_channel -> Ulexing.lexbuf
  val lexeme_start : Ulexing.lexbuf -> int
  val lexeme_end : Ulexing.lexbuf -> int
  val loc : Ulexing.lexbuf -> int * int
  val lexeme_length : Ulexing.lexbuf -> int
  val lexeme : Ulexing.lexbuf -> int array
  val get_buf : Ulexing.lexbuf -> int array
  val get_start : Ulexing.lexbuf -> int
  val get_pos : Ulexing.lexbuf -> int
  val lexeme_char : Ulexing.lexbuf -> int -> int
  val sub_lexeme : Ulexing.lexbuf -> int -> int -> int array
  val latin1_lexeme : Ulexing.lexbuf -> string
  val latin1_sub_lexeme : Ulexing.lexbuf -> int -> int -> string
  val latin1_lexeme_char : Ulexing.lexbuf -> int -> char
  val utf8_lexeme : Ulexing.lexbuf -> string
  val utf8_sub_lexeme : Ulexing.lexbuf -> int -> int -> string
  val rollback : Ulexing.lexbuf -> unit
  val start : Ulexing.lexbuf -> unit
  val next : Ulexing.lexbuf -> int
  val mark : Ulexing.lexbuf -> int -> unit
  val backtrack : Ulexing.lexbuf -> int
end