private IEnumerable<IFormulaToken> CompleteFunctionsForward(IEnumerable<IFormulaToken> tokens)
{
foreach (var context in tokens.WithContext())
{
var previousToken = context[0];
var token = context[1];
// attach parentheses to function
if (previousToken is IFormulaFunction)
{
// missing function argument
if (!(token is FormulaNodeParentheses)) yield break;
SetOrigin(previousToken, new[] { previousToken, token });
yield return previousToken;
continue;
}
// yield any other token
if (token != null && !(token is IFormulaFunction)) yield return token;
}
}