예제 #1
0
            public void Evaluate(FormattedSentence.Context context, Stack <FormattedSentence.IEvaluationStackMember> evaluationStack)
            {
                FormattedSentence.IEvaluationStackMember evaluationStackMember  = evaluationStack.Pop();
                FormattedSentence.IEvaluationStackMember evaluationStackMember2 = evaluationStack.Pop();
                FormattedSentence.IEvaluationStackMember evaluationStackMember3 = evaluationStack.Pop();
                bool flag = (!evaluationStackMember3.IsEmpty && !evaluationStackMember.IsEmpty) || (!evaluationStackMember3.IsEmpty && evaluationStackMember == FormattedSentence.StringConstant.Null) || (!evaluationStackMember.IsEmpty && evaluationStackMember3 == FormattedSentence.StringConstant.Null);

                evaluationStack.Push(FormattedSentence.CompositeString.Create(new FormattedSentence.IEvaluationStackMember[]
                {
                    evaluationStackMember3,
                    flag ? evaluationStackMember2 : FormattedSentence.StringConstant.Null,
                    evaluationStackMember
                }));
            }
예제 #2
0
 public static FormattedSentence.IEvaluationStackMember Create(params FormattedSentence.IEvaluationStackMember[] members)
 {
     FormattedSentence.IEvaluationStackMember evaluationStackMember = null;
     foreach (FormattedSentence.IEvaluationStackMember evaluationStackMember2 in members)
     {
         if (!evaluationStackMember2.IsEmpty)
         {
             if (evaluationStackMember != null)
             {
                 return(new FormattedSentence.CompositeString(members));
             }
             evaluationStackMember = evaluationStackMember2;
         }
     }
     if (evaluationStackMember == null)
     {
         return(FormattedSentence.StringConstant.EmptySpacer);
     }
     return(evaluationStackMember);
 }
예제 #3
0
        public string Evaluate(FormattedSentence.Context context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            Stack <FormattedSentence.IEvaluationStackMember> stack = new Stack <FormattedSentence.IEvaluationStackMember>();

            foreach (FormattedSentence.IInstructionQueueMember instructionQueueMember in this.instructionQueue)
            {
                instructionQueueMember.Evaluate(context, stack);
            }
            FormattedSentence.IEvaluationStackMember evaluationStackMember = stack.Pop();
            if (stack.Count > 0)
            {
                throw new InvalidOperationException("FormattedSentence execution produced unexpected results: more than 1 result element");
            }
            StringBuilder stringBuilder = new StringBuilder();

            evaluationStackMember.WriteTo(stringBuilder);
            return(stringBuilder.ToString());
        }