Consider the negation operator (!) to be a word even if it is not followed
by whitespace. This allows "optional !foo" which is what most programmers
are naturally going to tend to do as opposed to "optional ! foo".
Fix the negation (!) operator so that it binds only to the word that
immediately follows it.