p4_local_args_p4_local_enter_execution_p4_local_execution_p4_local_value_p4_locals_bar_p4_locals_bar_execution_p4_locals_exit_execution_p4_paren_local_p4_to_local_execution_p4_compile_localp4_find_localp4_local_args_ reference: ../src/locals.c:0061
p4_local_enter_execution_ : Did change the locals-implementation completely. Now the return stack looks like this after locals_bar_execution:
rp --> 'rp' -- contains real return used by locals_exit_execution
lp --> 'lp' -- contains locals-pointer of surrounding scope
arg1
..
argN
localN+1
..
localM
'rp' --> -- real return address
you can declare now a local non-arg at any time.
All local-args must be declared before any local-non-arg.
Not that the code after locals_bar_execution does not contain
_two_ numbers N and M. Classic use of LOCALS| will put them
at the very same value.
reference: ../src/locals.c:0051
p4_local_execution_ reference: ../src/locals.c:0082
p4_local_value_ : LVALUE name ( value -- ) VALUE (LOCAL) LVALUE LOCALS| LOCALS| a b c | LVALUE a LVALUE b LVALUE c LOCALS| VALUEVARreference: ../src/locals.c:0205
p4_locals_bar_ : LOCALS| name1 name2 ... nameN | ( xN ... x2 x1 -- ) VALUE TO SEE <A> <B> <N> LVALUEreference: ../src/locals.c:0177
p4_locals_bar_execution_ reference: ../src/locals.c:0068
p4_locals_exit_execution_ reference: ../src/locals.c:0075
p4_paren_local_ : ( strptr strcnt -- ) LOCALS| LVALUE LOCALS|reference: ../src/locals.c:0157
p4_to_local_execution_ reference: ../src/locals.c:0087
p4_compile_localreference: ../src/locals.c:0110
p4_find_localreference: ../src/locals.c:0095