Catrobat.IDE.Core.Formulas.FormulaInterpreter.CompleteNumbers C# (CSharp) Метод

CompleteNumbers() приватный Метод

Compare InterpretNumbers.
private CompleteNumbers ( IEnumerable tokens ) : IEnumerable
tokens IEnumerable
Результат IEnumerable
        private IEnumerable<IFormulaToken> CompleteNumbers(IEnumerable<IFormulaToken> tokens)
        {
            var numberTokens = new List<IFormulaToken>();
            var decimalSeparators = 0;

            foreach (var token in tokens.WithContext().Select(context => context[1]))
            {
                // append digit
                if (token is FormulaNodeNumber)
                {
                    numberTokens.Add(token);
                    continue;
                }

                // append decimal separator
                if (token is FormulaTokenDecimalSeparator)
                {
                    if (decimalSeparators == 0)
                    {
                        numberTokens.Add(token);
                        decimalSeparators++;
                        continue;
                    }
                    decimalSeparators++;
                }

                // create common token of value
                if (numberTokens.Count != 0)
                {
                    IFormulaToken commonToken;
                    if (numberTokens.Count == 1)
                    {
                        if (decimalSeparators != 0) yield break;
                        commonToken = numberTokens[0];
                    }
                    else
                    {
                        commonToken = FormulaTreeFactory.CreateNumberNode(default(double));
                        SetOrigin(commonToken, GetOrigin(numberTokens));
                    }
                    yield return commonToken;
                    if (decimalSeparators > 1) yield break;
                    numberTokens.Clear();
                    decimalSeparators = 0;
                }

                // yield any non-number token
                yield return token;
            }
        }