8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / common / ficl / softcore / ficllocal.fr
blob74ae40f47540e76b9d049fdf88ca9b9344981157
1 \ ** ficl/softwords/ficllocal.fr
2 \ ** stack comment style local syntax...
3 \ {{ a b c -- d e }}
4 \ variables before the "--" are initialized in reverse order
5 \ from the stack. Those after the "--" are zero initialized
6 \ Uses locals...
7 \ locstate: 0 = looking for -- or }}
8 \           1 = found --
9 hide
10 0 constant zero
12 : ?--   s" --" compare 0= ;
13 : ?}}   s" }}" compare 0= ;
15 set-current
17 : {{
18     0 dup  locals| nLocs locstate |
19     begin
20         parse-word
21         ?dup 0= abort" Error: out of text without seeing }}"
22         2dup 2dup  ?-- -rot ?}} or 0=
23     while
24         nLocs 1+ to nLocs
25     repeat
27     ?-- if 1 to locstate endif
29     nLocs 0 do
30         (local)
31     loop
33     locstate 1 = if
34         begin
35             parse-word
36             2dup ?}} 0=
37         while
38             postpone zero  (local)
39         repeat
40         2drop
41     endif
43     0 0 (local)
44 ; immediate compile-only
46 previous