[Chapter 2] Second pass at the lexer