public ES3Parser.sourceElement_return sourceElement() // throws RecognitionException [1]
{
ES3Parser.sourceElement_return retval = new ES3Parser.sourceElement_return();
retval.Start = input.LT(1);
object root_0 = null;
ES3Parser.functionDeclaration_return func = default(ES3Parser.functionDeclaration_return);
ES3Parser.statement_return stat = default(ES3Parser.statement_return);
try
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1858:2: ({...}?func= functionDeclaration | stat= statement )
int alt88 = 2;
alt88 = dfa88.Predict(input);
switch (alt88)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1858:4: {...}?func= functionDeclaration
{
root_0 = (object)adaptor.GetNilNode();
if ( !(( input.LA(1) == FUNCTION )) )
{
throw new FailedPredicateException(input, "sourceElement", " input.LA(1) == FUNCTION ");
}
PushFollow(FOLLOW_functionDeclaration_in_sourceElement6793);
func = functionDeclaration();
state.followingStackPointer--;
adaptor.AddChild(root_0, func.Tree);
retval.value = func.value;
}
break;
case 2 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1859:4: stat= statement
{
root_0 = (object)adaptor.GetNilNode();
PushFollow(FOLLOW_statement_in_sourceElement6802);
stat = statement();
state.followingStackPointer--;
adaptor.AddChild(root_0, stat.Tree);
retval.value = stat.value;
}
break;
}
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 "sourceElement"