diff --git a/src/plasp/pddl/TranslatorASP.cpp b/src/plasp/pddl/TranslatorASP.cpp index 3baa063..878a7d7 100644 --- a/src/plasp/pddl/TranslatorASP.cpp +++ b/src/plasp/pddl/TranslatorASP.cpp @@ -210,9 +210,9 @@ void TranslatorASP::translateActions() const printActionName(*action); - // TODO: remove quirk + // TODO: implement conditional effects if (enumerateEffects) - m_outputStream << ", " << utils::Keyword("effect") << "(" << utils::Number("0") << ")"; + m_outputStream << ", " << utils::Keyword("effect") << "(unconditional)"; m_outputStream << ", "; diff --git a/src/plasp/sas/TranslatorASP.cpp b/src/plasp/sas/TranslatorASP.cpp index 136d6d7..bea9d75 100644 --- a/src/plasp/sas/TranslatorASP.cpp +++ b/src/plasp/sas/TranslatorASP.cpp @@ -141,6 +141,8 @@ void TranslatorASP::translateActions() const const auto &operators = m_description.operators(); + size_t currentEffectID = 0; + std::for_each(operators.cbegin(), operators.cend(), [&](const auto &operator_) { @@ -164,8 +166,6 @@ void TranslatorASP::translateActions() const const auto &effects = operator_.effects(); - size_t currentEffectID = 0; - std::for_each(effects.cbegin(), effects.cend(), [&](const auto &effect) { @@ -186,13 +186,19 @@ void TranslatorASP::translateActions() const m_outputStream << utils::Keyword("postcondition") << "("; 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); m_outputStream << ", "; effect.postcondition().value().printAsASPPredicate(m_outputStream); m_outputStream << ")." << std::endl; - - currentEffectID++; }); m_outputStream << utils::Keyword("costs") << "(";