Catrobat.IDE.Core.Formulas.FormulaInterpreter.CompleteOperatorForward C# (CSharp) Method

CompleteOperatorForward() private method

private CompleteOperatorForward ( IEnumerable tokens, IFormulaOperator operatorToken ) : IEnumerable
tokens IEnumerable
operatorToken IFormulaOperator
return IEnumerable
        private IEnumerable<IFormulaToken> CompleteOperatorForward(IEnumerable<IFormulaToken> tokens, IFormulaOperator operatorToken)
        {
            var operatorOrder = operatorToken.Order;
            return tokens
                .TakeWhile(token => !(token is FormulaTokenParameterSeparator))
                .WithContext()
                .TakeWhile(context =>
                {
                    var previousToken = context[0];
                    var token = context[1];
                    if (token == null) return false;
                    var infixOperatorToken = token as FormulaNodeInfixOperator;

                    var expectValue = previousToken == null || previousToken is IFormulaOperator;
                    if (expectValue)
                    {
                        // missing value of operator
                        return infixOperatorToken == null;
                    }

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