diff --git a/src/Parser.cpp b/src/Parser.cpp index 1a73bae97..182296e6c 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -969,7 +969,7 @@ void Parser::findAttribute () for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); - if ((*i)->hasTag ("--")) + if (raw == "--") break; if (! (*i)->hasTag ("?")) @@ -1066,11 +1066,17 @@ void Parser::findAttributeModifier () action = false; std::vector nodes; - collect (nodes); + collect (nodes, collectAll); std::vector ::iterator i; for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); + if (raw == "--") + break; + + if (! (*i)->hasTag ("?")) + continue; + Nibbler n (raw); std::string name; @@ -1280,7 +1286,6 @@ void Parser::findIdSequence () for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); - if (raw == "--") break; @@ -1449,7 +1454,6 @@ void Parser::findUUIDList () for (i = nodes.begin (); i != nodes.end (); ++i) { std::string raw = (*i)->attribute ("raw"); - if (raw == "--") break;