Refactored predicate argument parsing.

This commit is contained in:
2016-05-28 14:21:05 +02:00
parent b4bc347006
commit 2c564f47d3
2 changed files with 41 additions and 10 deletions

View File

@@ -26,17 +26,12 @@ Predicate Predicate::fromSAS(utils::Parser &parser)
{
parser.skipLine();
// TODO: Inefficient, reimplement in one pass
const std::string line = parser.getLine();
predicate.m_name = parser.parse<std::string>();
std::stringstream lineStream(line);
lineStream >> predicate.m_name;
while (lineStream.peek() == ' ')
lineStream.ignore(1);
for (std::string argument; std::getline(lineStream, argument, ' ');)
predicate.m_arguments.push_back(std::move(argument));
parser.parseUntil(predicate.m_arguments, [](const auto character)
{
return character == '\n';
});
}
catch (const std::exception &e)
{