Implemented parameter name normalization for PDDL to avoid escaping the names.
This commit is contained in:
parent
5e28dd046b
commit
8251652445
@ -30,6 +30,8 @@ class Action
|
|||||||
const Expression *precondition() const;
|
const Expression *precondition() const;
|
||||||
const Expression *effect() const;
|
const Expression *effect() const;
|
||||||
|
|
||||||
|
void normalizeParameterNames();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Action() = default;
|
Action() = default;
|
||||||
|
|
||||||
|
@ -35,6 +35,8 @@ class Description
|
|||||||
bool containsProblem() const;
|
bool containsProblem() const;
|
||||||
const Problem &problem() const;
|
const Problem &problem() const;
|
||||||
|
|
||||||
|
void normalizeParameterNames();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Description();
|
Description();
|
||||||
|
|
||||||
|
@ -51,6 +51,8 @@ class Domain
|
|||||||
|
|
||||||
void checkConsistency();
|
void checkConsistency();
|
||||||
|
|
||||||
|
void normalizeParameterNames();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void parseSection();
|
void parseSection();
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ namespace pddl
|
|||||||
class TranslatorASP
|
class TranslatorASP
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit TranslatorASP(const Description &description, utils::LogStream &outputStream);
|
explicit TranslatorASP(Description &description, utils::LogStream &outputStream);
|
||||||
|
|
||||||
void translate() const;
|
void translate() const;
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ class TranslatorASP
|
|||||||
void translateLiteral(const Expression &literal) const;
|
void translateLiteral(const Expression &literal) const;
|
||||||
void translatePredicate(const expressions::Predicate &predicate) const;
|
void translatePredicate(const expressions::Predicate &predicate) const;
|
||||||
|
|
||||||
const Description &m_description;
|
Description &m_description;
|
||||||
utils::LogStream &m_outputStream;
|
utils::LogStream &m_outputStream;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@ class PredicateDeclaration: public ExpressionCRTP<PredicateDeclaration>
|
|||||||
|
|
||||||
bool isDeclared() const;
|
bool isDeclared() const;
|
||||||
|
|
||||||
|
void normalizeParameterNames();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PredicateDeclaration();
|
PredicateDeclaration();
|
||||||
|
|
||||||
|
@ -28,7 +28,9 @@ class Variable: public ExpressionCRTP<Variable>
|
|||||||
const ExpressionContext &expressionContext);
|
const ExpressionContext &expressionContext);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
void setName(std::string name);
|
||||||
const std::string &name() const;
|
const std::string &name() const;
|
||||||
|
|
||||||
const Expression *type() const;
|
const Expression *type() const;
|
||||||
|
|
||||||
void setDirty(bool isDirty = true);
|
void setDirty(bool isDirty = true);
|
||||||
|
@ -87,5 +87,13 @@ const Expression *Action::effect() const
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Action::normalizeParameterNames()
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < m_parameters.size(); i++)
|
||||||
|
m_parameters[i]->setName("X" + std::to_string(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,5 +204,12 @@ void Description::checkConsistency()
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Description::normalizeParameterNames()
|
||||||
|
{
|
||||||
|
m_domain->normalizeParameterNames();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -413,5 +413,22 @@ void Domain::checkConsistency()
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Domain::normalizeParameterNames()
|
||||||
|
{
|
||||||
|
std::for_each(m_predicates.begin(), m_predicates.end(),
|
||||||
|
[](auto &predicate)
|
||||||
|
{
|
||||||
|
predicate->normalizeParameterNames();
|
||||||
|
});
|
||||||
|
|
||||||
|
std::for_each(m_actions.begin(), m_actions.end(),
|
||||||
|
[](auto &action)
|
||||||
|
{
|
||||||
|
action->normalizeParameterNames();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,10 +19,11 @@ namespace pddl
|
|||||||
//
|
//
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
TranslatorASP::TranslatorASP(const Description &description, utils::LogStream &outputStream)
|
TranslatorASP::TranslatorASP(Description &description, utils::LogStream &outputStream)
|
||||||
: m_description(description),
|
: m_description(description),
|
||||||
m_outputStream(outputStream)
|
m_outputStream(outputStream)
|
||||||
{
|
{
|
||||||
|
m_description.normalizeParameterNames();
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -79,6 +79,14 @@ const Variables &PredicateDeclaration::arguments() const
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void PredicateDeclaration::normalizeParameterNames()
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < m_parameters.size(); i++)
|
||||||
|
m_parameters[i]->setName("X" + std::to_string(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,6 +164,13 @@ const Variable *Variable::parseAndFind(Context &context, const ExpressionContext
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Variable::setName(std::string name)
|
||||||
|
{
|
||||||
|
m_name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
const std::string &Variable::name() const
|
const std::string &Variable::name() const
|
||||||
{
|
{
|
||||||
return m_name;
|
return m_name;
|
||||||
|
Reference in New Issue
Block a user