The Portable Forth Environment does implement locals in such an extended form as that additional variable names can be declared anywhere in the compiled word.
(LOCAL) ( strptr strcnt -- )
LOCALS| name1 name2 ... nameN | ( xN ... x2 x1 -- )
LVALUE name ( value -- )
(LOCAL) ( strptr strcnt -- ) LOCALS| LVALUE LOCALS|reference: p4_paren_local in ../src/locals.c:0157, export CS (LOCAL)
LOCALS| name1 name2 ... nameN | ( xN ... x2 x1 -- ) VALUE TO SEE <A> <B> <N> LVALUEreference: p4_locals_bar in ../src/locals.c:0177, export CS LOCALS|
LVALUE name ( value -- ) VALUE (LOCAL) LVALUE LOCALS| LOCALS| a b c | LVALUE a LVALUE b LVALUE c LOCALS| VALUEVARreference: p4_local_value in ../src/locals.c:0205, export CS LVALUE