updated the lexer, added more test cases