private NoncondexpressionContext noncondexpression()

in modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/PainlessParser.java [2417:2650]


    private NoncondexpressionContext noncondexpression(int _p) throws RecognitionException {
        ParserRuleContext _parentctx = _ctx;
        int _parentState = getState();
        NoncondexpressionContext _localctx = new NoncondexpressionContext(_ctx, _parentState);
        NoncondexpressionContext _prevctx = _localctx;
        int _startState = 32;
        enterRecursionRule(_localctx, 32, RULE_noncondexpression, _p);
        int _la;
        try {
            int _alt;
            enterOuterAlt(_localctx, 1);
            {
                {
                    _localctx = new SingleContext(_localctx);
                    _ctx = _localctx;
                    _prevctx = _localctx;

                    setState(266);
                    unary();
                }
                _ctx.stop = _input.LT(-1);
                setState(309);
                _errHandler.sync(this);
                _alt = getInterpreter().adaptivePredict(_input, 25, _ctx);
                while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
                    if (_alt == 1) {
                        if (_parseListeners != null) triggerExitRuleEvent();
                        _prevctx = _localctx;
                        {
                            setState(307);
                            _errHandler.sync(this);
                            switch (getInterpreter().adaptivePredict(_input, 24, _ctx)) {
                                case 1: {
                                    _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(268);
                                    if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
                                    setState(269);
                                    _la = _input.LA(1);
                                    if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & 15032385536L) != 0))) {
                                        _errHandler.recoverInline(this);
                                    } else {
                                        if (_input.LA(1) == Token.EOF) matchedEOF = true;
                                        _errHandler.reportMatch(this);
                                        consume();
                                    }
                                    setState(270);
                                    noncondexpression(14);
                                }
                                    break;
                                case 2: {
                                    _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(271);
                                    if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
                                    setState(272);
                                    _la = _input.LA(1);
                                    if (!(_la == ADD || _la == SUB)) {
                                        _errHandler.recoverInline(this);
                                    } else {
                                        if (_input.LA(1) == Token.EOF) matchedEOF = true;
                                        _errHandler.reportMatch(this);
                                        consume();
                                    }
                                    setState(273);
                                    noncondexpression(13);
                                }
                                    break;
                                case 3: {
                                    _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(274);
                                    if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
                                    setState(275);
                                    _la = _input.LA(1);
                                    if (!(_la == FIND || _la == MATCH)) {
                                        _errHandler.recoverInline(this);
                                    } else {
                                        if (_input.LA(1) == Token.EOF) matchedEOF = true;
                                        _errHandler.reportMatch(this);
                                        consume();
                                    }
                                    setState(276);
                                    noncondexpression(12);
                                }
                                    break;
                                case 4: {
                                    _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(277);
                                    if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
                                    setState(278);
                                    _la = _input.LA(1);
                                    if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & 481036337152L) != 0))) {
                                        _errHandler.recoverInline(this);
                                    } else {
                                        if (_input.LA(1) == Token.EOF) matchedEOF = true;
                                        _errHandler.reportMatch(this);
                                        consume();
                                    }
                                    setState(279);
                                    noncondexpression(11);
                                }
                                    break;
                                case 5: {
                                    _localctx = new CompContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(280);
                                    if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
                                    setState(281);
                                    _la = _input.LA(1);
                                    if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & 8246337208320L) != 0))) {
                                        _errHandler.recoverInline(this);
                                    } else {
                                        if (_input.LA(1) == Token.EOF) matchedEOF = true;
                                        _errHandler.reportMatch(this);
                                        consume();
                                    }
                                    setState(282);
                                    noncondexpression(10);
                                }
                                    break;
                                case 6: {
                                    _localctx = new CompContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(283);
                                    if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
                                    setState(284);
                                    _la = _input.LA(1);
                                    if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & 131941395333120L) != 0))) {
                                        _errHandler.recoverInline(this);
                                    } else {
                                        if (_input.LA(1) == Token.EOF) matchedEOF = true;
                                        _errHandler.reportMatch(this);
                                        consume();
                                    }
                                    setState(285);
                                    noncondexpression(8);
                                }
                                    break;
                                case 7: {
                                    _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(286);
                                    if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
                                    setState(287);
                                    match(BWAND);
                                    setState(288);
                                    noncondexpression(7);
                                }
                                    break;
                                case 8: {
                                    _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(289);
                                    if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
                                    setState(290);
                                    match(XOR);
                                    setState(291);
                                    noncondexpression(6);
                                }
                                    break;
                                case 9: {
                                    _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(292);
                                    if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
                                    setState(293);
                                    match(BWOR);
                                    setState(294);
                                    noncondexpression(5);
                                }
                                    break;
                                case 10: {
                                    _localctx = new BoolContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(295);
                                    if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
                                    setState(296);
                                    match(BOOLAND);
                                    setState(297);
                                    noncondexpression(4);
                                }
                                    break;
                                case 11: {
                                    _localctx = new BoolContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(298);
                                    if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
                                    setState(299);
                                    match(BOOLOR);
                                    setState(300);
                                    noncondexpression(3);
                                }
                                    break;
                                case 12: {
                                    _localctx = new ElvisContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(301);
                                    if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
                                    setState(302);
                                    match(ELVIS);
                                    setState(303);
                                    noncondexpression(1);
                                }
                                    break;
                                case 13: {
                                    _localctx = new InstanceofContext(new NoncondexpressionContext(_parentctx, _parentState));
                                    pushNewRecursionContext(_localctx, _startState, RULE_noncondexpression);
                                    setState(304);
                                    if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
                                    setState(305);
                                    match(INSTANCEOF);
                                    setState(306);
                                    decltype();
                                }
                                    break;
                            }
                        }
                    }
                    setState(311);
                    _errHandler.sync(this);
                    _alt = getInterpreter().adaptivePredict(_input, 25, _ctx);
                }
            }
        } catch (RecognitionException re) {
            _localctx.exception = re;
            _errHandler.reportError(this, re);
            _errHandler.recover(this, re);
        } finally {
            unrollRecursionContexts(_parentctx);
        }
        return _localctx;
    }