protected CallableTypeReference callable_type_reference()
{
CallableTypeReference ctr;
IToken c = null;
ctr = null;
TypeReference tr = null;
ParameterDeclarationCollection parameters = null;
try { // for error handling
c = LT(1);
match(CALLABLE);
match(LPAREN);
if (0==inputState.guessing)
{
ctr = new CallableTypeReference(ToLexicalInfo(c));
parameters = ctr.Parameters;
}
callable_parameter_declaration_list(parameters);
match(RPAREN);
{
if ((LA(1)==AS) && (tokenSet_43_.member(LA(2))))
{
match(AS);
tr=type_reference();
if (0==inputState.guessing)
{
ctr.ReturnType = tr;
}
}
else if ((tokenSet_41_.member(LA(1))) && (tokenSet_15_.member(LA(2)))) {
}
else
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "callable_type_reference");
recover(ex,tokenSet_41_);
}
else
{
throw ex;
}
}
return ctr;
}