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