Implemented parsing conditional effects.
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include <plasp/pddl/expressions/Predicate.h>
|
||||
#include <plasp/pddl/expressions/PredicateDeclaration.h>
|
||||
#include <plasp/pddl/expressions/Unsupported.h>
|
||||
#include <plasp/pddl/expressions/When.h>
|
||||
#include <plasp/utils/ParserException.h>
|
||||
|
||||
namespace plasp
|
||||
@@ -230,7 +231,8 @@ ExpressionPointer parseEffectExpression(Context &context, ExpressionContext &exp
|
||||
ExpressionPointer expression;
|
||||
|
||||
if ((expression = expressions::And::parse(context, expressionContext, parseEffectExpression))
|
||||
|| (expression = expressions::ForAll::parse(context, expressionContext, parseEffectExpression)))
|
||||
|| (expression = expressions::ForAll::parse(context, expressionContext, parseEffectExpression))
|
||||
|| (expression = expressions::When::parse(context, expressionContext, parseExpression, parseConditionalEffectExpression)))
|
||||
{
|
||||
return expression;
|
||||
}
|
||||
@@ -297,6 +299,18 @@ ExpressionPointer parseEffectBodyExpression(Context &context, ExpressionContext
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ExpressionPointer parseConditionalEffectExpression(Context &context, ExpressionContext &expressionContext)
|
||||
{
|
||||
ExpressionPointer expression;
|
||||
|
||||
if ((expression = expressions::And::parse(context, expressionContext, parseEffectBodyExpression)))
|
||||
return expression;
|
||||
|
||||
return parseEffectBodyExpression(context, expressionContext);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ExpressionPointer parsePredicate(Context &context, ExpressionContext &expressionContext)
|
||||
{
|
||||
auto &parser = context.parser;
|
||||
|
22
src/plasp/pddl/expressions/When.cpp
Normal file
22
src/plasp/pddl/expressions/When.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
#include <plasp/pddl/expressions/When.h>
|
||||
|
||||
namespace plasp
|
||||
{
|
||||
namespace pddl
|
||||
{
|
||||
namespace expressions
|
||||
{
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// When
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const std::string When::Identifier = "when";
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user