diff --git a/lib/pddl/src/pddl/detail/parsing/Term.cpp b/lib/pddl/src/pddl/detail/parsing/Term.cpp index 977c5d1..5e3d04c 100644 --- a/lib/pddl/src/pddl/detail/parsing/Term.cpp +++ b/lib/pddl/src/pddl/detail/parsing/Term.cpp @@ -21,17 +21,13 @@ std::experimental::optional parseTerm(Context &context, ASTContext &a tokenizer.skipWhiteSpace(); - // TODO: refactor - auto variable = parseVariable(context, variableStack); + std::experimental::optional term; - if (variable) - return std::move(variable.value()); - - // Parse argument if it is a constant - auto constant = parseConstant(context, astContext); - - if (constant) - return std::move(constant.value()); + if ((term = parseVariable(context, variableStack)) + || (term = parseConstant(context, astContext))) + { + return std::move(term.value()); + } return std::experimental::nullopt; }