public ES3Parser.functionDeclaration_return functionDeclaration() // throws RecognitionException [1]
{
ES3Parser.functionDeclaration_return retval = new ES3Parser.functionDeclaration_return();
retval.Start = input.LT(1);
object root_0 = null;
IToken name = null;
IToken FUNCTION176 = null;
ES3Parser.formalParameterList_return parameters = default(ES3Parser.formalParameterList_return);
ES3Parser.functionBody_return body = default(ES3Parser.functionBody_return);
object name_tree=null;
object FUNCTION176_tree=null;
FunctionDeclarationStatement statement = new FunctionDeclarationStatement();
retval.value = statement;
try
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1801:2: ( FUNCTION name= Identifier parameters= formalParameterList body= functionBody )
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1801:4: FUNCTION name= Identifier parameters= formalParameterList body= functionBody
{
root_0 = (object)adaptor.GetNilNode();
FUNCTION176=(IToken)Match(input,FUNCTION,FOLLOW_FUNCTION_in_functionDeclaration6571);
FUNCTION176_tree = (object)adaptor.Create(FUNCTION176);
adaptor.AddChild(root_0, FUNCTION176_tree);
name=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_functionDeclaration6576);
name_tree = (object)adaptor.Create(name);
adaptor.AddChild(root_0, name_tree);
statement.Name = name.Text;
PushFollow(FOLLOW_formalParameterList_in_functionDeclaration6586);
parameters = formalParameterList();
state.followingStackPointer--;
adaptor.AddChild(root_0, parameters.Tree);
statement.Parameters.AddRange(parameters.value);
PushFollow(FOLLOW_functionBody_in_functionDeclaration6595);
body = functionBody();
state.followingStackPointer--;
adaptor.AddChild(root_0, body.Tree);
statement.Statement = body.value;
}
retval.Stop = input.LT(-1);
retval.Tree = (object)adaptor.RulePostProcessing(root_0);
adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input,re);
// Conversion of the second argument necessary, but harmless
retval.Tree = (object)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);
}
finally
{
}
return retval;
}
// $ANTLR end "functionDeclaration"