/// <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;
 }
示例#2
0
        /// <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));
        }