private CharacterSet/*!*/ ParseCharacterEscape(int escape) {
int result = ParseSingleByteCharacterEscape(escape);
if (result != -1) {
return new CharacterSet(Escape(result), true);
}
switch (escape) {
case 'h':
case 'H':
return MakePosixCharacterClass(PosixCharacterClass.XDigit, escape == 'h');
case 'p':
case 'P':
return ParseCharacterCategoryName(escape);
case 's':
return new CharacterSet(@"\s");
case 'S':
return new CharacterSet(@"\S");
case 'd':
return new CharacterSet(@"\d");
case 'D':
return new CharacterSet(@"\D");
case 'w':
return new CharacterSet(@"\w");
case 'W':
return new CharacterSet(@"\W");
default:
// ignore backslash unless needed
return new CharacterSet(Escape(escape), true);
}
}