public bool EvaluateConditional(ExecutionContext ctx, string src, int skipFirst = 1) { MatchCollection c = Constants.Engine.ConditionalTest.Matches(src); // Constants.Engine.AllTokens.FirstOrDefault(t => Regex.IsMatch(token, t.Item1)); // Get Item2 from this - can form a type name, and build, and set content // Enqueue these objects // while (queue size > 1) // deq, add to eval object // if eval object can execute, make it do so, enq its return value // and so on foreach (Match m in c) { if (skipFirst-- <= 0) { var token = m.Value; var tok = Constants.Engine.AllTokens.FirstOrDefault(t => Regex.IsMatch(token, t.Item1)); ExecutionState.Enqueue(CreateExpressionObject(tok.Item2, m.Value)); } } return(Execute(ctx).As <bool>(ctx)); }