(** Provide a lexer for the langage. The function [main] read the source and identify the next to token to give to the parser. Personal note: parsing the QSP is really complicated. The language was designed for regex and I have to twist the lexer in order to get something working. *) exception EOF exception UnclosedQuote (** Error reported when a string is not closed properly *) exception LexError of string val discard : Lexbuf.t -> unit (** Discard the remaining element in the location until the end of this one. Used in case of unrecoverable error *) val main : Lexbuf.t -> Tokens.token (** Main entry point. This function is called after each token returned *)