lexer, part 1