docs: def control(self):
          """
          control    : 'if' ctrl_exp block ('elif' ctrl_exp block)* ('else' block)
          """
          self.eat(TokenTypes.IF)
          ctrl = self.expression()
          block = self.block()
          ifs = [If(ctrl, block)]
          else_block = Block()
          while self.cur_token.type == TokenTypes.ELIF:
              self.eat(TokenTypes.ELIF)
              ctrl = self.expression()
              block = self.block()
              ifs.append(If(ctrl, block))
          if self.cur_token.type == TokenTypes.ELSE:
              self.eat(TokenTypes.ELSE)
              else_block = self.block()
          return ControlBlock(ifs, else_block)