From 230c6dfc15d882eaf1fffd7cdb1a1898edcfdcee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Sat, 13 Aug 2016 02:29:48 +0200 Subject: [PATCH] Made order of sections of translated SAS more uniform with PDDL. --- include/plasp/sas/Description.h | 2 ++ src/plasp/sas/Description.cpp | 7 +++++++ src/plasp/sas/TranslatorASP.cpp | 27 ++++++++++++++------------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/include/plasp/sas/Description.h b/include/plasp/sas/Description.h index 80ba09d..12fb557 100644 --- a/include/plasp/sas/Description.h +++ b/include/plasp/sas/Description.h @@ -45,6 +45,8 @@ class Description bool usesAxiomRules() const; bool usesConditionalEffects() const; + bool hasRequirements() const; + private: Description(); diff --git a/src/plasp/sas/Description.cpp b/src/plasp/sas/Description.cpp index f1523fa..ab773a1 100644 --- a/src/plasp/sas/Description.cpp +++ b/src/plasp/sas/Description.cpp @@ -153,6 +153,13 @@ bool Description::usesConditionalEffects() const //////////////////////////////////////////////////////////////////////////////////////////////////// +bool Description::hasRequirements() const +{ + return usesActionCosts() || usesAxiomRules() || usesConditionalEffects(); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + void Description::parseContent(utils::Parser<> &parser) { parseVersionSection(parser); diff --git a/src/plasp/sas/TranslatorASP.cpp b/src/plasp/sas/TranslatorASP.cpp index 34ffcc8..7c0548d 100644 --- a/src/plasp/sas/TranslatorASP.cpp +++ b/src/plasp/sas/TranslatorASP.cpp @@ -23,13 +23,24 @@ TranslatorASP::TranslatorASP(const Description &description, utils::LogStream &o void TranslatorASP::translate() const { - translateRequirements(); - translateInitialState(); - translateGoal(); + // TODO: remove double computation of requirements + if (m_description.hasRequirements()) + { + translateRequirements(); + m_outputStream << std::endl; + } + translateVariables(); + m_outputStream << std::endl; translateActions(); + m_outputStream << std::endl; translateMutexes(); + m_outputStream << std::endl; translateAxiomRules(); + m_outputStream << std::endl; + translateInitialState(); + m_outputStream << std::endl; + translateGoal(); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -46,8 +57,6 @@ void TranslatorASP::translateRequirements() const if (m_description.usesConditionalEffects()) m_outputStream << utils::Keyword("requiresFeature") << "(conditionalEffects)." << std::endl; - - m_outputStream << std::endl; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -67,8 +76,6 @@ void TranslatorASP::translateInitialState() const fact.value().printAsASPPredicate(m_outputStream); m_outputStream << ")." << std::endl; }); - - m_outputStream << std::endl; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -88,8 +95,6 @@ void TranslatorASP::translateGoal() const fact.value().printAsASPPredicate(m_outputStream); m_outputStream << ")." << std::endl; }); - - m_outputStream << std::endl; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -121,8 +126,6 @@ void TranslatorASP::translateVariables() const m_outputStream << ")." << std::endl; }); }); - - m_outputStream << std::endl; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -190,8 +193,6 @@ void TranslatorASP::translateActions() const operator_.printPredicateAsASP(m_outputStream); m_outputStream << ", " << operator_.costs() << ")." << std::endl; }); - - m_outputStream << std::endl; } ////////////////////////////////////////////////////////////////////////////////////////////////////