def bin_op(self):
    localctx = decafJavierParser.Bin_opContext(self, self._ctx, self.state)
    self.enterRule(localctx, 40, self.RULE_bin_op)
    try:
        self.state = 275
        self._errHandler.sync(self)
        token = self._input.LA(1)
        if (token in [decafJavierParser.ADD, decafJavierParser.SUB, decafJavierParser.MULTIPLY, decafJavierParser.DIVIDE, decafJavierParser.REMINDER]):
            self.enterOuterAlt(localctx, 1)
            self.state = 271
            self.arith_op()
            pass
        elif (token in [decafJavierParser.GREATER_OP, decafJavierParser.LESS_OP, decafJavierParser.GREATER_eq_op, decafJavierParser.LESS_eq_op]):
            self.enterOuterAlt(localctx, 2)
            self.state = 272
            self.rel_op()
            pass
        elif (token in [decafJavierParser.EQUALITY_OP, decafJavierParser.UNEQUALITY_OP]):
            self.enterOuterAlt(localctx, 3)
            self.state = 273
            self.eq_op()
            pass
        elif (token in [decafJavierParser.AND, decafJavierParser.OR]):
            self.enterOuterAlt(localctx, 4)
            self.state = 274
            self.cond_op()
            pass
        else:
            raise NoViableAltException(self)
    except RecognitionException as re:
        localctx.exception = re
        self._errHandler.reportError(self, re)
        self._errHandler.recover(self, re)
    finally:
        self.exitRule()
    return localctx
def bin_op(self):
    localctx = decafJavierParser.Bin_opContext(self, self._ctx, self.state)
    self.enterRule(localctx, 40, self.RULE_bin_op)
    try:
        self.state = 275
        self._errHandler.sync(self)
        token = self._input.LA(1)
        if (token in [decafJavierParser.ADD, decafJavierParser.SUB, decafJavierParser.MULTIPLY, decafJavierParser.DIVIDE, decafJavierParser.REMINDER]):
            self.enterOuterAlt(localctx, 1)
            self.state = 271
            self.arith_op()
            pass
        elif (token in [decafJavierParser.GREATER_OP, decafJavierParser.LESS_OP, decafJavierParser.GREATER_eq_op, decafJavierParser.LESS_eq_op]):
            self.enterOuterAlt(localctx, 2)
            self.state = 272
            self.rel_op()
            pass
        elif (token in [decafJavierParser.EQUALITY_OP, decafJavierParser.UNEQUALITY_OP]):
            self.enterOuterAlt(localctx, 3)
            self.state = 273
            self.eq_op()
            pass
        elif (token in [decafJavierParser.AND, decafJavierParser.OR]):
            self.enterOuterAlt(localctx, 4)
            self.state = 274
            self.cond_op()
            pass
        else:
            raise NoViableAltException(self)
    except RecognitionException as re:
        localctx.exception = re
        self._errHandler.reportError(self, re)
        self._errHandler.recover(self, re)
    finally:
        self.exitRule()
    return localctx