public TypeMember interface_declaration(TypeDefinition parent)
{
TypeMember member = null;
IToken token = null;
IToken token2 = null;
try
{
InterfaceDefinition definition2;
TypeReferenceCollection references;
this.match(0x19);
token = this.LT(1);
this.match(0x3b);
if (base.inputState.guessing == 0)
{
InterfaceDefinition definition;
InterfaceDefinition definition1 = definition = new InterfaceDefinition(ToLexicalInfo(token));
definition.set_Name(token.getText());
member = definition2 = definition;
references = definition2.get_BaseTypes();
this.FlushAttributes(definition2);
parent.get_Members().Add(definition2);
}
switch (this.LA(1))
{
case 14:
this.match(14);
this.type_reference_list(references);
break;
case 0x3d:
break;
default:
throw new NoViableAltException(this.LT(1), this.getFilename());
}
this.match(0x3d);
while (true)
{
if ((this.LA(1) != 0x13) && (this.LA(1) != 0x63))
{
break;
}
switch (this.LA(1))
{
case 0x63:
this.attributes();
break;
case 0x13:
break;
default:
throw new NoViableAltException(this.LT(1), this.getFilename());
}
this.interface_member(definition2);
}
token2 = this.LT(1);
this.match(0x3e);
if (base.inputState.guessing == 0)
{
SetEndSourceLocation(definition2, token2);
}
while ((this.LA(1) == 0x4d) && tokenSet_33_.member(this.LA(2)))
{
this.match(0x4d);
}
return member;
}
catch (RecognitionException exception)
{
if (base.inputState.guessing != 0)
{
throw;
}
this.reportError(exception);
this.recover(exception, tokenSet_33_);
return member;
}
return member;
}