From 0513b3aa0c26bfbdca89444e1d8815279684d840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Fri, 10 Jun 2016 17:52:19 +0200 Subject: [PATCH] Implemented translation of PDDL domain constants. --- src/plasp/pddl/TranslatorASP.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/plasp/pddl/TranslatorASP.cpp b/src/plasp/pddl/TranslatorASP.cpp index fb44568..05e058e 100644 --- a/src/plasp/pddl/TranslatorASP.cpp +++ b/src/plasp/pddl/TranslatorASP.cpp @@ -35,11 +35,12 @@ void TranslatorASP::translateDomain(std::ostream &ostream) const ostream << "%---------------------------------------" << std::endl << "% domain" << std::endl - << "%---------------------------------------" << std::endl << std::endl; + << "%---------------------------------------" << std::endl; const auto &domain = m_description.domain(); // Types + ostream << std::endl; ostream << "% types"; const auto &types = domain.types(); @@ -59,6 +60,27 @@ void TranslatorASP::translateDomain(std::ostream &ostream) const ostream << "inherits(type(" << type->name() << "), type(" << parentType->name() << "))." << std::endl; }); }); + + // Constants + ostream << std::endl; + ostream << "% constants"; + + const auto &constants = domain.constants(); + + std::for_each(constants.cbegin(), constants.cend(), + [&](const auto &constant) + { + ostream << std::endl; + + ostream << "constant(" << constant->name() << ")." << std::endl; + + const auto *type = constant->type(); + + if (type == nullptr) + return; + + ostream << "hasType(constant(" << constant->name() << "), type(" << type->name() << "))." << std::endl; + }); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -68,7 +90,7 @@ void TranslatorASP::translateProblem(std::ostream &ostream) const ostream << std::endl << "%---------------------------------------" << std::endl << "% problem" << std::endl - << "%---------------------------------------" << std::endl << std::endl; + << "%---------------------------------------" << std::endl; } ////////////////////////////////////////////////////////////////////////////////////////////////////