public ES3Parser.numericLiteral_return numericLiteral() // throws RecognitionException [1]
{
ES3Parser.numericLiteral_return retval = new ES3Parser.numericLiteral_return();
retval.Start = input.LT(1);
object root_0 = null;
IToken ex1 = null;
IToken ex2 = null;
IToken ex3 = null;
object ex1_tree=null;
object ex2_tree=null;
object ex3_tree=null;
try
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:888:2: (ex1= DecimalLiteral | ex2= OctalIntegerLiteral | ex3= HexIntegerLiteral )
int alt5 = 3;
switch ( input.LA(1) )
{
case DecimalLiteral:
{
alt5 = 1;
}
break;
case OctalIntegerLiteral:
{
alt5 = 2;
}
break;
case HexIntegerLiteral:
{
alt5 = 3;
}
break;
default:
NoViableAltException nvae_d5s0 =
new NoViableAltException("", 5, 0, input);
throw nvae_d5s0;
}
switch (alt5)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:888:4: ex1= DecimalLiteral
{
root_0 = (object)adaptor.GetNilNode();
ex1=(IToken)Match(input,DecimalLiteral,FOLLOW_DecimalLiteral_in_numericLiteral2756);
ex1_tree = (object)adaptor.Create(ex1);
adaptor.AddChild(root_0, ex1_tree);
retval.value = double.Parse(ex1.Text, NumberStyles.Float, numberFormatInfo);
}
break;
case 2 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:889:4: ex2= OctalIntegerLiteral
{
root_0 = (object)adaptor.GetNilNode();
ex2=(IToken)Match(input,OctalIntegerLiteral,FOLLOW_OctalIntegerLiteral_in_numericLiteral2765);
ex2_tree = (object)adaptor.Create(ex2);
adaptor.AddChild(root_0, ex2_tree);
retval.value = Convert.ToInt64(ex2.Text, 8);
}
break;
case 3 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:890:4: ex3= HexIntegerLiteral
{
root_0 = (object)adaptor.GetNilNode();
ex3=(IToken)Match(input,HexIntegerLiteral,FOLLOW_HexIntegerLiteral_in_numericLiteral2774);
ex3_tree = (object)adaptor.Create(ex3);
adaptor.AddChild(root_0, ex3_tree);
retval.value = Convert.ToInt64(ex3.Text, 16);
}
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 "numericLiteral"