`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`