def statement(self):
    localctx = decafJavierParser.StatementContext(self, self._ctx, self.state)
    self.enterRule(localctx, 18, self.RULE_statement)
    self._la = 0
    try:
        self.state = 189
        self._errHandler.sync(self)
        la_ = self._interp.adaptivePredict(self._input, 14, self._ctx)
        if (la_ == 1):
            self.enterOuterAlt(localctx, 1)
            self.state = 142
            self.location()
            self.state = 143
            self.assign_op()
            self.state = 144
            self.expr(0)
            pass
        elif (la_ == 2):
            self.enterOuterAlt(localctx, 2)
            self.state = 146
            self.location()
            self.state = 147
            self.assign_op()
            self.state = 148
            self.expr(0)
            self.state = 149
            self.match(decafJavierParser.SEMICOLON)
            pass
        elif (la_ == 3):
            self.enterOuterAlt(localctx, 3)
            self.state = 151
            self.method_call()
            pass
        elif (la_ == 4):
            self.enterOuterAlt(localctx, 4)
            self.state = 152
            self.match(decafJavierParser.IF)
            self.state = 153
            self.match(decafJavierParser.LROUND)
            self.state = 154
            self.expr(0)
            self.state = 155
            self.match(decafJavierParser.RROUND)
            self.state = 156
            self.block()
            self.state = 159
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (_la == decafJavierParser.ELSE):
                self.state = 157
                self.match(decafJavierParser.ELSE)
                self.state = 158
                self.block()
            pass
        elif (la_ == 5):
            self.enterOuterAlt(localctx, 5)
            self.state = 161
            self.var_id()
            self.state = 162
            self.match(decafJavierParser.EQUAL_OP)
            self.state = 163
            self.expr(0)
            self.state = 164
            self.match(decafJavierParser.SEMICOLON)
            pass
        elif (la_ == 6):
            self.enterOuterAlt(localctx, 6)
            self.state = 166
            self.match(decafJavierParser.RETURN)
            self.state = 167
            self.expr(0)
            self.state = 168
            self.match(decafJavierParser.SEMICOLON)
            pass
        elif (la_ == 7):
            self.enterOuterAlt(localctx, 7)
            self.state = 170
            self.match(decafJavierParser.FOR)
            self.state = 171
            self.var_id()
            self.state = 174
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (_la == decafJavierParser.EQUAL_OP):
                self.state = 172
                self.match(decafJavierParser.EQUAL_OP)
                self.state = 173
                self.int_literal()
            self.state = 176
            self.match(decafJavierParser.COMMA)
            self.state = 183
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if (token in [decafJavierParser.ID]):
                self.state = 177
                self.var_id()
                self.state = 180
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (_la == decafJavierParser.EQUAL_OP):
                    self.state = 178
                    self.match(decafJavierParser.EQUAL_OP)
                    self.state = 179
                    self.int_literal()
                pass
            elif (token in [decafJavierParser.DECIMAL_LITERAL, decafJavierParser.HEX_LITERAL]):
                self.state = 182
                self.int_literal()
                pass
            else:
                raise NoViableAltException(self)
            self.state = 185
            self.block()
            pass
        elif (la_ == 8):
            self.enterOuterAlt(localctx, 8)
            self.state = 187
            self.match(decafJavierParser.BREAK)
            self.state = 188
            self.match(decafJavierParser.SEMICOLON)
            pass
    except RecognitionException as re:
        localctx.exception = re
        self._errHandler.reportError(self, re)
        self._errHandler.recover(self, re)
    finally:
        self.exitRule()
    return localctx
def statement(self):
    localctx = decafJavierParser.StatementContext(self, self._ctx, self.state)
    self.enterRule(localctx, 18, self.RULE_statement)
    self._la = 0
    try:
        self.state = 189
        self._errHandler.sync(self)
        la_ = self._interp.adaptivePredict(self._input, 14, self._ctx)
        if (la_ == 1):
            self.enterOuterAlt(localctx, 1)
            self.state = 142
            self.location()
            self.state = 143
            self.assign_op()
            self.state = 144
            self.expr(0)
            pass
        elif (la_ == 2):
            self.enterOuterAlt(localctx, 2)
            self.state = 146
            self.location()
            self.state = 147
            self.assign_op()
            self.state = 148
            self.expr(0)
            self.state = 149
            self.match(decafJavierParser.SEMICOLON)
            pass
        elif (la_ == 3):
            self.enterOuterAlt(localctx, 3)
            self.state = 151
            self.method_call()
            pass
        elif (la_ == 4):
            self.enterOuterAlt(localctx, 4)
            self.state = 152
            self.match(decafJavierParser.IF)
            self.state = 153
            self.match(decafJavierParser.LROUND)
            self.state = 154
            self.expr(0)
            self.state = 155
            self.match(decafJavierParser.RROUND)
            self.state = 156
            self.block()
            self.state = 159
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (_la == decafJavierParser.ELSE):
                self.state = 157
                self.match(decafJavierParser.ELSE)
                self.state = 158
                self.block()
            pass
        elif (la_ == 5):
            self.enterOuterAlt(localctx, 5)
            self.state = 161
            self.var_id()
            self.state = 162
            self.match(decafJavierParser.EQUAL_OP)
            self.state = 163
            self.expr(0)
            self.state = 164
            self.match(decafJavierParser.SEMICOLON)
            pass
        elif (la_ == 6):
            self.enterOuterAlt(localctx, 6)
            self.state = 166
            self.match(decafJavierParser.RETURN)
            self.state = 167
            self.expr(0)
            self.state = 168
            self.match(decafJavierParser.SEMICOLON)
            pass
        elif (la_ == 7):
            self.enterOuterAlt(localctx, 7)
            self.state = 170
            self.match(decafJavierParser.FOR)
            self.state = 171
            self.var_id()
            self.state = 174
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (_la == decafJavierParser.EQUAL_OP):
                self.state = 172
                self.match(decafJavierParser.EQUAL_OP)
                self.state = 173
                self.int_literal()
            self.state = 176
            self.match(decafJavierParser.COMMA)
            self.state = 183
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if (token in [decafJavierParser.ID]):
                self.state = 177
                self.var_id()
                self.state = 180
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (_la == decafJavierParser.EQUAL_OP):
                    self.state = 178
                    self.match(decafJavierParser.EQUAL_OP)
                    self.state = 179
                    self.int_literal()
                pass
            elif (token in [decafJavierParser.DECIMAL_LITERAL, decafJavierParser.HEX_LITERAL]):
                self.state = 182
                self.int_literal()
                pass
            else:
                raise NoViableAltException(self)
            self.state = 185
            self.block()
            pass
        elif (la_ == 8):
            self.enterOuterAlt(localctx, 8)
            self.state = 187
            self.match(decafJavierParser.BREAK)
            self.state = 188
            self.match(decafJavierParser.SEMICOLON)
            pass
    except RecognitionException as re:
        localctx.exception = re
        self._errHandler.reportError(self, re)
        self._errHandler.recover(self, re)
    finally:
        self.exitRule()
    return localctx