Some of the error messages are better.

But still need improvement. Instead of giving the Gen functions the lexer's
state, we should pass the single symbol's position in the code.