Updated Lexer to preserve whitespace as separate tokens.