ES3Parser.numericLiteral C# (CSharp) Method

numericLiteral() public method

public numericLiteral ( ) : ES3Parser.numericLiteral_return
return ES3Parser.numericLiteral_return
    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"
ES3Parser