示例#1
0
bool
ClParserParser::
readIdentifier(ClParserIdentifierPtr &identifier)
{
  StringVectorT scopes;
  std::string   idstr, str;

  if (! parse_.readIdentifier(idstr))
    return false;

  while (parse_.isString("::")) {
    parse_.skipChars(2);

    if (! parse_.readIdentifier(str))
      break;

    scopes.push_back(idstr);

    idstr = str;
  }

  identifier = ClParserIdentifierMgrInst->createIdentifier(idstr);

  StringVectorT::const_iterator p1 = scopes.begin();
  StringVectorT::const_iterator p2 = scopes.end  ();

  for ( ; p1 != p2; ++p1)
    identifier->addScope(*p1);

  return true;
}