Module Lexer

module Lexer: sig .. end

let init: unit => unit;
let token: Lexing.lexbuf => Parser.token;
let skip_sharp_bang: Lexing.lexbuf => unit;
type error = 
| Illegal_character of char
| Illegal_escape of string
| Unterminated_comment of Location.t
| Unterminated_string
| Unterminated_string_in_comment of Location.t * Location.t
| Keyword_as_label of string
| Literal_overflow of string
exception Error(error, Location.t);
let report_error: (Format.formatter, error) => unit;
let in_comment: unit => bool;
let in_string: unit => bool;
let print_warnings: Pervasives.ref(bool);
let comments: unit => list((string, Location.t));
let token_with_comments: Lexing.lexbuf => Parser.token;
let set_preprocessor:
  (
    unit => unit,
    (Lexing.lexbuf => Parser.token, Lexing.lexbuf) => Parser.token
  ) =>
  unit;