lexer version1 completed