protected void enum_definition(
TypeMemberCollection container
)
{
IToken id = null;
EnumDefinition ed = null;
TypeMemberCollection members = null;
try { // for error handling
match(ENUM);
id = LT(1);
match(ID);
if (0==inputState.guessing)
{
ed = new EnumDefinition(ToLexicalInfo(id));
}
begin_with_doc(ed);
if (0==inputState.guessing)
{
ed.Name = id.getText();
ed.Modifiers = _modifiers;
AddAttributes(ed.Attributes);
container.Add(ed);
members = ed.Members;
}
{
switch ( LA(1) )
{
case PASS:
{
{
match(PASS);
eos();
}
break;
}
case ID:
case LBRACK:
case SPLICE_BEGIN:
{
{ // ( ... )+
int _cnt48=0;
for (;;)
{
switch ( LA(1) )
{
case ID:
case LBRACK:
{
enum_member(members);
break;
}
case SPLICE_BEGIN:
{
splice_type_definition_body(members);
break;
}
default:
{
if (_cnt48 >= 1) { goto _loop48_breakloop; } else { throw new NoViableAltException(LT(1), getFilename());; }
}
break; }
_cnt48++;
}
_loop48_breakloop: ;
} // ( ... )+
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
end(ed);
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "enum_definition");
recover(ex,tokenSet_22_);
}
else
{
throw ex;
}
}
}