public final void synpred61_CPP_fragment() throws RecognitionException
    {
               
        // CPP.g:512:5: ( exprLOGICAL_OR (op= '=' | op= '+=' | op= '-=' | op= '*=' | op= '/=' | op=
        // '%=' | op= '<<=' | op= '>>=' | op= '&=' | op= '^=' | op= '|=' ) exprASSIGN )
        // CPP.g:512:5: exprLOGICAL_OR (op= '=' | op= '+=' | op= '-=' | op= '*=' | op= '/=' | op=
        // '%=' | op= '<<=' | op= '>>=' | op= '&=' | op= '^=' | op= '|=' ) exprASSIGN
        {
            this.pushFollow(FOLLOW_exprLOGICAL_OR_in_synpred61_CPP2078);
            this.exprLOGICAL_OR();
            
            this.state._fsp--;
            if (this.state.failed) {
                return;
            }
            // CPP.g:513:5: (op= '=' | op= '+=' | op= '-=' | op= '*=' | op= '/=' | op= '%=' | op=
            // '<<=' | op= '>>=' | op= '&=' | op= '^=' | op= '|=' )
            int alt54 = 11;
            switch (this.input.LA(1))
            {
                case 27:
                {
                    alt54 = 1;
                }
                    break;
                case 57:
                {
                    alt54 = 2;
                }
                    break;
                case 58:
                {
                    alt54 = 3;
                }
                    break;
                case 59:
                {
                    alt54 = 4;
                }
                    break;
                case 60:
                {
                    alt54 = 5;
                }
                    break;
                case 61:
                {
                    alt54 = 6;
                }
                    break;
                case 62:
                {
                    alt54 = 7;
                }
                    break;
                case 63:
                {
                    alt54 = 8;
                }
                    break;
                case 64:
                {
                    alt54 = 9;
                }
                    break;
                case 65:
                {
                    alt54 = 10;
                }
                    break;
                case 66:
                {
                    alt54 = 11;
                }
                    break;
                default:
                    if (this.state.backtracking > 0) {
                        this.state.failed = true;
                        return;
                    }
                    NoViableAltException nvae = new NoViableAltException("", 54, 0, this.input);
                    
                    throw nvae;
            }
            
            Token op = null;
            switch (alt54)
            {
                case 1:
                    // CPP.g:513:7: op= '='
                {
                    op = (Token) this.match(this.input, 27, FOLLOW_27_in_synpred61_CPP2090);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 2:
                    // CPP.g:514:7: op= '+='
                {
                    op = (Token) this.match(this.input, 57, FOLLOW_57_in_synpred61_CPP2104);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 3:
                    // CPP.g:515:7: op= '-='
                {
                    op = (Token) this.match(this.input, 58, FOLLOW_58_in_synpred61_CPP2117);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 4:
                    // CPP.g:516:7: op= '*='
                {
                    op = (Token) this.match(this.input, 59, FOLLOW_59_in_synpred61_CPP2130);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 5:
                    // CPP.g:517:7: op= '/='
                {
                    op = (Token) this.match(this.input, 60, FOLLOW_60_in_synpred61_CPP2143);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 6:
                    // CPP.g:518:7: op= '%='
                {
                    op = (Token) this.match(this.input, 61, FOLLOW_61_in_synpred61_CPP2156);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 7:
                    // CPP.g:519:7: op= '<<='
                {
                    op = (Token) this.match(this.input, 62, FOLLOW_62_in_synpred61_CPP2169);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 8:
                    // CPP.g:520:7: op= '>>='
                {
                    op = (Token) this.match(this.input, 63, FOLLOW_63_in_synpred61_CPP2181);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 9:
                    // CPP.g:521:7: op= '&='
                {
                    op = (Token) this.match(this.input, 64, FOLLOW_64_in_synpred61_CPP2193);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 10:
                    // CPP.g:522:7: op= '^='
                {
                    op = (Token) this.match(this.input, 65, FOLLOW_65_in_synpred61_CPP2206);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                case 11:
                    // CPP.g:523:7: op= '|='
                {
                    op = (Token) this.match(this.input, 66, FOLLOW_66_in_synpred61_CPP2219);
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                
            }
            
            this.pushFollow(FOLLOW_exprASSIGN_in_synpred61_CPP2234);
            this.exprASSIGN();
            
            this.state._fsp--;
            if (this.state.failed) {
                return;
            }
            
        }
    }