public Invocation[] GetEntityNames(string line)
{
var entities = new Queue<Invocation>();
var stringWalker = new StringWalker();
var startIndex = 0;
line = line.Trim();
foreach (var currentPosition in stringWalker.Iterate(line))
{
if (currentPosition.Character == ' ' && !stringWalker.StateIs(StringWalkerState.InsideString) && !stringWalker.StateIs(StringWalkerState.InsideParentheses))
{
stringWalker.Abort();
return GetEntityNames(line.Substring(currentPosition.Index));
}
if (currentPosition.Character == '.' && stringWalker.HasNoState)
{
Enqueue(entities, line.Substring(startIndex, currentPosition.Index - startIndex));
startIndex = currentPosition.Index + 1;
}
}
Enqueue(entities, line.Substring(startIndex));
return entities.ToArray();
}