public ES3Parser.semic_return semic() // throws RecognitionException [1]
{
ES3Parser.semic_return retval = new ES3Parser.semic_return();
retval.Start = input.LT(1);
object root_0 = null;
IToken SEMIC82 = null;
IToken EOF83 = null;
IToken RBRACE84 = null;
IToken EOL85 = null;
IToken MultiLineComment86 = null;
object SEMIC82_tree=null;
object EOF83_tree=null;
object RBRACE84_tree=null;
object EOL85_tree=null;
object MultiLineComment86_tree=null;
// Mark current position so we can unconsume a RBRACE.
int marker = input.Mark();
// Promote EOL if appropriate
PromoteEOL(retval);
try
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1393:2: ( SEMIC | EOF | RBRACE | EOL | MultiLineComment )
int alt56 = 5;
switch ( input.LA(1) )
{
case SEMIC:
{
alt56 = 1;
}
break;
case EOF:
{
alt56 = 2;
}
break;
case RBRACE:
{
alt56 = 3;
}
break;
case EOL:
{
alt56 = 4;
}
break;
case MultiLineComment:
{
alt56 = 5;
}
break;
default:
NoViableAltException nvae_d56s0 =
new NoViableAltException("", 56, 0, input);
throw nvae_d56s0;
}
switch (alt56)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1393:4: SEMIC
{
root_0 = (object)adaptor.GetNilNode();
SEMIC82=(IToken)Match(input,SEMIC,FOLLOW_SEMIC_in_semic5163);
SEMIC82_tree = (object)adaptor.Create(SEMIC82);
adaptor.AddChild(root_0, SEMIC82_tree);
}
break;
case 2 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1394:4: EOF
{
root_0 = (object)adaptor.GetNilNode();
EOF83=(IToken)Match(input,EOF,FOLLOW_EOF_in_semic5168);
EOF83_tree = (object)adaptor.Create(EOF83);
adaptor.AddChild(root_0, EOF83_tree);
}
break;
case 3 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1395:4: RBRACE
{
root_0 = (object)adaptor.GetNilNode();
RBRACE84=(IToken)Match(input,RBRACE,FOLLOW_RBRACE_in_semic5173);
RBRACE84_tree = (object)adaptor.Create(RBRACE84);
adaptor.AddChild(root_0, RBRACE84_tree);
input.Rewind(marker);
}
break;
case 4 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1396:4: EOL
{
root_0 = (object)adaptor.GetNilNode();
EOL85=(IToken)Match(input,EOL,FOLLOW_EOL_in_semic5180);
EOL85_tree = (object)adaptor.Create(EOL85);
adaptor.AddChild(root_0, EOL85_tree);
}
break;
case 5 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1396:10: MultiLineComment
{
root_0 = (object)adaptor.GetNilNode();
MultiLineComment86=(IToken)Match(input,MultiLineComment,FOLLOW_MultiLineComment_in_semic5184);
MultiLineComment86_tree = (object)adaptor.Create(MultiLineComment86);
adaptor.AddChild(root_0, MultiLineComment86_tree);
}
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 "semic"