1 \ ** ficl/softwords/ifbrack.fr
2 \ ** ANS conditional compile directives [if] [else] [then]
3 \ ** Requires ficl 2.0 or greater...
5 \ $FreeBSD: src/sys/boot/ficl/softwords/ifbrack.fr,v 1.1 1999/09/29 04:43:16 dcs Exp $
7 hidden dup >search ficl-set-current
9 : ?[if] ( c-addr u -- c-addr u flag )
11 s" [if]" compare 0= >r
12 s" [IF]" compare 0= r>
16 : ?[else] ( c-addr u -- c-addr u flag )
18 s" [else]" compare 0= >r
19 s" [ELSE]" compare 0= r>
23 : ?[then] ( c-addr u -- c-addr u flag )
25 s" [then]" compare 0= >r
26 s" [THEN]" compare 0= r>
36 parse-word dup while \ ( level addr len )
37 ?[if] if \ ( level addr len )
39 else \ ( level addr len )
40 ?[else] if \ ( level addr len )
41 2drop 1- dup if 1+ endif
43 ?[then] if 2drop 1- else 2drop endif
45 endif ?dup 0= if exit endif \ level
47 refill 0= until \ level
52 0= if postpone [else] then ; immediate
54 : [then] ( -- ) ; immediate