Lexer Reads text character by character and breaks them into tokens Token is a simple object that has a type and optionally a value Tokens make up code