internal override void Reverse(int deep) { if (deep < 0) { return; } deep--; switch (_comparison) { case RelationalComparison.And: case RelationalComparison.Or: _leftCondition.Reverse(deep); _comparison = _comparison == RelationalComparison.Or ? RelationalComparison.And : RelationalComparison.Or; _rightCondition.Reverse(deep); break; case RelationalComparison.Eq: _comparison = RelationalComparison.NotEq; break; case RelationalComparison.NotEq: _comparison = RelationalComparison.Eq; break; case RelationalComparison.Contains: _comparison = RelationalComparison.Exclude; break; case RelationalComparison.Exclude: _comparison = RelationalComparison.Contains; break; case RelationalComparison.Ge: _comparison = RelationalComparison.Lt; break; case RelationalComparison.Lt: _comparison = RelationalComparison.Ge; break; case RelationalComparison.Gt: _comparison = RelationalComparison.Le; break; case RelationalComparison.Le: _comparison = RelationalComparison.Gt; break; } }
public RelationalCondition(Condition left, RelationalComparison comparison, Condition right) { left = ConditionLogic.GetCondition(left); right = ConditionLogic.GetCondition(right); _leftCondition = left; _rightCondition = right; _comparison = comparison; Suffix = left.Suffix; Prefix = left.Prefix; left.Prefix = ""; left.Suffix = ""; right.Prefix = ""; right.Suffix = ""; RelationalCondition rLeft = left as RelationalCondition; if (rLeft != null) { RelationalComparison comp = rLeft._comparison; if ((comp == RelationalComparison.And || comp == RelationalComparison.Or) && (comparison == RelationalComparison.And || comparison == RelationalComparison.Or) && rLeft._comparison != comparison) { _leftCondition = new ParenthesisCondition(rLeft); } } RelationalCondition rRight = right as RelationalCondition; if (rRight != null) { RelationalComparison comp = rRight._comparison; if ((comp == RelationalComparison.And || comp == RelationalComparison.Or) && (comparison == RelationalComparison.And || comparison == RelationalComparison.Or) && rRight._comparison != comparison) { _rightCondition = new ParenthesisCondition(rRight); } } }
public static string RelationToString(RelationalComparison comparison) { switch (comparison) { case RelationalComparison.None: return(""); case RelationalComparison.Le: return(" <= "); case RelationalComparison.Lt: return(" < "); case RelationalComparison.Eq: return(" == "); case RelationalComparison.NotEq: return(" ~= "); case RelationalComparison.Ge: return(" >= "); case RelationalComparison.Gt: return(" > "); case RelationalComparison.And: return(" and "); case RelationalComparison.Or: return(" or "); case RelationalComparison.Add: return(" + "); case RelationalComparison.Minus: return(" - "); case RelationalComparison.Mult: return(" * "); case RelationalComparison.Div: return(" / "); case RelationalComparison.Pow: return(" ^ "); case RelationalComparison.Mod: return(" % "); case RelationalComparison.BinaryAnd: return(" & "); case RelationalComparison.BinaryOr: return(" | "); case RelationalComparison.BinaryRightShift: return(" >> "); case RelationalComparison.BinaryLeftShift: return(" << "); default: return(""); } }
private void _readComparison(string comparison) { string condition = comparison.Replace("and", "&&").Replace("or", "||").Trim(' '); switch (condition) { case "<": _comparison = RelationalComparison.Lt; break; case ">": _comparison = RelationalComparison.Gt; break; case "<=": _comparison = RelationalComparison.Le; break; case ">=": _comparison = RelationalComparison.Ge; break; case "==": _comparison = RelationalComparison.Eq; break; case "~=": _comparison = RelationalComparison.NotEq; break; case "!=": _comparison = RelationalComparison.NotEq; break; case "&&": _comparison = RelationalComparison.And; break; case "||": _comparison = RelationalComparison.Or; break; case "+": _comparison = RelationalComparison.Add; break; case "-": _comparison = RelationalComparison.Minus; break; case "*": _comparison = RelationalComparison.Mult; break; case "/": _comparison = RelationalComparison.Div; break; case "^": _comparison = RelationalComparison.Pow; break; case "%": _comparison = RelationalComparison.Mod; break; case "&": _comparison = RelationalComparison.BinaryAnd; break; case "|": _comparison = RelationalComparison.BinaryOr; break; case ">>": _comparison = RelationalComparison.BinaryRightShift; break; case "<<": _comparison = RelationalComparison.BinaryLeftShift; break; } }