afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ** ficl/softwords/ficllocal.fr
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ ** stack comment style local syntax...
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ {{ a b c -- d e }}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ variables before the "--" are initialized in reverse order
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ from the stack. Those after the "--" are zero initialized
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ Uses locals...
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ locstate: 0 = looking for -- or }}
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome\ 1 = found --
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomehide
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome0 constant zero
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: ?-- s" --" compare 0= ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: ?}} s" }}" compare 0= ;
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomeset-current
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome: {{
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 dup locals| nLocs locstate |
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome begin
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome parse-word
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ?dup 0= abort" Error: out of text without seeing }}"
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 2dup 2dup ?-- -rot ?}} or 0=
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome while
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome nLocs 1+ to nLocs
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome repeat
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome ?-- if 1 to locstate endif
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome nLocs 0 do
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome (local)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome loop
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome locstate 1 = if
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome begin
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome parse-word
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 2dup ?}} 0=
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome while
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome postpone zero (local)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome repeat
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 2drop
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome endif
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome 0 0 (local)
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome; immediate compile-only
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soome
afc2ba1deb75b323afde536f2dd18bcafdaa308dToomas Soomeprevious