implement lexer without spec
add spec, small fix
part of spec for lexer, small fix