private void ParseGroupName(int c, int terminator) {
if (c == terminator || c == -1) {
throw MakeError("group name is empty");
}
while (true) {
Append((char)c);
c = Read();
if (c == terminator || c == ')') {
Append((char)c);
break;
} else if (c == -1) {
throw MakeError("unterminated group name");
}
}
}