finished coding lexer, not tested yet