add lexer (not complete)