protected bool callable_parameter_declaration(
ParameterDeclarationCollection c
)
{
bool varArgs;
TypeReference tr = null;
ParameterModifiers pm = ParameterModifiers.None;
varArgs = false;
try { // for error handling
{
switch ( LA(1) )
{
case MULTIPLY:
{
{
match(MULTIPLY);
if (0==inputState.guessing)
{
varArgs=true;
}
tr=type_reference();
}
break;
}
case CALLABLE:
case CHAR:
case REF:
case THEN:
case LPAREN:
case ID:
case SPLICE_BEGIN:
{
{
{
switch ( LA(1) )
{
case REF:
{
pm=parameter_modifier();
break;
}
case CALLABLE:
case CHAR:
case THEN:
case LPAREN:
case ID:
case SPLICE_BEGIN:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
tr=type_reference();
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if (0==inputState.guessing)
{
ParameterDeclaration pd = new ParameterDeclaration(tr.LexicalInfo);
pd.Name = "arg" + c.Count;
pd.Type = tr;
pd.Modifiers = pm;
c.Add(pd);
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "callable_parameter_declaration");
recover(ex,tokenSet_85_);
}
else
{
throw ex;
}
}
return varArgs;
}