Is "local function void xxx" a valid function declaration?

If I see IEEE 1800-2012 standard, it says the function declaration should be:
function_declaration ::= function [ lifetime ] function_body_declaration

In such a case can we write local function void/data_type xxx?

I found this in uvm_report_catcher.svh (uvm-1.2):
local function int process_report_catcher();

I see that the intention is that process_report_catcher() should not be accessible to classes extended from uvm_report_catcher. But is it really not possible to access a local function from extended class via super handle?

Yes, the LRM has

class_method ::=
{ method_qualifier } task_declaration
| { method_qualifier } function_declaration

and one choice of method_qualifier is local. You may only access a local class property from within the class it was declared in, and not from an extension of that class (which protected would allow).