// $ANTLR start "function_definition"
// C:\\Users\\line47\\workspace\\ObjCFYPA\\src\\com\\icona\\antlr\\main\\ObjectiveC.g:290:1: function_definition returns [FunctionDefinition functionDefinition] : ds= declaration_specifiers declarator c= compound_statement ;
public final FunctionDefinition function_definition() throws RecognitionException {
FunctionDefinition functionDefinition = null;
ObjectiveCParser.declaration_specifiers_return ds =null;
Statement.CompoundStatement c =null;
ObjectiveCParser.declarator_return declarator1 =null;
functionDefinition =new FunctionDefinition(null,-1);
try {
// C:\\Users\\line47\\workspace\\ObjCFYPA\\src\\com\\icona\\antlr\\main\\ObjectiveC.g:297:2: (ds= declaration_specifiers declarator c= compound_statement )
// C:\\Users\\line47\\workspace\\ObjCFYPA\\src\\com\\icona\\antlr\\main\\ObjectiveC.g:298:2: ds= declaration_specifiers declarator c= compound_statement
{
pushFollow(FOLLOW_declaration_specifiers_in_function_definition853);
ds=declaration_specifiers();
state._fsp--;
if (state.failed) return functionDefinition;
if ( state.backtracking==0 ) {
functionDefinition.setModifier((ds!=null?ds.modifier:null));
functionDefinition.setDataType((ds!=null?ds.dataType:null));
functionDefinition.setSpecifier((ds!=null?ds.specifier:null));
}
pushFollow(FOLLOW_declarator_in_function_definition857);
declarator1=declarator();
state._fsp--;
if (state.failed) return functionDefinition;
if ( state.backtracking==0 ) {
functionDefinition.setIdentifier((declarator1!=null?declarator1.identifier:null));
functionDefinition.setArrayType((declarator1!=null?declarator1.arrayType:null));
}
pushFollow(FOLLOW_compound_statement_in_function_definition865);
c=compound_statement();
state._fsp--;
if (state.failed) return functionDefinition;
if ( state.backtracking==0 ) {
functionDefinition.setCompoundStatement(c);
}
}
}