Example #1
0
        /// <summary>
        /// Visits the given input data node.
        /// </summary>
        /// <param name="data">Input data node.</param>
        public override void PostVisit(InputData.PDDL.PreferenceExpression data)
        {
            var idManager        = IdManager.Preferences;
            int preferenceNameId = idManager.IsRegistered(data.Name) ? idManager.GetId(data.Name) : idManager.Register(data.Name);

            ExpressionStack.Push(new PreferenceExpression(preferenceNameId, ExpressionStack.Pop(), IdManager));
        }
Example #2
0
        /// <summary>
        /// Visits the given input data node.
        /// </summary>
        /// <param name="data">Input data node.</param>
        public override void PostVisit(InputData.PDDL.ImplyExpression data)
        {
            IExpression secondChild = ExpressionStack.Pop();
            IExpression firstChild  = ExpressionStack.Pop();

            ExpressionStack.Push(new ImplyExpression(firstChild, secondChild));
        }
Example #3
0
        /// <summary>
        /// Visits the given input data node.
        /// </summary>
        /// <param name="data">Input data node.</param>
        public override void PostVisit(InputData.PDDL.Divide data)
        {
            INumericExpression secondArgument = ExpressionStack.Pop();
            INumericExpression firstArgument  = ExpressionStack.Pop();

            ExpressionStack.Push(new Divide(firstArgument, secondArgument));
        }
Example #4
0
 public ProgramState PopValue(out SymbolicValue poppedValue)
 {
     return(new ProgramState(
                Values,
                Constraints,
                ProgramPointVisitCounts,
                ExpressionStack.Pop(out poppedValue),
                Relationships));
 }
Example #5
0
        /// <summary>
        /// Builds PDDL logical expression from the input data.
        /// </summary>
        /// <param name="expression">Input data expression.</param>
        /// <returns>Built logical expression.</returns>
        public IExpression Build(InputData.PDDL.Expression expression)
        {
            Debug.Assert(ExpressionStack.Count == 0);
            ExpressionStack.Clear();

            expression.Accept(this);

            Debug.Assert(ExpressionStack.Count == 1);
            return(ExpressionStack.Pop());
        }
Example #6
0
        /// <summary>
        /// Visits the given input data node.
        /// </summary>
        /// <param name="data">Input data node.</param>
        public override void PostVisit(InputData.PDDL.OrExpression data)
        {
            List <IExpression> arguments = new List <IExpression>();

            for (int i = 0; i < data.Arguments.Count; ++i)
            {
                arguments.Add(ExpressionStack.Pop());
            }
            arguments.Reverse();
            ExpressionStack.Push(new OrExpression(arguments));
        }
Example #7
0
        internal virtual Expression Pop()
        {
            Expression ex = ExpressionStack.Peek();

            if (ex.InnerStack && !ex.InnerStackCompleted)
            {
                ex = ex.Pop();
            }
            else
            {
                ex = ExpressionStack.Pop();
            }
            return(ex);
        }
Example #8
0
 /// <summary>
 /// Visits the given input data node.
 /// </summary>
 /// <param name="data">Input data node.</param>
 public override void PostVisit(InputData.PDDL.ExistsExpression data)
 {
     ExpressionStack.Push(new ExistsExpression(new Parameters(data.Parameters, IdManager), ExpressionStack.Pop()));
     IdManager.Variables.UnregisterLocalParameters(data.Parameters);
 }
Example #9
0
 /// <summary>
 /// Visits the given input data node.
 /// </summary>
 /// <param name="data">Input data node.</param>
 public override void PostVisit(InputData.PDDL.NotExpression data)
 {
     ExpressionStack.Push(new NotExpression(ExpressionStack.Pop()));
 }
Example #10
0
 /// <summary>
 /// Visits the given input data node.
 /// </summary>
 /// <param name="data">Input data node.</param>
 public override void PostVisit(InputData.PDDL.UnaryMinus data)
 {
     ExpressionStack.Push(new UnaryMinus(ExpressionStack.Pop()));
 }