Some changes to the lexer and parser.
Refactor the lexer (and also the parser, a bit)!