Implemented variable stack for parsing nested variable lists (as within quantified expressions).
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <plasp/pddl/Expression.h>
|
||||
#include <plasp/pddl/Requirement.h>
|
||||
#include <plasp/pddl/VariableStack.h>
|
||||
|
||||
namespace plasp
|
||||
{
|
||||
@@ -18,8 +19,8 @@ namespace pddl
|
||||
class ExpressionContext
|
||||
{
|
||||
public:
|
||||
ExpressionContext(Domain &domain, expressions::Variables ¶meters);
|
||||
ExpressionContext(Domain &domain, Problem *problem, expressions::Variables ¶meters);
|
||||
ExpressionContext(Domain &domain);
|
||||
ExpressionContext(Domain &domain, Problem *problem);
|
||||
|
||||
bool hasRequirement(Requirement::Type requirementType) const;
|
||||
void checkRequirement(Requirement::Type requirementType) const;
|
||||
@@ -27,7 +28,7 @@ class ExpressionContext
|
||||
Domain &domain;
|
||||
Problem *problem;
|
||||
|
||||
expressions::Variables ¶meters;
|
||||
VariableStack variables;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
34
include/plasp/pddl/VariableStack.h
Normal file
34
include/plasp/pddl/VariableStack.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef __PLASP__PDDL__VARIABLE_STACK_H
|
||||
#define __PLASP__PDDL__VARIABLE_STACK_H
|
||||
|
||||
#include <plasp/pddl/expressions/Variable.h>
|
||||
|
||||
namespace plasp
|
||||
{
|
||||
namespace pddl
|
||||
{
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// VariableStack
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class VariableStack
|
||||
{
|
||||
public:
|
||||
void push(expressions::Variables *variables);
|
||||
void pop();
|
||||
|
||||
expressions::VariablePointer parseAndFind(Context &context);
|
||||
|
||||
private:
|
||||
std::vector<expressions::Variables *> m_variableStack;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
@@ -26,9 +26,6 @@ class Variable: public ExpressionCRTP<Variable>
|
||||
static void parseTypedDeclarations(Context &context, ExpressionContext &expressionContext,
|
||||
Variables &variables);
|
||||
|
||||
static VariablePointer parseAndFind(Context &context,
|
||||
const ExpressionContext &expressionContext);
|
||||
|
||||
public:
|
||||
void setName(std::string name);
|
||||
const std::string &name() const;
|
||||
|
Reference in New Issue
Block a user