Continuously incrementing effect IDs, with a special identifier for unconditional effects.
This commit is contained in:
parent
e2da46e20a
commit
08113c961a
@ -210,9 +210,9 @@ void TranslatorASP::translateActions() const
|
|||||||
|
|
||||||
printActionName(*action);
|
printActionName(*action);
|
||||||
|
|
||||||
// TODO: remove quirk
|
// TODO: implement conditional effects
|
||||||
if (enumerateEffects)
|
if (enumerateEffects)
|
||||||
m_outputStream << ", " << utils::Keyword("effect") << "(" << utils::Number("0") << ")";
|
m_outputStream << ", " << utils::Keyword("effect") << "(unconditional)";
|
||||||
|
|
||||||
m_outputStream << ", ";
|
m_outputStream << ", ";
|
||||||
|
|
||||||
|
@ -141,6 +141,8 @@ void TranslatorASP::translateActions() const
|
|||||||
|
|
||||||
const auto &operators = m_description.operators();
|
const auto &operators = m_description.operators();
|
||||||
|
|
||||||
|
size_t currentEffectID = 0;
|
||||||
|
|
||||||
std::for_each(operators.cbegin(), operators.cend(),
|
std::for_each(operators.cbegin(), operators.cend(),
|
||||||
[&](const auto &operator_)
|
[&](const auto &operator_)
|
||||||
{
|
{
|
||||||
@ -164,8 +166,6 @@ void TranslatorASP::translateActions() const
|
|||||||
|
|
||||||
const auto &effects = operator_.effects();
|
const auto &effects = operator_.effects();
|
||||||
|
|
||||||
size_t currentEffectID = 0;
|
|
||||||
|
|
||||||
std::for_each(effects.cbegin(), effects.cend(),
|
std::for_each(effects.cbegin(), effects.cend(),
|
||||||
[&](const auto &effect)
|
[&](const auto &effect)
|
||||||
{
|
{
|
||||||
@ -186,13 +186,19 @@ void TranslatorASP::translateActions() const
|
|||||||
|
|
||||||
m_outputStream << utils::Keyword("postcondition") << "(";
|
m_outputStream << utils::Keyword("postcondition") << "(";
|
||||||
operator_.printPredicateAsASP(m_outputStream);
|
operator_.printPredicateAsASP(m_outputStream);
|
||||||
m_outputStream << ", " << utils::Keyword("effect") << "(" << utils::Number(std::to_string(currentEffectID)) << "), ";
|
|
||||||
|
if (conditions.empty())
|
||||||
|
m_outputStream << ", " << utils::Keyword("effect") << "(unconditional), ";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_outputStream << ", " << utils::Keyword("effect") << "(" << utils::Number(std::to_string(currentEffectID)) << "), ";
|
||||||
|
currentEffectID++;
|
||||||
|
}
|
||||||
|
|
||||||
effect.postcondition().variable().printNameAsASPPredicate(m_outputStream);
|
effect.postcondition().variable().printNameAsASPPredicate(m_outputStream);
|
||||||
m_outputStream << ", ";
|
m_outputStream << ", ";
|
||||||
effect.postcondition().value().printAsASPPredicate(m_outputStream);
|
effect.postcondition().value().printAsASPPredicate(m_outputStream);
|
||||||
m_outputStream << ")." << std::endl;
|
m_outputStream << ")." << std::endl;
|
||||||
|
|
||||||
currentEffectID++;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
m_outputStream << utils::Keyword("costs") << "(";
|
m_outputStream << utils::Keyword("costs") << "(";
|
||||||
|
Reference in New Issue
Block a user