Example #1
0
        public override int GetHashCode()
        {
            var hashCode = 0;

            unchecked
            {
                if (LeftContext != null)
                {
                    hashCode = (23 * hashCode) + LeftContext.GetHashCode();
                }
                if (LeftValue != null)
                {
                    hashCode = (23 * hashCode) + LeftValue.GetHashCode();
                }
                if (LeftSetter != null)
                {
                    hashCode = (23 * hashCode) + LeftSetter.GetHashCode();
                }
                if (RightValue != null)
                {
                    hashCode = (23 * hashCode) + RightValue.GetHashCode();
                }
                if (RightSetter != null)
                {
                    hashCode = (23 * hashCode) + RightSetter.GetHashCode();
                }
                if (RightContext != null)
                {
                    hashCode = (23 * hashCode) + RightContext.GetHashCode();
                }
            }
            return(hashCode);
        }
Example #2
0
        public sealed override Func <TwitterStatus, bool> GetBooleanValueProvider()
        {
            var l = LeftValue.GetNumericValueProvider();
            var r = RightValue.GetNumericValueProvider();

            return(BuildEvaluator(l, r));
        }
        public override ExpressionCode GenerateCode()
        {
            if (LeftValue.GenerateCode().Type == "string")
            {
                return new ExpressionCode {
                           Code = LeftValue.GenerateCode().Code + " += " + RightValue.GenerateCode().Code, Type = "string"
                }
            }
            ;
            if (LeftValue.GenerateCode().Type == "char")
            {
                return new ExpressionCode {
                           Code = LeftValue.GenerateCode().Code + " += " + RightValue.GenerateCode().Code, Type = "char"
                }
            }
            ;
            if (LeftValue.GenerateCode().Type == "int")
            {
                return new ExpressionCode {
                           Code = LeftValue.GenerateCode().Code + " += " + RightValue.GenerateCode().Code, Type = "int"
                }
            }
            ;
            return(new ExpressionCode {
                Code = LeftValue.GenerateCode().Code + " += " + RightValue.GenerateCode().Code, Type = "float"
            });
        }
    }
}
Example #4
0
        public override Func <TwitterStatus, long> GetNumericValueProvider()
        {
            var lnp = LeftValue.GetNumericValueProvider();
            var rnp = RightValue.GetNumericValueProvider();

            return(_ => lnp(_) - rnp(_));
        }
Example #5
0
        public override Func <TwitterStatus, string> GetStringValueProvider()
        {
            var lsp = LeftValue.GetStringValueProvider();
            var rsp = RightValue.GetStringValueProvider();

            return(_ => lsp(_) + rsp(_));
        }
        public override Func <TwitterStatus, bool> GetBooleanValueProvider()
        {
            var lbp = LeftValue.GetBooleanValueProvider();
            var rbp = RightValue.GetBooleanValueProvider();

            return(_ => lbp(_) || rbp(_));
        }
Example #7
0
 public override StringComparison GetStringComparison()
 {
     return(LeftValue.GetStringComparison() == StringComparison.CurrentCulture ||
            RightValue.GetStringComparison() == StringComparison.CurrentCulture
         ? StringComparison.CurrentCulture
         : StringComparison.CurrentCultureIgnoreCase);
 }
Example #8
0
        public override Func <TwitterStatus, bool> GetBooleanValueProvider()
        {
            if (CompareAsString())
            {
                var haystack = LeftValue.GetStringValueProvider();
                var needle   = RightValue.GetStringValueProvider();
                return(t =>
                {
                    var h = haystack(t);
                    var n = needle(t);
                    if (h == null || n == null)
                    {
                        return false;
                    }
                    return h.IndexOf(n, GetStringComparison()) >= 0;
                });
            }
            var lsp = LeftValue.GetSetValueProvider();

            if (RightValue.SupportedTypes.Contains(FilterExpressionType.Numeric))
            {
                var rnp = RightValue.GetNumericValueProvider();
                return(_ => lsp(_).Contains(rnp(_)));
            }
            var rsp = RightValue.GetSetValueProvider();

            return(_ =>
            {
                var ls = lsp(_);
                return rsp(_).Any(ls.Contains);
            });
        }
Example #9
0
        public override Func <TwitterStatus, IReadOnlyCollection <long> > GetSetValueProvider()
        {
            var lsp = LeftValue.GetSetValueProvider();
            var rsp = RightValue.GetSetValueProvider();

            return(_ => lsp(_).Except(rsp(_)).ToList());
        }
Example #10
0
        private FilterExpressionType GetArgumentIntersectTypes()
        {
            var supported = LeftValue.SupportedTypes
                            .Intersect(RightValue.SupportedTypes)
                            .Except(new[] { FilterExpressionType.Set })
                            .ToArray();

            if (supported.Any())
            {
                return(supported.First());
            }
            supported = LeftValue.SupportedTypes
                        .Except(new[] { FilterExpressionType.Set })
                        .ToArray();
            if (supported.Any())
            {
                return(supported.First());
            }
            // not matched
            throw FilterQueryException.CreateUnsupportedType(
                      LeftValue.ToQuery(),
                      new[]
            {
                FilterExpressionType.Boolean,
                FilterExpressionType.Numeric,
                FilterExpressionType.String
            },
                      this.ToQuery());
        }
Example #11
0
 public override string GetBooleanSqlQuery()
 {
     return(GetStringComparison() == StringComparison.CurrentCultureIgnoreCase
         ? "LOWER(" + LeftValue.GetStringSqlQuery() + ") LIKE LOWER('%" +
            RightValue.GetStringSqlQuery().Unwrap() + "') escape '\\'"
         : LeftValue.GetStringSqlQuery() + " LIKE '%" + RightValue.GetStringSqlQuery().Unwrap() +
            "' escape '\\'");
 }
Example #12
0
 public MultiParser(IMultiParser <TInput, TMiddle> inner, Func <IParser <TInput, TMiddle>, IMultiParser <TInput, TOutput> > getParser, string name = "")
 {
     Assert.ArgumentNotNull(inner, nameof(inner));
     Assert.ArgumentNotNull(getParser, nameof(getParser));
     _inner     = inner;
     _left      = new LeftValue(name);
     _right     = getParser(_left);
     _getParser = getParser;
     Name       = name;
 }
Example #13
0
 /// <summary>
 /// Returns a hash code of the wrapped value of the Either
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode() =>
 IsBottom
         ? -1
         : IsRight
             ? RightValue == null
                 ? 0
                 : RightValue.GetHashCode()
             : LeftValue == null
                 ? 0
                 : LeftValue.GetHashCode();
Example #14
0
        private static RightParser <char, LexicalToken> EndCheckedToken(LeftValue <OffsetValue <string> > left, Parser <char> scanner, SyntaxKind kind, string expectedEndChars) =>
        Rule(left, Text(scanner),
             (trivia, text) =>
        {
            // validate the expected last character is correct
            var dx = text.EndsWith(expectedEndChars)
                        ? null
                        : new Diagnostic[] { DiagnosticFacts.GetMissingText(expectedEndChars) };

            return(new LexicalToken(kind, trivia.Value, text, dx));
        });
Example #15
0
        public override Func <TwitterStatus, long> GetNumericValueProvider()
        {
            var lnp = LeftValue.GetNumericValueProvider();
            var rnp = RightValue.GetNumericValueProvider();

            return(_ =>
            {
                var divider = rnp(_);
                return divider == 0 ? 0 : lnp(_) / divider;
            });
        }
Example #16
0
        public Parser(IParser <TInput, TOutput> initial, Func <IParser <TInput, TOutput>, IParser <TInput, TOutput> > getRight, Quantifier arity, string name = "")
        {
            Assert.ArgumentNotNull(initial, nameof(initial));
            Assert.ArgumentNotNull(getRight, nameof(getRight));

            _initial    = initial;
            _quantifier = arity;
            _left       = new LeftValue(name);
            _right      = getRight(_left);
            _getRight   = getRight;
            Name        = name;
        }
Example #17
0
        public override Func <TwitterStatus, bool> GetBooleanValueProvider()
        {
            // pre-check regular expressions
            var sv = this.RightValue as StringValue;

            if (sv != null)
            {
                this.AssertRegex(sv);
                var haystack = LeftValue.GetStringValueProvider();
                // optimize by pre-compiling
                var needleRegex = new Regex(sv.Value, RegexOptions.Compiled);
                return(t =>
                {
                    var h = haystack(t);
                    if (h == null)
                    {
                        return false;
                    }
                    try
                    {
                        return needleRegex.IsMatch(h);
                    }
                    catch (ArgumentException)
                    {
                        // exception occured
                        return false;
                    }
                });
            }
            else
            {
                var haystack = LeftValue.GetStringValueProvider();
                var needle   = RightValue.GetStringValueProvider();
                return(t =>
                {
                    var h = haystack(t);
                    var n = needle(t);
                    if (h == null || n == null)
                    {
                        return false;
                    }
                    try
                    {
                        return Regex.IsMatch(h, n);
                    }
                    catch (ArgumentException)
                    {
                        // exception occured
                        return false;
                    }
                });
            }
        }
Example #18
0
        public override Task <bool> Evaluate(CancellationToken cancellationToken)
        {
            return(new Task <bool>(() =>
            {
                if (LeftValue is string == false)
                {
                    throw new InvalidOperationException("Matching operator : matching to a regular expression can be applied only on string values. ");
                }

                return Regex.IsMatch(LeftValue.ToString(), Pattern);
            }, cancellationToken, TaskCreationOptions.AttachedToParent));
        }
Example #19
0
        public override string GetBooleanSqlQuery()
        {
            var rq = RightValue.GetSetSqlQuery();

            if (LeftValue.SupportedTypes.Contains(FilterExpressionType.Numeric))
            {
                return(LeftValue.GetNumericSqlQuery() + " IN " + rq);
            }
            var lq = LeftValue.GetSetSqlQuery();

            // check intersection
            return("exists (" + lq.Unparenthesis() + " intersect " + rq.Unparenthesis() + ")");
        }
 private void Update()
 {
     //MiddleCenterTextBlock.Text = (BaseValue + LinkedCharacteristicValue).ToString();
     if (UsesLinkedCharacteristic)
     {
         MiddleLeftTextBlock.Text  = BaseValue.ToString();
         MiddleRightTextBlock.Text = (BaseValue + LinkedCharacteristicValue).ToString();
     }
     else
     {
         MiddleLeftTextBlock.Text  = LeftValue.ToString();
         MiddleRightTextBlock.Text = RightValue.ToString();
     }
 }
Example #21
0
     public override ExpressionCode GenerateCode()
     {
         if (LeftValue.GenerateCode().Type == "bool")
         {
             return new ExpressionCode {
                        Code = LeftValue.GenerateCode().Code + " |= " + RightValue.GenerateCode().Code, Type = "bool"
             }
         }
         ;
         return(new ExpressionCode {
             Code = LeftValue.GenerateCode().Code + " |= " + RightValue.GenerateCode().Code, Type = "int"
         });
     }
 }
Example #22
0
        public override string Execute(TriggerItem triggerItem)
        {
            string leftValue  = LeftValue.GetValue(triggerItem);
            string rightValue = RightValue.GetValue(triggerItem);

            switch (Operator)
            {
            case ExpressionOperator.Equal:
            case ExpressionOperator.NotEqual:
                bool result = false;
                if (rightValue.StartsWith("*") && rightValue.EndsWith("*"))
                {
                    result = leftValue.Contains(rightValue.Substring(1, rightValue.Length - 2));
                }
                else if (rightValue.StartsWith("*"))
                {
                    result = leftValue.StartsWith(rightValue.Substring(1));
                }
                else if (rightValue.EndsWith("*"))
                {
                    result = leftValue.StartsWith(rightValue.Substring(0, rightValue.Length - 1));
                }
                else
                {
                    result = leftValue == rightValue;
                }
                result = (Operator == ExpressionOperator.Equal ? result : !result);
                return(result ? "1" : "0");

            case ExpressionOperator.Contains:
                return(leftValue.Contains(rightValue) ? "1" : "0");

            case ExpressionOperator.StartsWith:
                return(leftValue.StartsWith(rightValue) ? "1" : "0");

            case ExpressionOperator.EndsWith:
                return(leftValue.EndsWith(rightValue) ? "1" : "0");

            case ExpressionOperator.And:
                return(leftValue == "1" && rightValue == "1" ? "1" : "0");

            case ExpressionOperator.Or:
                return(leftValue == "1" || rightValue == "1" ? "1" : "0");

            default:
                return("0");
            }
        }
Example #23
0
        public override Func <TwitterStatus, bool> GetBooleanValueProvider()
        {
            var haystack = LeftValue.GetStringValueProvider();
            var needle   = RightValue.GetStringValueProvider();

            return(t =>
            {
                var h = haystack(t);
                var n = needle(t);
                if (h == null || n == null)
                {
                    return false;
                }
                return h.EndsWith(n, GetStringComparison());
            });
        }
        public override int Execute(TriggerItem triggerItem)
        {
            int leftValue  = LeftValue.GetValue(triggerItem);
            int rightValue = RightValue.GetValue(triggerItem);

            switch (Operator)
            {
            case ExpressionOperator.Add:
                return(leftValue + rightValue);

            case ExpressionOperator.Subtract:
                return(leftValue - rightValue);

            case ExpressionOperator.Multiply:
                return(leftValue * rightValue);

            case ExpressionOperator.Divide:
                return(leftValue / rightValue);

            case ExpressionOperator.Equal:
                return(leftValue == rightValue ? 1 : 0);

            case ExpressionOperator.NotEqual:
                return(leftValue != rightValue ? 1 : 0);

            case ExpressionOperator.Larger:
                return(leftValue > rightValue ? 1 : 0);

            case ExpressionOperator.LargerOrEqual:
                return(leftValue >= rightValue ? 1 : 0);

            case ExpressionOperator.Smaller:
                return(leftValue < rightValue ? 1 : 0);

            case ExpressionOperator.SmallerOrEqual:
                return(leftValue <= rightValue ? 1 : 0);

            case ExpressionOperator.And:
                return((leftValue != 0) && (rightValue != 0) ? 1 : 0);

            case ExpressionOperator.Or:
                return((leftValue != 0) || (rightValue != 0) ? 1 : 0);

            default:
                return(0);
            }
        }
Example #25
0
        private static CompoundLeftValue /*!*/ MakeCompoundLeftValue(List <LeftValue> leading, LeftValue /*!*/ unsplat, List <LeftValue> trailing)
        {
            int leadingCount  = (leading != null ? leading.Count : 0);
            int trailingCount = (trailing != null ? trailing.Count : 0);
            var array         = new LeftValue[leadingCount + 1 + trailingCount];

            if (leadingCount > 0)
            {
                leading.CopyTo(array, 0);
            }
            array[leadingCount] = unsplat;
            if (trailingCount > 0)
            {
                trailing.CopyTo(array, leadingCount + 1);
            }
            return(new CompoundLeftValue(array, leadingCount));
        }
Example #26
0
        public override Func <TwitterStatus, bool> GetBooleanValueProvider()
        {
            var rsp = RightValue.GetSetValueProvider();

            if (LeftValue.SupportedTypes.Contains(FilterExpressionType.Numeric))
            {
                var lnp = LeftValue.GetNumericValueProvider();
                return(_ => rsp(_).Contains(lnp(_)));
            }
            var lsp = LeftValue.GetSetValueProvider();

            return(_ =>
            {
                var rs = rsp(_);
                return lsp(_).Any(rs.Contains);
            });
        }
Example #27
0
        public override int GetHashCode()
        {
            var hashCode = Rule.GetHashCode();

            unchecked
            {
                hashCode = (23 * hashCode) + BaseCorrespondence.GetHashCode();
                if (LeftValue != null)
                {
                    hashCode = (23 * hashCode) + LeftValue.GetHashCode();
                }
                if (RightValue != null)
                {
                    hashCode = (23 * hashCode) + RightValue.GetHashCode();
                }
            }
            return(hashCode);
        }
Example #28
0
        internal static string assignmentVar(LeftValue lval, NodeParent parent)
        {
            if (lval is LocalVariable)
            {
                var method = parent.OfType <MethodDefinition>().ToArray();
                if (method.Length > 0 && method[0].Parameters != null &&
                    method[0].Parameters.Mandatory.Where(p => p.ToString() == ((LocalVariable)lval).Name).Count() > 0)
                {
                    return("$" + Mangling.RubyIdentifierToPHP(((LocalVariable)lval).Name));
                }
                if (parent.OfType <ClassDefinition>().Count() == 0)
                {
                    return("$_locals->" + Mangling.RubyIdentifierToPHP(((LocalVariable)lval).Name));
                }
            }

            return(((Variable)lval).ToPHPVariable());
        }
Example #29
0
        public string GetVarName(LeftValueExpr expr)
        {
            if (expr == null || expr.LeftValue == null)
            {
                return(null);
            }

            LeftValue leftValue = expr.LeftValue;

            if (leftValue is VarRef)
            {
                return((leftValue as VarRef).VarName);
            }
            else
            {
                throw new Exception();
            }
        }
Example #30
0
        private RightValue readRightValue(LeftValue leftValue, Location loc)
        {
            if (leftValue is VarRef)
            {
                VarRef     var    = leftValue as VarRef;
                RightValue result = scopeStack.GetValue(var.VarName);
                if (result == null)
                {
                    throw new RuntimeException(new Error(ErrorType.VariableNotInitialized, loc, var.VarName));
                }
                else
                {
                    return(result);
                }
            }

            //只有上面一种情况
            throw new Exception();
        }
        private RightValue readRightValue(LeftValue leftValue, Location loc)
        {
            if (leftValue is VarRef)
            {
                VarRef var = leftValue as VarRef;
                RightValue result = scopeStack.GetValue(var.VarName);
                if (result == null)
                {
                    throw new RuntimeException(new Error(ErrorType.VariableNotInitialized, loc, var.VarName));
                }
                else
                {
                    return result;
                }
            }

            //只有上面一种情况
            throw new Exception();
        }