Пример #1
0
        private void DoOr(Stack <Datum> stack)
        {
            BooleanDatum b = stack.Pop() as BooleanDatum;
            BooleanDatum a = stack.Pop() as BooleanDatum;
            BooleanDatum result;

            if (a == null)
            {
                if (b == null)
                {
                    result = new BooleanDatum(false);
                }
                else
                {
                    result = new BooleanDatum(b.value);
                }
            }
            else if (b == null)
            {
                result = new BooleanDatum(a.value);
            }
            else
            {
                result = new BooleanDatum(a.value || b.value);
            }
            stack.Push(result);
        }
Пример #2
0
        private void DoNotEqual(Stack <Datum> stack)
        {
            Datum        a      = stack.Pop();
            Datum        b      = stack.Pop();
            BooleanDatum result = new BooleanDatum(!a.Equals(b));

            stack.Push(result);
        }
Пример #3
0
        public override bool Equals(object obj)
        {
            BooleanDatum other = obj as BooleanDatum;

            if (other == null)
            {
                return(false);
            }
            return(value == other.value);
        }
Пример #4
0
        private void DoLessThanOrEquals(Stack <Datum> stack)
        {
            NumericDatum b = stack.Pop() as NumericDatum;
            NumericDatum a = stack.Pop() as NumericDatum;
            BooleanDatum result;

            if (a == null)
            {
                result = new BooleanDatum(true);
            }
            else if (b == null)
            {
                result = new BooleanDatum(false);
            }
            else
            {
                result = new BooleanDatum(a.number <= b.number);
            }
            stack.Push(result);
        }