public final void select_expr()

in stack/core/src/main/java/org/apache/usergrid/mq/QueryFilterParser.java [774:900]


    public final void select_expr() throws RecognitionException {
        try {
            // org/usergrid/persistence/query/QueryFilter.g:179:2: ( ( '*' | select_subject ( ',
            // ' select_subject )* | '{' select_assign ( ',' select_assign )* '}' ) )
            // org/usergrid/persistence/query/QueryFilter.g:179:4: ( '*' | select_subject ( ',
            // ' select_subject )* | '{' select_assign ( ',' select_assign )* '}' )
            {
                // org/usergrid/persistence/query/QueryFilter.g:179:4: ( '*' | select_subject ( ',
                // ' select_subject )* | '{' select_assign ( ',' select_assign )* '}' )
                int alt8 = 3;
                switch ( input.LA( 1 ) ) {
                    case 34: {
                        alt8 = 1;
                    }
                    break;
                    case ID: {
                        alt8 = 2;
                    }
                    break;
                    case 35: {
                        alt8 = 3;
                    }
                    break;
                    default:
                        NoViableAltException nvae = new NoViableAltException( "", 8, 0, input );

                        throw nvae;
                }

                switch ( alt8 ) {
                    case 1:
                        // org/usergrid/persistence/query/QueryFilter.g:179:5: '*'
                    {
                        match( input, 34, FOLLOW_34_in_select_expr925 );
                    }
                    break;
                    case 2:
                        // org/usergrid/persistence/query/QueryFilter.g:179:11: select_subject ( ',' select_subject )*
                    {
                        pushFollow( FOLLOW_select_subject_in_select_expr929 );
                        select_subject();

                        state._fsp--;

                        // org/usergrid/persistence/query/QueryFilter.g:179:26: ( ',' select_subject )*
                        loop6:
                        do {
                            int alt6 = 2;
                            int LA6_0 = input.LA( 1 );

                            if ( ( LA6_0 == 29 ) ) {
                                alt6 = 1;
                            }


                            switch ( alt6 ) {
                                case 1:
                                    // org/usergrid/persistence/query/QueryFilter.g:179:27: ',' select_subject
                                {
                                    match( input, 29, FOLLOW_29_in_select_expr932 );
                                    pushFollow( FOLLOW_select_subject_in_select_expr934 );
                                    select_subject();

                                    state._fsp--;
                                }
                                break;

                                default:
                                    break loop6;
                            }
                        }
                        while ( true );
                    }
                    break;
                    case 3:
                        // org/usergrid/persistence/query/QueryFilter.g:179:51: '{' select_assign ( ',
                        // ' select_assign )* '}'
                    {
                        match( input, 35, FOLLOW_35_in_select_expr941 );
                        pushFollow( FOLLOW_select_assign_in_select_expr943 );
                        select_assign();

                        state._fsp--;

                        // org/usergrid/persistence/query/QueryFilter.g:179:69: ( ',' select_assign )*
                        loop7:
                        do {
                            int alt7 = 2;
                            int LA7_0 = input.LA( 1 );

                            if ( ( LA7_0 == 29 ) ) {
                                alt7 = 1;
                            }


                            switch ( alt7 ) {
                                case 1:
                                    // org/usergrid/persistence/query/QueryFilter.g:179:70: ',' select_assign
                                {
                                    match( input, 29, FOLLOW_29_in_select_expr946 );
                                    pushFollow( FOLLOW_select_assign_in_select_expr948 );
                                    select_assign();

                                    state._fsp--;
                                }
                                break;

                                default:
                                    break loop7;
                            }
                        }
                        while ( true );

                        match( input, 36, FOLLOW_36_in_select_expr953 );
                    }
                    break;
                }
            }
        }
        catch ( RecognitionException re ) {
            reportError( re );
            recover( input, re );
        }
        finally {
        }
        return;
    }