Replace long cascaded if statements with a single map lookup.
Call keywords and operators "keywords".

Keywords (e.g. "if") and operators (e.g. ">") were referred to
as punct because some operators are punctuator characters.

But in most cases the name was not appropriate for the obvious
reason. So let's call it keyword. That may not be very correct
name (is ">" keyword?) but I think that's better than punct.
Handle "##" and "..." as keyword instead of identifier.