From dff7dae3bcc2a754daf6ccf56a7cce655820a180 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 17 Aug 2014 13:31:49 -0400 Subject: [PATCH] Parser - Modified ::findMissingOperators to use collect. --- src/Parser.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/Parser.cpp b/src/Parser.cpp index 09211f670..fd1b062eb 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -1659,6 +1659,7 @@ void Parser::findPlainArgs () //////////////////////////////////////////////////////////////////////////////// void Parser::findMissingOperators () { + context.debug ("Parser::findMissingOperators"); bool action = false; while (insertOr ()) @@ -1675,18 +1676,12 @@ void Parser::findMissingOperators () // Two consecutive ID/UUID arguments get an 'or' inserted between them. bool Parser::insertOr () { - std::vector ::iterator prev = _tree->_branches.begin (); + std::vector nodes; + collect (nodes, false); + std::vector ::iterator prev = nodes.begin (); std::vector ::iterator i; - for (i = _tree->_branches.begin (); i != _tree->_branches.end (); ++i) + for (i = nodes.begin (); i != nodes.end (); ++i) { - // Parser override operator. - if ((*i)->attribute ("raw") == "--") - break; - - // Skip known args. - if ((*i)->hasTag ("?")) - continue; - if ((*i)->hasTag ("FILTER") && ! (*i)->hasTag ("PSEUDO")) { if (prev != _tree->_branches.begin () && @@ -1720,9 +1715,11 @@ bool Parser::insertOr () // bool Parser::insertAnd () { - std::vector ::iterator prev = _tree->_branches.begin (); + std::vector nodes; + collect (nodes, false); + std::vector ::iterator prev = nodes.begin (); std::vector ::iterator i; - for (i = _tree->_branches.begin (); i != _tree->_branches.end (); ++i) + for (i = nodes.begin (); i != nodes.end (); ++i) { if ((*i)->hasTag ("FILTER") && ! (*i)->hasTag ("PSEUDO")) { @@ -1775,8 +1772,10 @@ bool Parser::insertAnd () void Parser::validate () { // Look for any unrecognized original args. + std::vector nodes; + collect (nodes, false); std::vector ::iterator i; - for (i = _tree->_branches.begin (); i != _tree->_branches.end (); ++i) + for (i = nodes.begin (); i != nodes.end (); ++i) if ((*i)->hasTag ("?")) context.debug ("Unrecognized argument '" + (*i)->attribute ("raw") + "'");