/// <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)); }
/// <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)); }
/// <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)); }
public ProgramState PopValue(out SymbolicValue poppedValue) { return(new ProgramState( Values, Constraints, ProgramPointVisitCounts, ExpressionStack.Pop(out poppedValue), Relationships)); }
/// <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()); }
/// <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)); }
internal virtual Expression Pop() { Expression ex = ExpressionStack.Peek(); if (ex.InnerStack && !ex.InnerStackCompleted) { ex = ex.Pop(); } else { ex = ExpressionStack.Pop(); } return(ex); }
/// <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); }
/// <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())); }
/// <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())); }