added token and lexer classes