1 \ ** ficl/softwords/ifbrack.fr
2 \ ** ANS conditional compile directives [if] [else] [then]
3 \ ** Requires ficl 2.0 or greater...
9 : ?[if] ( c-addr u -- c-addr u flag )
10 2dup s" [if]" compare-insensitive 0=
13 : ?[else] ( c-addr u -- c-addr u flag )
14 2dup s" [else]" compare-insensitive 0=
17 : ?[then] ( c-addr u -- c-addr u flag )
18 2dup s" [then]" compare-insensitive 0= >r
19 2dup s" [endif]" compare-insensitive 0= r>
29 parse-word dup while \ ( level addr len )
30 ?[if] if \ ( level addr len )
32 else \ ( level addr len )
33 ?[else] if \ ( level addr len )
34 2drop 1- dup if 1+ endif
36 ?[then] if 2drop 1- else 2drop endif
38 endif ?dup 0= if exit endif \ level
40 refill 0= until \ level
45 0= if postpone [else] then ; immediate
47 : [then] ( -- ) ; immediate
48 : [endif] ( -- ) ; immediate