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