private ScriptToken GetFinalPartOfExpression(int currentPos, out ScriptStruct memberOfStruct, bool functionsOnly)
{
string charactersAfterDot;
bool staticAccess;
bool isThis;
ScriptStruct foundType = ParsePreviousExpression(currentPos, out charactersAfterDot, out staticAccess, out isThis);
memberOfStruct = foundType;
ScriptToken functionTyped = null;
if (charactersAfterDot.IndexOf('(') > 0)
{
charactersAfterDot = charactersAfterDot.Substring(0, charactersAfterDot.IndexOf('('));
}
if (foundType != null)
{
foreach (ScriptStruct thisStruct in GetAllStructsWithMatchingName(foundType.Name))
{
functionTyped = thisStruct.FindMemberFunction(charactersAfterDot);
if ((!functionsOnly) && (functionTyped == null))
{
functionTyped = thisStruct.FindMemberVariable(charactersAfterDot);
}
if (functionTyped != null)
{
break;
}
}
}
else
{
functionTyped = FindGlobalFunction(charactersAfterDot);
if (functionTyped == null)
{
functionTyped = FindLocalVariableWithName(currentPos, charactersAfterDot);
}
}
return functionTyped;
}