public final NTSParser.pred_rop_return pred_rop() throws RecognitionException {
        NTSParser.pred_rop_return retval = new NTSParser.pred_rop_return();
        retval.start = input.LT(1);

        CommonTree root_0 = null;

        NTSParser.rop_return op = null;

        NTSParser.plusminus_return plusminus130 = null;

        NTSParser.plusminus_return plusminus131 = null;



        try {
            // /home/filip/workspace/nts/src/nts/parser/NTS.g:679:3: ( plusminus (op= rop plusminus )? )
            // /home/filip/workspace/nts/src/nts/parser/NTS.g:679:5: plusminus (op= rop plusminus )?
            {
            root_0 = (CommonTree)adaptor.nil();

            pushFollow(FOLLOW_plusminus_in_pred_rop2427);
            plusminus130=plusminus();

            state._fsp--;

            adaptor.addChild(root_0, plusminus130.getTree());
            // /home/filip/workspace/nts/src/nts/parser/NTS.g:680:5: (op= rop plusminus )?
            int alt39=2;
            alt39 = dfa39.predict(input);
            switch (alt39) {
                case 1 :
                    // /home/filip/workspace/nts/src/nts/parser/NTS.g:680:7: op= rop plusminus
                    {
                    pushFollow(FOLLOW_rop_in_pred_rop2437);
                    op=rop();

                    state._fsp--;

                    adaptor.addChild(root_0, op.getTree());
                    pushFollow(FOLLOW_plusminus_in_pred_rop2439);
                    plusminus131=plusminus();

                    state._fsp--;

                    adaptor.addChild(root_0, plusminus131.getTree());
                     Token tok = (op!=null?((Token)op.start):null);
                            switch(tok.getType()) {
                              case EQ: listener.eq(tok); break;
                              case NEQ: listener.neq(tok); break;
                              case LEQ: listener.leq(tok); break;
                              case LT: listener.lt(tok); break;
                              case GEQ: listener.geq(tok); break;
                              case GT: listener.gt(tok); break;
                              default: throw new RuntimeException("internal error");
                            }
                          

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);

            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }

          catch (RecognitionException ex) {
            reportError(ex);
            System.exit(1);
          }
        finally {
        }
        return retval;
    }