IdentifiersPtr Parser::parseIdentifierList_r() { if (match(TokenType::Comma)) { return parseIdentifierList(); } return IdentifiersPtr(); }
IdentifiersPtr Parser::parseIdentifierList() { IdentifierPtr curIdentifier = parseIdentifier(); if (m_errorCode > ErrorCodes::NoError) { panic(identifierListFollow, identifierListFollowSize); return IdentifiersPtr(); } IdentifiersPtr identifiers(new Identifiers); identifiers->list.push_back(curIdentifier); IdentifiersPtr rest = parseIdentifierList_r(); if (rest) { identifiers->list.insert(identifiers->list.end(), rest->list.begin(), rest->list.end()); } return identifiers; }
IdentifiersPtr NullFactory::createIdentifiers() const { return IdentifiersPtr(new Identifiers()); }