Separated lexer and the rest of the compiler