add lexer implement