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

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

private CompleteOperatorBackwards ( IEnumerable tokens, IFormulaOperator operatorToken ) : IEnumerable
tokens IEnumerable
operatorToken IFormulaOperator
Результат IEnumerable
        private IEnumerable<IFormulaToken> CompleteOperatorBackwards(IEnumerable<IFormulaToken> tokens, IFormulaOperator operatorToken)
        {
            var operatorOrder = operatorToken.Order;
            return tokens
                .TakeWhile(token => !(token is FormulaTokenParameterSeparator))
                .WithContext()
                .TakeWhile(context =>
                {
                    var nextToken = context[0];
                    var token = context[1];
                    if (token == null) return false;
                    var operatorToken2 = token as IFormulaOperator;

                    var expectValue = nextToken == null || nextToken is FormulaNodeInfixOperator;
                    if (expectValue)
                    {
                        // missing value of operator
                        return operatorToken2 == null;
                    }

                    // operator fully completed
                    return operatorToken2 != null && operatorOrder < operatorToken2.Order;
                }).Select(context => context[1]);
        }