Refactored basic parsing.

This commit is contained in:
2016-05-27 03:58:59 +02:00
parent 6017cfe3d5
commit 07eb23b312
31 changed files with 727 additions and 253 deletions

View File

@@ -6,6 +6,7 @@
#include <plasp/sas/Value.h>
#include <plasp/sas/Variable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -26,8 +27,8 @@ using AssignedVariables = std::vector<AssignedVariable>;
class AssignedVariable
{
public:
static AssignedVariable fromSAS(std::istream &istream, const Variables &variables);
static AssignedVariable fromSAS(std::istream &istream, const Variable &variable);
static AssignedVariable fromSAS(utils::Parser &parser, const Variables &variables);
static AssignedVariable fromSAS(utils::Parser &parser, const Variable &variable);
public:
explicit AssignedVariable(const Variable &variable, const Value &value);

View File

@@ -5,6 +5,7 @@
#include <plasp/sas/AssignedVariable.h>
#include <plasp/sas/Variable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -28,7 +29,7 @@ class AxiomRule
using Condition = AssignedVariable;
using Conditions = AssignedVariables;
static AxiomRule fromSAS(std::istream &istream, const Variables &variables);
static AxiomRule fromSAS(utils::Parser &parser, const Variables &variables);
public:
const Conditions &conditions() const;

View File

@@ -13,6 +13,7 @@
#include <plasp/sas/MutexGroup.h>
#include <plasp/sas/Operator.h>
#include <plasp/sas/Variable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -46,14 +47,14 @@ class Description
private:
Description();
void parseVersionSection(std::istream &istream) const;
void parseMetricSection(std::istream &istream);
void parseVariablesSection(std::istream &istream);
void parseMutexSection(std::istream &istream);
void parseInitialStateSection(std::istream &istream);
void parseGoalSection(std::istream &istream);
void parseOperatorSection(std::istream &istream);
void parseAxiomSection(std::istream &istream);
void parseVersionSection(utils::Parser &parser) const;
void parseMetricSection(utils::Parser &parser);
void parseVariablesSection(utils::Parser &parser);
void parseMutexSection(utils::Parser &parser);
void parseInitialStateSection(utils::Parser &parser);
void parseGoalSection(utils::Parser &parser);
void parseOperatorSection(utils::Parser &parser);
void parseAxiomSection(utils::Parser &parser);
bool m_usesActionCosts;

View File

@@ -5,6 +5,7 @@
#include <plasp/sas/AssignedVariable.h>
#include <plasp/sas/Variable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -28,7 +29,7 @@ class Effect
using Condition = AssignedVariable;
using Conditions = AssignedVariables;
static Effect fromSAS(std::istream &istream, const Variables &variables, Conditions &preconditions);
static Effect fromSAS(utils::Parser &parser, const Variables &variables, Conditions &preconditions);
public:
const Conditions &conditions() const;

View File

@@ -2,6 +2,7 @@
#define __PLASP__SAS__GOAL_H
#include <plasp/sas/AssignedVariable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -20,7 +21,7 @@ class Goal
using Fact = AssignedVariable;
using Facts = AssignedVariables;
static Goal fromSAS(std::istream &istream, const Variables &variables);
static Goal fromSAS(utils::Parser &parser, const Variables &variables);
public:
const Facts &facts() const;

View File

@@ -2,6 +2,7 @@
#define __PLASP__SAS__INITIAL_STATE_H
#include <plasp/sas/AssignedVariable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -20,7 +21,7 @@ class InitialState
using Fact = AssignedVariable;
using Facts = AssignedVariables;
static InitialState fromSAS(std::istream &istream, const Variables &variables);
static InitialState fromSAS(utils::Parser &parser, const Variables &variables);
public:
const Facts &facts() const;

View File

@@ -4,6 +4,7 @@
#include <vector>
#include <plasp/sas/AssignedVariable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -27,7 +28,7 @@ class MutexGroup
using Fact = AssignedVariable;
using Facts = AssignedVariables;
static MutexGroup fromSAS(std::istream &istream, const Variables &variables);
static MutexGroup fromSAS(utils::Parser &parser, const Variables &variables);
public:
const Facts &facts() const;

View File

@@ -8,6 +8,7 @@
#include <plasp/sas/Effect.h>
#include <plasp/sas/Predicate.h>
#include <plasp/sas/Variable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -31,7 +32,7 @@ class Operator
using Condition = AssignedVariable;
using Conditions = AssignedVariables;
static Operator fromSAS(std::istream &istream, const Variables &variables);
static Operator fromSAS(utils::Parser &parser, const Variables &variables);
public:
void printPredicateAsASP(std::ostream &ostream) const;

View File

@@ -5,6 +5,8 @@
#include <string>
#include <vector>
#include <plasp/utils/Parser.h>
namespace plasp
{
namespace sas
@@ -19,7 +21,7 @@ namespace sas
class Predicate
{
public:
static Predicate fromSAS(std::istream &istream);
static Predicate fromSAS(utils::Parser &parser);
using Arguments = std::vector<std::string>;

View File

@@ -5,6 +5,8 @@
#include <string>
#include <vector>
#include <plasp/utils/Parser.h>
namespace plasp
{
namespace sas
@@ -36,8 +38,8 @@ struct Value
static const Value Any;
static const Value None;
static Value fromSAS(std::istream &istream);
static const Value &referenceFromSAS(std::istream &istream, const Variable &variable);
static Value fromSAS(utils::Parser &parser);
static const Value &referenceFromSAS(utils::Parser &parser, const Variable &variable);
public:
Value negated() const;

View File

@@ -6,6 +6,7 @@
#include <vector>
#include <plasp/sas/Value.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -26,8 +27,8 @@ using Variables = std::vector<Variable>;
class Variable
{
public:
static Variable fromSAS(std::istream &istream);
static const Variable &referenceFromSAS(std::istream &istream, const Variables &variables);
static Variable fromSAS(utils::Parser &parser);
static const Variable &referenceFromSAS(utils::Parser &parser, const Variables &variables);
public:
void printNameAsASPPredicate(std::ostream &ostream) const;

View File

@@ -5,6 +5,7 @@
#include <plasp/sas/Value.h>
#include <plasp/sas/Variable.h>
#include <plasp/utils/Parser.h>
namespace plasp
{
@@ -25,7 +26,7 @@ using VariableTransitions = std::vector<VariableTransition>;
class VariableTransition
{
public:
static VariableTransition fromSAS(std::istream &istream, const Variables &variables);
static VariableTransition fromSAS(utils::Parser &parser, const Variables &variables);
public:
const Variable &variable() const;