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>
LVALUE
reference: 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|
VALUE
VAR
reference: p4_local_value in ../src/locals.c:0205, export CS LVALUE