public string ParseBasicName()
{
if (PeekAndDiscard('?'))
{
if (!PeekAndDiscard('$'))
return ParseOperatorCode();
// Template!
var t = new TemplateParser(this).Parse();
return t.Name;
}
int iStart = i;
while (i < str.Length && str[i] != '@')
++i;
string name = str.Substring(iStart, i - iStart);
++i;
namesSeen.Add(name);
return name;
}