Clean up ident parsing

Use a union for token data