Esempio n. 1
0
        public override Value Evaluate()
        {
            var         stack = State.Stack;
            var         right = stack.Pop(true, LOCATION);
            var         left  = stack.Pop(false, LOCATION);
            Alternation alternation;

            if (left.Type == Value.ValueType.Alternation)
            {
                if (left is Variable)
                {
                    left = left.Resolve();
                }
                alternation = left as Alternation;
                alternation.Add(right);
                return(left);
            }
            alternation = new Alternation();
            alternation.Add(left);
            alternation.Add(right);
            return(alternation);
        }