public String NextToken() {
if (index == oid.Length) {
return null;
}
int end = index + 1;
bool quoted = false;
bool escaped = false;
buf.Length = 0;
while (end != oid.Length) {
char c = oid[end];
if (c == '"') {
if (!escaped) {
quoted = !quoted;
}
else {
buf.Append(c);
}
escaped = false;
}
else {
if (escaped || quoted) {
buf.Append(c);
escaped = false;
}
else if (c == '\\') {
escaped = true;
}
else if (c == ',') {
break;
}
else {
buf.Append(c);
}
}
end++;
}
index = end;
return buf.ToString().Trim();
}
}