At quick investigation, it is actually a valid define, like:
``` #!define NAME[SEPARATOR]VALUE ```
So:
``` #!define X-Y ```
is like X is defined with the value '-Y'.
Anyhow, I added some rules in the grammar to try to catch this situation, one can add space after ID to separate more visible from the value.