private IEnumerable<IFormulaToken> InterpretParameters(IEnumerable<IFormulaToken> tokens)
{
var expectSeparator = false;
foreach (var context in tokens.WithContext())
{
if (IsCancellationRequested) yield break;
var previousToken = context[0];
var token = context[1];
// parameter separator
if (token is FormulaTokenParameterSeparator)
{
if (!expectSeparator)
{
SetParsingError(
source: Range.Empty(GetOrigin(token).Start),
message: AppResourcesHelper.Get("FormulaInterpreter_Brackets_EmptyArgument"));
yield break;
}
expectSeparator = false;
continue;
}
// any argument
if (token != null)
{
if (expectSeparator)
{
SetParsingError(
source: Range.Empty(GetOrigin(token).Start),
message: AppResourcesHelper.Get("FormulaInterpreter_Brackets_ArgumentDoubleValue"));
yield break;
}
yield return token;
expectSeparator = true;
continue;
}
// last token
if (token == null && !expectSeparator)
{
SetParsingError(
source: Range.Empty(GetOrigin(previousToken).End),
message: AppResourcesHelper.Get("FormulaInterpreter_Brackets_EmptyArgument"));
yield break;
}
}
}