/// <summary> /// Reduce produces a constraint from the operator and /// any arguments. It takes the arguments from the constraint /// stack and pushes the resulting constraint on it. /// </summary> public override void Reduce(ConstraintBuilder.ConstraintStack stack) { if (RightContext == null || RightContext is BinaryOperator) stack.Push(new AttributeExistsConstraint(type)); else stack.Push(new AttributeConstraint(type, stack.Pop())); }
/// <summary> /// Reduce produces a constraint from the operator and /// any arguments. It takes the arguments from the constraint /// stack and pushes the resulting constraint on it. /// </summary> /// <param name="stack"></param> public override void Reduce(ConstraintBuilder.ConstraintStack stack) { if (RightContext == null || RightContext is BinaryOperator) stack.Push(new ExactCountConstraint(expectedCount)); else stack.Push(new ExactCountConstraint(expectedCount, stack.Pop())); }
public override void Reduce(ConstraintBuilder.ConstraintStack stack) { if (RightContext == null || RightContext is BinaryOperator) stack.Push(new HasValueConstraint()); else stack.Push(new ValueConstraint(stack.Pop())); }
/// <summary> /// Reduce produces a constraint from the operator and /// any arguments. It takes the arguments from the constraint /// stack and pushes the resulting constraint on it. /// </summary> /// <param name="stack"></param> public override void Reduce(ConstraintBuilder.ConstraintStack stack) { Constraint right = stack.Pop(); Constraint left = stack.Pop(); stack.Push(ApplyOperator(left, right)); }
/// <summary> /// Reduce produces a constraint from the operator and /// any arguments. It takes the arguments from the constraint /// stack and pushes the resulting constraint on it. /// </summary> /// <param name="stack"></param> public override void Reduce(ConstraintBuilder.ConstraintStack stack) { if (RightContext == null || RightContext is BinaryOperator) stack.Push(new PropertyExistsConstraint(name)); else stack.Push(new PropertyConstraint(name, stack.Pop())); }
/// <summary> /// Reduce produces a constraint from the operator and /// any arguments. It takes the arguments from the constraint /// stack and pushes the resulting constraint on it. /// </summary> /// <param name="stack"></param> public override void Reduce(ConstraintBuilder.ConstraintStack stack) { stack.Push(ApplyPrefix(stack.Pop())); }