private PosixCharacterClass ParsePosixClass(string/*!*/ name) {
switch (name) {
case "alnum": return PosixCharacterClass.Alnum;
case "alpha": return PosixCharacterClass.Alpha;
case "ascii": return PosixCharacterClass.Ascii;
case "blank": return PosixCharacterClass.Blank;
case "cntrl": return PosixCharacterClass.Cntrl;
case "digit": return PosixCharacterClass.Digit;
case "graph": return PosixCharacterClass.Graph;
case "lower": return PosixCharacterClass.Lower;
case "print": return PosixCharacterClass.Print;
case "punct": return PosixCharacterClass.Punct;
case "space": return PosixCharacterClass.Space;
case "upper": return PosixCharacterClass.Upper;
case "xdigit": return PosixCharacterClass.XDigit;
case "word": return PosixCharacterClass.Word;
default:
throw MakeError("invalid POSIX bracket type");
}
}