diff --git a/lib/pddl/include/pddl/detail/parsing/Variable.h b/lib/pddl/include/pddl/detail/parsing/Variable.h index 33e1fd2..504d116 100644 --- a/lib/pddl/include/pddl/detail/parsing/Variable.h +++ b/lib/pddl/include/pddl/detail/parsing/Variable.h @@ -16,9 +16,7 @@ namespace detail // //////////////////////////////////////////////////////////////////////////////////////////////////// -// TODO: find consistent naming scheme -std::experimental::optional testParsingVariable(Context &context, VariableStack &variableStack); -ast::VariablePointer parseVariable(Context &context, VariableStack &variableStack); +std::experimental::optional parseVariable(Context &context, VariableStack &variableStack); //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/lib/pddl/src/pddl/detail/parsing/Term.cpp b/lib/pddl/src/pddl/detail/parsing/Term.cpp index d0d9e66..386ee64 100644 --- a/lib/pddl/src/pddl/detail/parsing/Term.cpp +++ b/lib/pddl/src/pddl/detail/parsing/Term.cpp @@ -22,7 +22,7 @@ std::experimental::optional parseTerm(Context &context, ASTContext &a tokenizer.skipWhiteSpace(); // TODO: refactor - auto variable = testParsingVariable(context, variableStack); + auto variable = parseVariable(context, variableStack); if (variable) return std::move(variable.value()); diff --git a/lib/pddl/src/pddl/detail/parsing/Variable.cpp b/lib/pddl/src/pddl/detail/parsing/Variable.cpp index 1286553..201a0eb 100644 --- a/lib/pddl/src/pddl/detail/parsing/Variable.cpp +++ b/lib/pddl/src/pddl/detail/parsing/Variable.cpp @@ -10,11 +10,11 @@ namespace detail //////////////////////////////////////////////////////////////////////////////////////////////////// // -// Predicate +// Variable // //////////////////////////////////////////////////////////////////////////////////////////////////// -std::experimental::optional testParsingVariableName(Context &context) +std::experimental::optional parseVariable(Context &context, VariableStack &variableStack) { auto &tokenizer = context.tokenizer; @@ -23,48 +23,11 @@ std::experimental::optional testParsingVariableName(Context &contex tokenizer.expect("?"); - return tokenizer.getIdentifier(); -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -std::string parseVariableName(Context &context) -{ - auto &tokenizer = context.tokenizer; - - tokenizer.expect("?"); - - return tokenizer.getIdentifier(); -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -std::experimental::optional testParsingVariable(Context &context, VariableStack &variableStack) -{ - auto variableName = testParsingVariableName(context); - - if (!variableName) - return std::experimental::nullopt; - - auto variableDeclaration = variableStack.findVariableDeclaration(variableName.value()); - - if (!variableDeclaration) - return std::experimental::nullopt; - - return std::make_unique(variableDeclaration.value()); -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -ast::VariablePointer parseVariable(Context &context, VariableStack &variableStack) -{ - auto &tokenizer = context.tokenizer; - - auto variableName = parseVariableName(context); + auto variableName = tokenizer.getIdentifier(); auto variableDeclaration = variableStack.findVariableDeclaration(variableName); if (!variableDeclaration) - throw ParserException(tokenizer.location(), "undeclared variable “" + variableName + "”"); + return std::experimental::nullopt; return std::make_unique(variableDeclaration.value()); }