Exemplo n.º 1
0
        private Tuple <BlockExpression, BlockExpression> BuildIfCondition(IfBranchVariable ifBranch, Context context)
        {
            IEnumerable <Expression> paramExpressions = Enumerable.Empty <Expression>();

            if (ifBranch.ParamVariables != null && ifBranch.ParamVariables.Any())
            {
                paramExpressions = Util.BuildExpression(ifBranch.ParamVariables, context.ValuePairs, context.Datas);
            }

            ICollection <Expression> expressions = new List <Expression>();

            ExpressionBuilder.BuildExpression(expressions, ifBranch.Variables, context.ValuePairs, context.Datas);
            return(Tuple.Create(paramExpressions.Any() ? Expression.Block(paramExpressions.ToArray()) : null, Expression.Block(expressions.ToArray())));
        }
Exemplo n.º 2
0
        public IfBranchVariable CreateIfBranchVariable(IEnumerable <Token> tokens, Token token, ICollection <Variable> variables, int i)
        {
            var branchVariable = new IfBranchVariable
            {
                Value = token.Flag
            };

            ICollection <Token> subTokens = new List <Token>();

            Util.CollectionTokens(tokens, subTokens, i + 1, Strings.StartFlag1, Strings.EndFlag1, true);
            var count = subTokens.Count();

            branchVariable.TokenCount = count;
            ICollection <Variable> paramVariables = new List <Variable>();

            branchVariable.ParamVariables = paramVariables;

            for (var a = 0; a < count; a++)
            {
                var subToken = subTokens.ElementAt(a);
                var handler  = VariableHandleFactory.Create(subToken.Flag);
                a = handler.TryAddVariable(subTokens, subToken, paramVariables, a);
            }

            subTokens.Clear();

            ICollection <Variable> bodyVariables = new List <Variable>();

            branchVariable.Variables = bodyVariables;
            Util.CollectionTokens(tokens, subTokens, i + 3 + count, Strings.StartFlag2, Strings.EndFlag2, true);
            count = subTokens.Count();

            for (var a = 0; a < count; a++)
            {
                var subToken = subTokens.ElementAt(a);
                var handler  = VariableHandleFactory.Create(subToken.Flag);
                a = handler.TryAddVariable(subTokens, subToken, bodyVariables, a);
            }

            branchVariable.TokenCount += count;
            return(branchVariable);
        }