static string ParseName(string input, ref int pos)
{
int end = pos;
for (; end < input.Length && (char.ToLower(input[end]) >= 'a' && char.ToLower(input[end]) <= 'z' || (input[end]) >= '0' && (input[end]) <= '9' || input[end] == '*'); end++) ;
if (end - pos == 0) return null;
var result = input.Substring(pos, end - pos);
pos = end;
return result;
}
static string ParseAttributeValue(string input, ref int pos, bool greedyProcessing = false)