This repository has been archived on 2023-07-19. You can view files and clone it, but cannot push or open issues or pull requests.

45 lines
1.0 KiB
C++

#include <pddlparse/detail/parsing/InitialState.h>
#include <pddlparse/AST.h>
#include <pddlparse/Exception.h>
#include <pddlparse/detail/parsing/Fact.h>
namespace pddl
{
namespace detail
{
////////////////////////////////////////////////////////////////////////////////////////////////////
//
// InitialState
//
////////////////////////////////////////////////////////////////////////////////////////////////////
ast::InitialState parseInitialState(Context &context, ASTContext &astContext, VariableStack &variableStack)
{
auto &tokenizer = context.tokenizer;
ast::InitialState initialState;
tokenizer.skipWhiteSpace();
while (tokenizer.currentCharacter() != ')')
{
auto fact = parseFact(context, astContext, variableStack);
if (!fact)
throw ParserException(tokenizer.location(), "invalid initial state fact");
initialState.facts.emplace_back(std::move(fact.value()));
tokenizer.skipWhiteSpace();
}
return initialState;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
}
}