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()))); }
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); }