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); }
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" }); } } }
public override Func <TwitterStatus, long> GetNumericValueProvider() { var lnp = LeftValue.GetNumericValueProvider(); var rnp = RightValue.GetNumericValueProvider(); return(_ => lnp(_) - rnp(_)); }
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(_)); }
public override StringComparison GetStringComparison() { return(LeftValue.GetStringComparison() == StringComparison.CurrentCulture || RightValue.GetStringComparison() == StringComparison.CurrentCulture ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase); }
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); }); }
public override Func <TwitterStatus, IReadOnlyCollection <long> > GetSetValueProvider() { var lsp = LeftValue.GetSetValueProvider(); var rsp = RightValue.GetSetValueProvider(); return(_ => lsp(_).Except(rsp(_)).ToList()); }
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()); }
public override string GetBooleanSqlQuery() { return(GetStringComparison() == StringComparison.CurrentCultureIgnoreCase ? "LOWER(" + LeftValue.GetStringSqlQuery() + ") LIKE LOWER('%" + RightValue.GetStringSqlQuery().Unwrap() + "') escape '\\'" : LeftValue.GetStringSqlQuery() + " LIKE '%" + RightValue.GetStringSqlQuery().Unwrap() + "' escape '\\'"); }
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; }
/// <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();
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)); });
public override Func <TwitterStatus, long> GetNumericValueProvider() { var lnp = LeftValue.GetNumericValueProvider(); var rnp = RightValue.GetNumericValueProvider(); return(_ => { var divider = rnp(_); return divider == 0 ? 0 : lnp(_) / divider; }); }
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; }
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; } }); } }
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)); }
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(); } }
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" }); } }
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"); } }
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); } }
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)); }
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); }); }
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); }
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()); }
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(); } }
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(); }