private static Vdf Get(VdfTokenizer tokenizer, bool child = false) {
var section = new Vdf();
while (!tokenizer.IsFinished) {
switch (tokenizer.ReadNext()) {
case null:
if (child) throw new Exception("Unexpected end of file");
return section;
case VdfToken.End:
if (!child) throw new Exception("Unexpected end of section");
return section;
case VdfToken.Begin:
throw new Exception("Unexpected begin of section");
}
var key = tokenizer.Consume();
switch (tokenizer.ReadNext()) {
case null:
throw new Exception("Unexpected end of file");
case VdfToken.End:
throw new Exception("Unexpected end of section");
case VdfToken.Begin:
section.Children[key] = Get(tokenizer, true);
break;
case VdfToken.String:
section.Values[key] = tokenizer.Consume();
break;
}
}
return section;
}