Removed unneeded variable parsing functions.

This commit is contained in:
Patrick Lühne 2017-08-31 18:48:48 +02:00
parent 7de9980c10
commit 80167fd21b
Signed by: patrick
GPG Key ID: 05F3611E97A70ABF
3 changed files with 6 additions and 45 deletions

View File

@ -16,9 +16,7 @@ namespace detail
// //
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
// TODO: find consistent naming scheme std::experimental::optional<ast::VariablePointer> parseVariable(Context &context, VariableStack &variableStack);
std::experimental::optional<ast::VariablePointer> testParsingVariable(Context &context, VariableStack &variableStack);
ast::VariablePointer parseVariable(Context &context, VariableStack &variableStack);
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -22,7 +22,7 @@ std::experimental::optional<ast::Term> parseTerm(Context &context, ASTContext &a
tokenizer.skipWhiteSpace(); tokenizer.skipWhiteSpace();
// TODO: refactor // TODO: refactor
auto variable = testParsingVariable(context, variableStack); auto variable = parseVariable(context, variableStack);
if (variable) if (variable)
return std::move(variable.value()); return std::move(variable.value());

View File

@ -10,11 +10,11 @@ namespace detail
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// Predicate // Variable
// //
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
std::experimental::optional<std::string> testParsingVariableName(Context &context) std::experimental::optional<ast::VariablePointer> parseVariable(Context &context, VariableStack &variableStack)
{ {
auto &tokenizer = context.tokenizer; auto &tokenizer = context.tokenizer;
@ -23,48 +23,11 @@ std::experimental::optional<std::string> testParsingVariableName(Context &contex
tokenizer.expect<std::string>("?"); tokenizer.expect<std::string>("?");
return tokenizer.getIdentifier(); auto variableName = tokenizer.getIdentifier();
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::string parseVariableName(Context &context)
{
auto &tokenizer = context.tokenizer;
tokenizer.expect<std::string>("?");
return tokenizer.getIdentifier();
}
////////////////////////////////////////////////////////////////////////////////////////////////////
std::experimental::optional<ast::VariablePointer> 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<ast::Variable>(variableDeclaration.value());
}
////////////////////////////////////////////////////////////////////////////////////////////////////
ast::VariablePointer parseVariable(Context &context, VariableStack &variableStack)
{
auto &tokenizer = context.tokenizer;
auto variableName = parseVariableName(context);
auto variableDeclaration = variableStack.findVariableDeclaration(variableName); auto variableDeclaration = variableStack.findVariableDeclaration(variableName);
if (!variableDeclaration) if (!variableDeclaration)
throw ParserException(tokenizer.location(), "undeclared variable “" + variableName + ""); return std::experimental::nullopt;
return std::make_unique<ast::Variable>(variableDeclaration.value()); return std::make_unique<ast::Variable>(variableDeclaration.value());
} }