Too many questions
for just one day, for just a not a good english speaker. I will do my try.
First of all, I must say SynFacilSyn was designed to be fast more than flexible. That's why his regex support is very basic. But if you find other similar highlighter faster, I will retire from programming and start to cook.
Here is the snipet for defining a new token type called 'Directive' and restricting it to a small list. Is this even possible?
<Token CharsStart="$" Content='A..Za..z' Attribute='Directive'>
$Description
$Short
$Long
$IfDef
$IfNotDef
$Else
$Define
$UnDefine
$Region
</Token>
It's possible to define, but it won't work as you expected. Only the definition of token will be accepted. the words, will be ignored.
In SynFacilSyn, it's called "subset of a token". And there are only two token types which accept "subsets": Identifiers and Symbols. So if you want to use "subsets", you could use a more general definition for identifiers:
<Identifiers CharsStart= "$A..Za..z_" Content = "A..Za..z">
<token attribute="Directive">
$Description
$Short
$Long
$IfDef
</token>
</Identifiers>
You can define many "subsets" for identifiers, each one, with a different token type, and attributes. All the other tokens wich match the definition of identifier, but not is part of a subset, will be considered as a token of type "identifier".