remove unnecessary code checking for end of tokens
Add peek function to lexer
combine a few states