示例#1
0
        internal override ExValue Evaluate <TKey>(TagBatchInstance <TKey> instance)
        {
            ExValue left  = LeftHand.Evaluate(instance);
            ExValue right = RightHand.Evaluate(instance);

            switch (Token.TokenType)
            {
            case TagTokenType.IsEqual:
                return(new ExValue(left.Equals(right)));

            case TagTokenType.IsNot:
                return(new ExValue(!left.Equals(right)));

            case TagTokenType.IsLte:
                return(new ExValue(left.CompareTo(right) <= 0));

            case TagTokenType.IsLessThan:
                return(new ExValue(left.CompareTo(right) < 0));

            case TagTokenType.IsGreaterThan:
                return(new ExValue(left.CompareTo(right) > 0));

            case TagTokenType.IsGte:
                return(new ExValue(left.CompareTo(right) >= 0));

            default:
                throw new InvalidOperationException();
            }
        }
示例#2
0
        internal override ExValue Evaluate <TKey>(TagBatchInstance <TKey> instance)
        {
            ExValue leftValue  = LeftHand.Evaluate(instance);
            bool    leftResult = leftValue.ToBool();

            if (IsAnd != leftResult)
            {
                // ((IsAnd && !leftResult) || (IsOr && leftResult))
                return(leftValue);
            }

            return(RightHand.Evaluate(instance));
        }
示例#3
0
        public NumberExpression(TagToken token)
            : base(token)
        {
            string tv = token.Value;

            if (tv.IndexOfAny(new char[] { '.', 'E', 'e' }) >= 0)
            {
                _value = new ExValue(double.Parse(tv));
            }
            else if (tv.StartsWith("0x", StringComparison.Ordinal))
            {
                _value = new ExValue(int.Parse(tv, System.Globalization.NumberStyles.AllowHexSpecifier));
            }
            else
            {
                _value = new ExValue(int.Parse(tv, System.Globalization.NumberStyles.AllowLeadingSign));
            }
        }