Range difference doesn't work in cases when the ranges include multi-code-unit characters, because re2c applies the difference operator \ after it transforms character ranges into graphs representing these ranges (for example, the whole Unicode range [^] looks like this: http://re2c.org/_images/utf8_any.png --- it's not a simple matter of OR-ing all sub-ranges).
Discussion started in #235.
To fix this, re2c would need to delay range expansion until it parses the whole regular expression.