`sig
type position =
Lexing.position = {
pos_fname : string;
pos_lnum : int;
pos_bol : int;
pos_cnum : int;
}
val dummy_pos : BatLexing.position
type lexbuf =
Lexing.lexbuf = {
refill_buff : BatLexing.lexbuf -> unit;
mutable lex_buffer : string;
mutable lex_buffer_len : int;
mutable lex_abs_pos : int;
mutable lex_start_pos : int;
mutable lex_curr_pos : int;
mutable lex_last_pos : int;
mutable lex_last_action : int;
mutable lex_eof_reached : bool;
mutable lex_mem : int array;
mutable lex_start_p : BatLexing.position;
mutable lex_curr_p : BatLexing.position;
}
val from_input : BatIO.input -> BatLexing.lexbuf
val from_string : string -> BatLexing.lexbuf
val from_function : (string -> int -> int) -> BatLexing.lexbuf
val lexeme : BatLexing.lexbuf -> string
val lexeme_char : BatLexing.lexbuf -> int -> char
val lexeme_start : BatLexing.lexbuf -> int
val lexeme_end : BatLexing.lexbuf -> int
val lexeme_start_p : BatLexing.lexbuf -> BatLexing.position
val lexeme_end_p : BatLexing.lexbuf -> BatLexing.position
val new_line : BatLexing.lexbuf -> unit
val flush_input : BatLexing.lexbuf -> unit
val sub_lexeme : BatLexing.lexbuf -> int -> int -> string
val sub_lexeme_opt : BatLexing.lexbuf -> int -> int -> string option
val sub_lexeme_char : BatLexing.lexbuf -> int -> char
val sub_lexeme_char_opt : BatLexing.lexbuf -> int -> char option
type lex_tables =
Lexing.lex_tables = {
lex_base : string;
lex_backtrk : string;
lex_default : string;
lex_trans : string;
lex_check : string;
lex_base_code : string;
lex_backtrk_code : string;
lex_default_code : string;
lex_trans_code : string;
lex_check_code : string;
lex_code : string;
}
val engine : BatLexing.lex_tables -> int -> BatLexing.lexbuf -> int
val new_engine : BatLexing.lex_tables -> int -> BatLexing.lexbuf -> int
val from_channel : BatIO.input -> BatLexing.lexbuf
end`