finish lexer impl