protected MdxTupleExpression GenTupleBase() { var tuple = new MdxTupleExpression(); string lasthier = args.Member.HierarchyUniqueName; for (int i = 0; i < args.Ascendants.Count; i++) { var member = args.Ascendants[i]; if (lasthier != member.HierarchyUniqueName) { lasthier = member.HierarchyUniqueName; tuple.Members.Insert(0, new MdxObjectReferenceExpression(member.UniqueName)); } } return(tuple); }
// $ANTLR end "expression_property" // $ANTLR start "expression_simple" // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:296:1: expression_simple returns [MdxExpression value] : ( expression_function | '(' expressions_list ')' | '{' ( expressions_list )? '}' | expression_case | STRING | INTEGER | FLOAT | identifier | RANET_EXPRESSION ); public MdxExpression expression_simple() // throws RecognitionException [1] { MdxExpression value = default(MdxExpression); IToken STRING31 = null; IToken INTEGER32 = null; IToken FLOAT33 = null; IToken RANET_EXPRESSION35 = null; MdxFunctionExpression expression_function27 = default(MdxFunctionExpression); List<MdxExpression> expressions_list28 = default(List<MdxExpression>); List<MdxExpression> expressions_list29 = default(List<MdxExpression>); MdxCaseExpression expression_case30 = default(MdxCaseExpression); string identifier34 = default(string); try { // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:297:2: ( expression_function | '(' expressions_list ')' | '{' ( expressions_list )? '}' | expression_case | STRING | INTEGER | FLOAT | identifier | RANET_EXPRESSION ) int alt44 = 9; alt44 = dfa44.Predict(input); switch (alt44) { case 1 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:297:4: expression_function { PushFollow(FOLLOW_expression_function_in_expression_simple1668); expression_function27 = expression_function(); state.followingStackPointer--; value = expression_function27; } break; case 2 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:298:4: '(' expressions_list ')' { Match(input,61,FOLLOW_61_in_expression_simple1675); PushFollow(FOLLOW_expressions_list_in_expression_simple1677); expressions_list28 = expressions_list(); state.followingStackPointer--; Match(input,62,FOLLOW_62_in_expression_simple1679); value = null; if (expressions_list28!=null) if (expressions_list28.Count==1) value = expressions_list28[0] as MdxTupleExpression; if(value==null) value = new MdxTupleExpression(expressions_list28); } break; case 3 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:309:4: '{' ( expressions_list )? '}' { Match(input,74,FOLLOW_74_in_expression_simple1688); // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:309:8: ( expressions_list )? int alt43 = 2; int LA43_0 = input.LA(1); if ( (LA43_0 == PROPERTIES || LA43_0 == DIMENSION || LA43_0 == INTEGER || LA43_0 == RANET_EXPRESSION || LA43_0 == NOT || (LA43_0 >= STRING && LA43_0 <= CASE) || (LA43_0 >= ID && LA43_0 <= QUOTED_ID) || LA43_0 == 61 || (LA43_0 >= 68 && LA43_0 <= 69) || LA43_0 == 74) ) { alt43 = 1; } switch (alt43) { case 1 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:309:9: expressions_list { PushFollow(FOLLOW_expressions_list_in_expression_simple1691); expressions_list29 = expressions_list(); state.followingStackPointer--; } break; } Match(input,75,FOLLOW_75_in_expression_simple1695); value = new MdxSetExpression(expressions_list29); } break; case 4 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:311:4: expression_case { PushFollow(FOLLOW_expression_case_in_expression_simple1704); expression_case30 = expression_case(); state.followingStackPointer--; value = expression_case30; } break; case 5 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:312:4: STRING { STRING31=(IToken)Match(input,STRING,FOLLOW_STRING_in_expression_simple1711); value = new MdxConstantExpression(((STRING31 != null) ? STRING31.Text : null),MdxConstantKind.String); } break; case 6 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:313:4: INTEGER { INTEGER32=(IToken)Match(input,INTEGER,FOLLOW_INTEGER_in_expression_simple1718); value = new MdxConstantExpression(((INTEGER32 != null) ? INTEGER32.Text : null),MdxConstantKind.Integer); } break; case 7 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:314:4: FLOAT { FLOAT33=(IToken)Match(input,FLOAT,FOLLOW_FLOAT_in_expression_simple1725); value = new MdxConstantExpression(((FLOAT33 != null) ? FLOAT33.Text : null),MdxConstantKind.Float); } break; case 8 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:315:4: identifier { PushFollow(FOLLOW_identifier_in_expression_simple1732); identifier34 = identifier(); state.followingStackPointer--; value = new MdxObjectReferenceExpression(identifier34); } break; case 9 : // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:316:4: RANET_EXPRESSION { RANET_EXPRESSION35=(IToken)Match(input,RANET_EXPRESSION,FOLLOW_RANET_EXPRESSION_in_expression_simple1739); value = new MdxObjectReferenceExpression(((RANET_EXPRESSION35 != null) ? RANET_EXPRESSION35.Text : null)); } break; } } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return value; }