Return expected type for invalid numeric token
Fix expected type for invalid tokens

Previously all invalid tokens had expected type string instead of
e.g. character. Error messages were also misleading.