Implement Lexer