There is a glitch associated with the operators chosen for
pre-processor conditionals: %( %? %: %). The problem is that the
character sequence %( could also occur in an ordinary expression:
This ambiguity is just like C++'s ">>" vs "> >" markers for closing
What shall we do about this? Nothing, relying on the generated parse
error message to plop a few spaces in? Rename %( %) to %[ %], which I
believe is immune?