예제 #1
0
        public override MdxExpression Process(MdxExpression expr)
        {
            if (expr == null)
            {
                return(null);
            }

            MdxExpression filter = new MdxUnaryExpression
                                       ("NOT"
                                       , new MdxFunctionExpression
                                           ("ISANCESTOR"
                                           , new MdxObjectReferenceExpression(args.Member.UniqueName)
                                           , new MdxObjectReferenceExpression(args.Member.HierarchyUniqueName + ".CURRENTMEMBER")
                                           )
                                       );
            var tupleBase = GenTupleBase();

            if (tupleBase.Members.Count > 0)
            {
                filter = new MdxBinaryExpression
                             (filter
                             , new MdxUnaryExpression
                                 ("NOT"
                                 , new MdxBinaryExpression
                                     (GenTupleBaseCurrent()
                                     , GenTupleBase()
                                     , "IS"
                                     )
                                 )
                             , "OR"
                             );
            }

            return(new MdxFunctionExpression
                       ("FILTER"
                       , expr
                       , filter
                       ));
        }
예제 #2
0
        public override MdxExpression Process(MdxExpression expr)
        {
            if (expr == null)
            {
                return(null);
            }

            var tuple = GenTuple();

            if (tuple.Members.Count == 1)
            {
                return(new MdxFunctionExpression
                           ("DRILLDOWNMEMBER"
                           , expr
                           , tuple
                           ));
            }
            expr = new MdxBinaryExpression
                       (expr
                       , new MdxFunctionExpression(
                           "DRILLDOWNMEMBER"
                           , new MdxFunctionExpression
                               ("FILTER"
                               , expr
                               , new MdxBinaryExpression
                                   (GenTupleBaseCurrent()
                                   , GenTupleBase()
                                   , "IS"
                                   )
                               )
                           , new MdxObjectReferenceExpression(args.Member.UniqueName)
                           )
                       , "+"
                       );
            return(expr);
        }
예제 #3
0
        public override MdxExpression Process(MdxExpression expr)
        {
            if (expr == null)
            {
                return(null);
            }

            string uniqueName          = args.Member.UniqueName;
            string hierarchyUniqueName = args.Member.HierarchyUniqueName;

            var drillDownExpr =
                new MdxFunctionExpression
                    ("Distinct"
                    , new MdxFunctionExpression
                        ("DrillDownMember"
                        , expr
                        , new MdxObjectReferenceExpression(uniqueName)
                        )
                    );
            MdxExpression filter = new MdxFunctionExpression
                                       ("IsAncestor"
                                       , new MdxObjectReferenceExpression(uniqueName)
                                       , new MdxObjectReferenceExpression(hierarchyUniqueName + ".CURRENTMEMBER")
                                       );

            MdxExpression isSelf = new MdxBinaryExpression
                                       (new MdxObjectReferenceExpression(uniqueName)
                                       , new MdxObjectReferenceExpression(hierarchyUniqueName + ".CURRENTMEMBER")
                                       , "IS"
                                       );

            if (HideSelf)
            {
                isSelf =
                    new MdxBinaryExpression
                        (isSelf
                        , new MdxFunctionExpression
                            ("IsLeaf"
                            , new MdxObjectReferenceExpression(uniqueName)
                            )
                        , "AND"
                        );
            }
            ;

            filter =
                new MdxBinaryExpression
                    (filter
                    , isSelf
                    , "OR"
                    );
            if (!SingleDimension)
            {
                var tupleBase = GenTupleBase();
                if (tupleBase.Members.Count > 0)
                {
                    filter = new MdxBinaryExpression
                                 (filter
                                 , new MdxBinaryExpression
                                     (GenTupleBaseCurrent()
                                     , GenTupleBase()
                                     , "IS"
                                     )
                                 , "AND"
                                 );
                }
            }
            return(new MdxFunctionExpression("FILTER", drillDownExpr, filter));
        }
예제 #4
0
    // $ANTLR end "expression_mult"


    // $ANTLR start "expression_power"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:260:1: expression_power returns [MdxExpression value] : f1= expression_unary ( '^' f2= expression_unary )* ;
    public MdxExpression expression_power() // throws RecognitionException [1]
    {   

        MdxExpression value = default(MdxExpression);

        MdxExpression f1 = default(MdxExpression);

        MdxExpression f2 = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:261:3: (f1= expression_unary ( '^' f2= expression_unary )* )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:261:5: f1= expression_unary ( '^' f2= expression_unary )*
            {
            	PushFollow(FOLLOW_expression_unary_in_expression_power1396);
            	f1 = expression_unary();
            	state.followingStackPointer--;

            	 value = f1; 
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:262:4: ( '^' f2= expression_unary )*
            	do 
            	{
            	    int alt37 = 2;
            	    int LA37_0 = input.LA(1);

            	    if ( (LA37_0 == 71) )
            	    {
            	        alt37 = 1;
            	    }


            	    switch (alt37) 
            		{
            			case 1 :
            			    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:262:6: '^' f2= expression_unary
            			    {
            			    	Match(input,71,FOLLOW_71_in_expression_power1405); 
            			    	PushFollow(FOLLOW_expression_unary_in_expression_power1409);
            			    	f2 = expression_unary();
            			    	state.followingStackPointer--;

            			    	 value = new MdxBinaryExpression(value,f2,"^"); 

            			    }
            			    break;

            			default:
            			    goto loop37;
            	    }
            	} while (true);

            	loop37:
            		;	// Stops C# compiler whining that label 'loop37' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }
예제 #5
0
    // $ANTLR end "expression_unary"


    // $ANTLR start "expression_range_is"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:273:1: expression_range_is returns [MdxExpression value] : e1= expression_property ( ':' e2= expression_property | IS e3= expression_property )? ;
    public MdxExpression expression_range_is() // throws RecognitionException [1]
    {   

        MdxExpression value = default(MdxExpression);

        MdxExpression e1 = default(MdxExpression);

        MdxExpression e2 = default(MdxExpression);

        MdxExpression e3 = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:274:2: (e1= expression_property ( ':' e2= expression_property | IS e3= expression_property )? )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:274:4: e1= expression_property ( ':' e2= expression_property | IS e3= expression_property )?
            {
            	PushFollow(FOLLOW_expression_property_in_expression_range_is1494);
            	e1 = expression_property();
            	state.followingStackPointer--;

            	value = e1; 
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:275:4: ( ':' e2= expression_property | IS e3= expression_property )?
            	int alt39 = 3;
            	int LA39_0 = input.LA(1);

            	if ( (LA39_0 == 72) )
            	{
            	    alt39 = 1;
            	}
            	else if ( (LA39_0 == IS) )
            	{
            	    alt39 = 2;
            	}
            	switch (alt39) 
            	{
            	    case 1 :
            	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:275:6: ':' e2= expression_property
            	        {
            	        	Match(input,72,FOLLOW_72_in_expression_range_is1503); 
            	        	PushFollow(FOLLOW_expression_property_in_expression_range_is1507);
            	        	e2 = expression_property();
            	        	state.followingStackPointer--;

            	        	 value = new MdxBinaryExpression(value,e2,":"); 

            	        }
            	        break;
            	    case 2 :
            	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:276:6: IS e3= expression_property
            	        {
            	        	Match(input,IS,FOLLOW_IS_in_expression_range_is1517); 
            	        	PushFollow(FOLLOW_expression_property_in_expression_range_is1521);
            	        	e3 = expression_property();
            	        	state.followingStackPointer--;

            	        	 value = new MdxBinaryExpression(value,e3,"IS"); 

            	        }
            	        break;

            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }
예제 #6
0
    // $ANTLR end "expression_add"


    // $ANTLR start "expression_mult"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:250:1: expression_mult returns [MdxExpression value] : f1= expression_power ( (op1= '/' | op2= '*' ) f2= expression_power )* ;
    public MdxExpression expression_mult() // throws RecognitionException [1]
    {   

        MdxExpression value = default(MdxExpression);

        IToken op1 = null;
        IToken op2 = null;
        MdxExpression f1 = default(MdxExpression);

        MdxExpression f2 = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:251:3: (f1= expression_power ( (op1= '/' | op2= '*' ) f2= expression_power )* )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:251:5: f1= expression_power ( (op1= '/' | op2= '*' ) f2= expression_power )*
            {
            	PushFollow(FOLLOW_expression_power_in_expression_mult1318);
            	f1 = expression_power();
            	state.followingStackPointer--;

            	 value = f1; string op="";  
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:252:4: ( (op1= '/' | op2= '*' ) f2= expression_power )*
            	do 
            	{
            	    int alt36 = 2;
            	    int LA36_0 = input.LA(1);

            	    if ( (LA36_0 == 59 || LA36_0 == 70) )
            	    {
            	        alt36 = 1;
            	    }


            	    switch (alt36) 
            		{
            			case 1 :
            			    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:253:6: (op1= '/' | op2= '*' ) f2= expression_power
            			    {
            			    	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:253:6: (op1= '/' | op2= '*' )
            			    	int alt35 = 2;
            			    	int LA35_0 = input.LA(1);

            			    	if ( (LA35_0 == 70) )
            			    	{
            			    	    alt35 = 1;
            			    	}
            			    	else if ( (LA35_0 == 59) )
            			    	{
            			    	    alt35 = 2;
            			    	}
            			    	else 
            			    	{
            			    	    NoViableAltException nvae_d35s0 =
            			    	        new NoViableAltException("", 35, 0, input);

            			    	    throw nvae_d35s0;
            			    	}
            			    	switch (alt35) 
            			    	{
            			    	    case 1 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:253:8: op1= '/'
            			    	        {
            			    	        	op1=(IToken)Match(input,70,FOLLOW_70_in_expression_mult1337); 
            			    	        	 op=((op1 != null) ? op1.Text : null); 

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:254:7: op2= '*'
            			    	        {
            			    	        	op2=(IToken)Match(input,59,FOLLOW_59_in_expression_mult1349); 
            			    	        	 op=((op2 != null) ? op2.Text : null); 

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_expression_power_in_expression_mult1366);
            			    	f2 = expression_power();
            			    	state.followingStackPointer--;

            			    	 value = new MdxBinaryExpression(value,f2,op); 

            			    }
            			    break;

            			default:
            			    goto loop36;
            	    }
            	} while (true);

            	loop36:
            		;	// Stops C# compiler whining that label 'loop36' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }
예제 #7
0
    // $ANTLR end "expression_compare"


    // $ANTLR start "expression_add"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:239:1: expression_add returns [MdxExpression value] : t1= expression_mult ( ( '+' | '-' ) t2= expression_mult )* ;
    public MdxExpression expression_add() // throws RecognitionException [1]
    {   

        MdxExpression value = default(MdxExpression);

        MdxExpression t1 = default(MdxExpression);

        MdxExpression t2 = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:240:2: (t1= expression_mult ( ( '+' | '-' ) t2= expression_mult )* )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:240:4: t1= expression_mult ( ( '+' | '-' ) t2= expression_mult )*
            {
            	PushFollow(FOLLOW_expression_mult_in_expression_add1253);
            	t1 = expression_mult();
            	state.followingStackPointer--;

            	 value = t1; string op=""; 
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:241:3: ( ( '+' | '-' ) t2= expression_mult )*
            	do 
            	{
            	    int alt34 = 2;
            	    int LA34_0 = input.LA(1);

            	    if ( ((LA34_0 >= 68 && LA34_0 <= 69)) )
            	    {
            	        alt34 = 1;
            	    }


            	    switch (alt34) 
            		{
            			case 1 :
            			    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:242:4: ( '+' | '-' ) t2= expression_mult
            			    {
            			    	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:242:4: ( '+' | '-' )
            			    	int alt33 = 2;
            			    	int LA33_0 = input.LA(1);

            			    	if ( (LA33_0 == 68) )
            			    	{
            			    	    alt33 = 1;
            			    	}
            			    	else if ( (LA33_0 == 69) )
            			    	{
            			    	    alt33 = 2;
            			    	}
            			    	else 
            			    	{
            			    	    NoViableAltException nvae_d33s0 =
            			    	        new NoViableAltException("", 33, 0, input);

            			    	    throw nvae_d33s0;
            			    	}
            			    	switch (alt33) 
            			    	{
            			    	    case 1 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:242:6: '+'
            			    	        {
            			    	        	Match(input,68,FOLLOW_68_in_expression_add1266); 
            			    	        	 op="+"; 

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:243:6: '-'
            			    	        {
            			    	        	Match(input,69,FOLLOW_69_in_expression_add1275); 
            			    	        	 op="-"; 

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_expression_mult_in_expression_add1286);
            			    	t2 = expression_mult();
            			    	state.followingStackPointer--;

            			    	 value = new MdxBinaryExpression(value,t2,op); 

            			    }
            			    break;

            			default:
            			    goto loop34;
            	    }
            	} while (true);

            	loop34:
            		;	// Stops C# compiler whining that label 'loop34' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }
예제 #8
0
    // $ANTLR end "expression_and"


    // $ANTLR start "expression_compare"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:226:1: expression_compare returns [MdxExpression value] : t1= expression_add ( ( '=' | '<>' | '<' | '>' | '<=' | '>=' ) t2= expression_add )* ;
    public MdxExpression expression_compare() // throws RecognitionException [1]
    {   

        MdxExpression value = default(MdxExpression);

        MdxExpression t1 = default(MdxExpression);

        MdxExpression t2 = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:227:2: (t1= expression_add ( ( '=' | '<>' | '<' | '>' | '<=' | '>=' ) t2= expression_add )* )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:227:4: t1= expression_add ( ( '=' | '<>' | '<' | '>' | '<=' | '>=' ) t2= expression_add )*
            {
            	PushFollow(FOLLOW_expression_add_in_expression_compare1154);
            	t1 = expression_add();
            	state.followingStackPointer--;

            	 value = t1; string op=""; 
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:228:3: ( ( '=' | '<>' | '<' | '>' | '<=' | '>=' ) t2= expression_add )*
            	do 
            	{
            	    int alt32 = 2;
            	    int LA32_0 = input.LA(1);

            	    if ( (LA32_0 == 53 || (LA32_0 >= 63 && LA32_0 <= 67)) )
            	    {
            	        alt32 = 1;
            	    }


            	    switch (alt32) 
            		{
            			case 1 :
            			    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:229:4: ( '=' | '<>' | '<' | '>' | '<=' | '>=' ) t2= expression_add
            			    {
            			    	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:229:4: ( '=' | '<>' | '<' | '>' | '<=' | '>=' )
            			    	int alt31 = 6;
            			    	switch ( input.LA(1) ) 
            			    	{
            			    	case 53:
            			    		{
            			    	    alt31 = 1;
            			    	    }
            			    	    break;
            			    	case 63:
            			    		{
            			    	    alt31 = 2;
            			    	    }
            			    	    break;
            			    	case 64:
            			    		{
            			    	    alt31 = 3;
            			    	    }
            			    	    break;
            			    	case 65:
            			    		{
            			    	    alt31 = 4;
            			    	    }
            			    	    break;
            			    	case 66:
            			    		{
            			    	    alt31 = 5;
            			    	    }
            			    	    break;
            			    	case 67:
            			    		{
            			    	    alt31 = 6;
            			    	    }
            			    	    break;
            			    		default:
            			    		    NoViableAltException nvae_d31s0 =
            			    		        new NoViableAltException("", 31, 0, input);

            			    		    throw nvae_d31s0;
            			    	}

            			    	switch (alt31) 
            			    	{
            			    	    case 1 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:229:6: '='
            			    	        {
            			    	        	Match(input,53,FOLLOW_53_in_expression_compare1167); 
            			    	        	 op="="; 

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:230:6: '<>'
            			    	        {
            			    	        	Match(input,63,FOLLOW_63_in_expression_compare1176); 
            			    	        	 op="<>"; 

            			    	        }
            			    	        break;
            			    	    case 3 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:231:6: '<'
            			    	        {
            			    	        	Match(input,64,FOLLOW_64_in_expression_compare1185); 
            			    	        	 op="<"; 

            			    	        }
            			    	        break;
            			    	    case 4 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:232:6: '>'
            			    	        {
            			    	        	Match(input,65,FOLLOW_65_in_expression_compare1194); 
            			    	        	 op=">"; 

            			    	        }
            			    	        break;
            			    	    case 5 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:233:6: '<='
            			    	        {
            			    	        	Match(input,66,FOLLOW_66_in_expression_compare1203); 
            			    	        	 op="<="; 

            			    	        }
            			    	        break;
            			    	    case 6 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:234:6: '>='
            			    	        {
            			    	        	Match(input,67,FOLLOW_67_in_expression_compare1212); 
            			    	        	 op=">="; 

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_expression_add_in_expression_compare1223);
            			    	t2 = expression_add();
            			    	state.followingStackPointer--;

            			    	 value = new MdxBinaryExpression(value,t2,op); 

            			    }
            			    break;

            			default:
            			    goto loop32;
            	    }
            	} while (true);

            	loop32:
            		;	// Stops C# compiler whining that label 'loop32' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }
예제 #9
0
    // $ANTLR end "expression_or_xor"


    // $ANTLR start "expression_and"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:221:1: expression_and returns [MdxExpression value] : t1= expression_compare ( AND t2= expression_compare )* ;
    public MdxExpression expression_and() // throws RecognitionException [1]
    {   

        MdxExpression value = default(MdxExpression);

        MdxExpression t1 = default(MdxExpression);

        MdxExpression t2 = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:222:2: (t1= expression_compare ( AND t2= expression_compare )* )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:222:4: t1= expression_compare ( AND t2= expression_compare )*
            {
            	PushFollow(FOLLOW_expression_compare_in_expression_and1118);
            	t1 = expression_compare();
            	state.followingStackPointer--;

            	 value = t1; 
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:223:3: ( AND t2= expression_compare )*
            	do 
            	{
            	    int alt30 = 2;
            	    int LA30_0 = input.LA(1);

            	    if ( (LA30_0 == AND) )
            	    {
            	        alt30 = 1;
            	    }


            	    switch (alt30) 
            		{
            			case 1 :
            			    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:223:5: AND t2= expression_compare
            			    {
            			    	Match(input,AND,FOLLOW_AND_in_expression_and1127); 
            			    	PushFollow(FOLLOW_expression_compare_in_expression_and1131);
            			    	t2 = expression_compare();
            			    	state.followingStackPointer--;

            			    	 value = new MdxBinaryExpression(value,t2,"AND"); 

            			    }
            			    break;

            			default:
            			    goto loop30;
            	    }
            	} while (true);

            	loop30:
            		;	// Stops C# compiler whining that label 'loop30' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }
예제 #10
0
    // $ANTLR end "expression"


    // $ANTLR start "expression_or_xor"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:212:1: expression_or_xor returns [MdxExpression value] : t1= expression_and ( ( XOR | OR ) t2= expression_and )* ;
    public MdxExpression expression_or_xor() // throws RecognitionException [1]
    {   

        MdxExpression value = default(MdxExpression);

        MdxExpression t1 = default(MdxExpression);

        MdxExpression t2 = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:213:2: (t1= expression_and ( ( XOR | OR ) t2= expression_and )* )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:213:4: t1= expression_and ( ( XOR | OR ) t2= expression_and )*
            {
            	PushFollow(FOLLOW_expression_and_in_expression_or_xor1052);
            	t1 = expression_and();
            	state.followingStackPointer--;

            	 value = t1; string op=""; 
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:214:3: ( ( XOR | OR ) t2= expression_and )*
            	do 
            	{
            	    int alt29 = 2;
            	    int LA29_0 = input.LA(1);

            	    if ( ((LA29_0 >= XOR && LA29_0 <= OR)) )
            	    {
            	        alt29 = 1;
            	    }


            	    switch (alt29) 
            		{
            			case 1 :
            			    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:215:5: ( XOR | OR ) t2= expression_and
            			    {
            			    	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:215:5: ( XOR | OR )
            			    	int alt28 = 2;
            			    	int LA28_0 = input.LA(1);

            			    	if ( (LA28_0 == XOR) )
            			    	{
            			    	    alt28 = 1;
            			    	}
            			    	else if ( (LA28_0 == OR) )
            			    	{
            			    	    alt28 = 2;
            			    	}
            			    	else 
            			    	{
            			    	    NoViableAltException nvae_d28s0 =
            			    	        new NoViableAltException("", 28, 0, input);

            			    	    throw nvae_d28s0;
            			    	}
            			    	switch (alt28) 
            			    	{
            			    	    case 1 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:215:7: XOR
            			    	        {
            			    	        	Match(input,XOR,FOLLOW_XOR_in_expression_or_xor1066); 
            			    	        	 op="XOR"; 

            			    	        }
            			    	        break;
            			    	    case 2 :
            			    	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:216:7: OR
            			    	        {
            			    	        	Match(input,OR,FOLLOW_OR_in_expression_or_xor1076); 
            			    	        	 op="OR"; 

            			    	        }
            			    	        break;

            			    	}

            			    	PushFollow(FOLLOW_expression_and_in_expression_or_xor1088);
            			    	t2 = expression_and();
            			    	state.followingStackPointer--;

            			    	 value = new MdxBinaryExpression(value,t2,op); 

            			    }
            			    break;

            			default:
            			    goto loop29;
            	    }
            	} while (true);

            	loop29:
            		;	// Stops C# compiler whining that label 'loop29' has no statements


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }