sig   type position = {     pos_fname : string;     pos_lnum : int;     pos_bol : int;     pos_cnum : int;   }   val dummy_pos : Lexing.position   type lexbuf = {     refill_buff : Lexing.lexbuf -> unit;     mutable lex_buffer : bytes;     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 : Lexing.position;     mutable lex_curr_p : Lexing.position;   }   val from_channel : Pervasives.in_channel -> Lexing.lexbuf   val from_string : string -> Lexing.lexbuf   val from_function : (bytes -> int -> int) -> Lexing.lexbuf   val lexeme : Lexing.lexbuf -> string   val lexeme_char : Lexing.lexbuf -> int -> char   val lexeme_start : Lexing.lexbuf -> int   val lexeme_end : Lexing.lexbuf -> int   val lexeme_start_p : Lexing.lexbuf -> Lexing.position   val lexeme_end_p : Lexing.lexbuf -> Lexing.position   val new_line : Lexing.lexbuf -> unit   val flush_input : Lexing.lexbuf -> unit   val sub_lexeme : Lexing.lexbuf -> int -> int -> string   val sub_lexeme_opt : Lexing.lexbuf -> int -> int -> string option   val sub_lexeme_char : Lexing.lexbuf -> int -> char   val sub_lexeme_char_opt : Lexing.lexbuf -> int -> char option   type 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 : Lexing.lex_tables -> int -> Lexing.lexbuf -> int   val new_engine : Lexing.lex_tables -> int -> Lexing.lexbuf -> int end