/// <summary> /// Constructs the literal from the given expression. /// </summary> /// <param name="relOperator">Relational operator.</param> /// <param name="leftArgument">Left argument term.</param> /// <param name="rightArgument">Right argument term.</param> /// <param name="isNegated">Is the literal negated?</param> public NumericCompareLiteralCNF(NumericCompareExpression.RelationalOperator relOperator, INumericExpression leftArgument, INumericExpression rightArgument, bool isNegated) { Operator = relOperator; LeftArgument = leftArgument; RightArgument = rightArgument; IsNegated = isNegated; }
/// <summary> /// Visits the given input data node. /// </summary> /// <param name="data">Input data node.</param> public override void PostVisit(InputData.PDDL.NumericCompareExpression data) { NumericExpressionsBuilder numericExpressionsBuilder = new NumericExpressionsBuilder(IdManager); INumericExpression firstArgument = numericExpressionsBuilder.Build(data.NumericExpression1); INumericExpression secondArgument = numericExpressionsBuilder.Build(data.NumericExpression2); NumericCompareExpression.RelationalOperator relOperator = NumericCompareExpression.RelationalOperator.EQ; switch (data.NumericComparer) { case InputData.PDDL.Traits.NumericComparer.EQ: { relOperator = NumericCompareExpression.RelationalOperator.EQ; break; } case InputData.PDDL.Traits.NumericComparer.LT: { relOperator = NumericCompareExpression.RelationalOperator.LT; break; } case InputData.PDDL.Traits.NumericComparer.LTE: { relOperator = NumericCompareExpression.RelationalOperator.LTE; break; } case InputData.PDDL.Traits.NumericComparer.GT: { relOperator = NumericCompareExpression.RelationalOperator.GT; break; } case InputData.PDDL.Traits.NumericComparer.GTE: { relOperator = NumericCompareExpression.RelationalOperator.GTE; break; } default: { Debug.Assert(false, "Unhandled operator!"); break; } } ExpressionStack.Push(new NumericCompareExpression(relOperator, firstArgument, secondArgument)); }