/// <summary> /// Converts the given problem goal AST into a goal structure. A root AND-expression is split into a list of goal expressions. /// </summary> /// <param name="goalAstNode">AST node.</param> /// <returns>Converted goal.</returns> public static Goal ToGoal(ProblemGoalAstNode goalAstNode) { Goal goal = new Goal(); Expression expression = ToExpression(goalAstNode.Condition); var andExpression = expression as AndExpression; if (andExpression != null) { goal.AddRange(andExpression.Arguments); } else if (expression != null) { goal.Add(expression); } return(goal); }