move function to a more logical location, add its grammar productions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44923 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-12-12 06:56:32 +00:00
Родитель fbb9898a5e
Коммит e8b724d481
2 изменённых файлов: 38 добавлений и 37 удалений

Просмотреть файл

@ -552,40 +552,6 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) {
}
}
/// ParseObjcTypeQualifierList - This routine parses the objective-c's type
/// qualifier list and builds their bitmask representation in the input
/// argument.
void Parser::ParseObjcTypeQualifierList(ObjcDeclSpec &DS) {
while (1) {
if (!Tok.is(tok::identifier))
return;
const IdentifierInfo *II = Tok.getIdentifierInfo();
for (unsigned i = 0; i != objc_NumQuals; ++i) {
if (II != ObjcTypeQuals[i])
continue;
ObjcDeclSpec::ObjcDeclQualifier Qual;
switch (i) {
default: assert(0 && "Unknown decl qualifier");
case objc_in: Qual = ObjcDeclSpec::DQ_In; break;
case objc_out: Qual = ObjcDeclSpec::DQ_Out; break;
case objc_inout: Qual = ObjcDeclSpec::DQ_Inout; break;
case objc_oneway: Qual = ObjcDeclSpec::DQ_Oneway; break;
case objc_bycopy: Qual = ObjcDeclSpec::DQ_Bycopy; break;
case objc_byref: Qual = ObjcDeclSpec::DQ_Byref; break;
}
DS.setObjcDeclQualifier(Qual);
ConsumeToken();
II = 0;
break;
}
// If this wasn't a recognized qualifier, bail out.
if (II) return;
}
}
/// ParseTag - Parse "struct-or-union-or-class-or-enum identifier[opt]", where
/// the first token has already been read and has been turned into an instance
/// of DeclSpec::TST (TagType). This returns true if there is an error parsing,

Просмотреть файл

@ -491,14 +491,49 @@ bool Parser::isObjCPropertyAttribute() {
return false;
}
/// objc-type-name:
/// '(' objc-type-qualifiers[opt] type-name ')'
/// '(' objc-type-qualifiers[opt] ')'
/// ParseObjcTypeQualifierList - This routine parses the objective-c's type
/// qualifier list and builds their bitmask representation in the input
/// argument.
///
/// objc-type-qualifiers:
/// objc-type-qualifier
/// objc-type-qualifiers objc-type-qualifier
///
void Parser::ParseObjcTypeQualifierList(ObjcDeclSpec &DS) {
while (1) {
if (!Tok.is(tok::identifier))
return;
const IdentifierInfo *II = Tok.getIdentifierInfo();
for (unsigned i = 0; i != objc_NumQuals; ++i) {
if (II != ObjcTypeQuals[i])
continue;
ObjcDeclSpec::ObjcDeclQualifier Qual;
switch (i) {
default: assert(0 && "Unknown decl qualifier");
case objc_in: Qual = ObjcDeclSpec::DQ_In; break;
case objc_out: Qual = ObjcDeclSpec::DQ_Out; break;
case objc_inout: Qual = ObjcDeclSpec::DQ_Inout; break;
case objc_oneway: Qual = ObjcDeclSpec::DQ_Oneway; break;
case objc_bycopy: Qual = ObjcDeclSpec::DQ_Bycopy; break;
case objc_byref: Qual = ObjcDeclSpec::DQ_Byref; break;
}
DS.setObjcDeclQualifier(Qual);
ConsumeToken();
II = 0;
break;
}
// If this wasn't a recognized qualifier, bail out.
if (II) return;
}
}
/// objc-type-name:
/// '(' objc-type-qualifiers[opt] type-name ')'
/// '(' objc-type-qualifiers[opt] ')'
///
Parser::TypeTy *Parser::ParseObjCTypeName(ObjcDeclSpec &DS) {
assert(Tok.is(tok::l_paren) && "expected (");