1*afc2ba1dSToomas Soome\ ** ficl/softwords/ifbrack.fr 2*afc2ba1dSToomas Soome\ ** ANS conditional compile directives [if] [else] [then] 3*afc2ba1dSToomas Soome\ ** Requires ficl 2.0 or greater... 4*afc2ba1dSToomas Soome 5*afc2ba1dSToomas Soomehide 6*afc2ba1dSToomas Soome 7*afc2ba1dSToomas Soome: ?[if] ( c-addr u -- c-addr u flag ) 8*afc2ba1dSToomas Soome 2dup s" [if]" compare-insensitive 0= 9*afc2ba1dSToomas Soome; 10*afc2ba1dSToomas Soome 11*afc2ba1dSToomas Soome: ?[else] ( c-addr u -- c-addr u flag ) 12*afc2ba1dSToomas Soome 2dup s" [else]" compare-insensitive 0= 13*afc2ba1dSToomas Soome; 14*afc2ba1dSToomas Soome 15*afc2ba1dSToomas Soome: ?[then] ( c-addr u -- c-addr u flag ) 16*afc2ba1dSToomas Soome 2dup s" [then]" compare-insensitive 0= >r 17*afc2ba1dSToomas Soome 2dup s" [endif]" compare-insensitive 0= r> 18*afc2ba1dSToomas Soome or 19*afc2ba1dSToomas Soome; 20*afc2ba1dSToomas Soome 21*afc2ba1dSToomas Soomeset-current 22*afc2ba1dSToomas Soome 23*afc2ba1dSToomas Soome: [else] ( -- ) 24*afc2ba1dSToomas Soome 1 \ ( level ) 25*afc2ba1dSToomas Soome begin 26*afc2ba1dSToomas Soome begin 27*afc2ba1dSToomas Soome parse-word dup while \ ( level addr len ) 28*afc2ba1dSToomas Soome ?[if] if \ ( level addr len ) 29*afc2ba1dSToomas Soome 2drop 1+ \ ( level ) 30*afc2ba1dSToomas Soome else \ ( level addr len ) 31*afc2ba1dSToomas Soome ?[else] if \ ( level addr len ) 32*afc2ba1dSToomas Soome 2drop 1- dup if 1+ endif 33*afc2ba1dSToomas Soome else 34*afc2ba1dSToomas Soome ?[then] if 2drop 1- else 2drop endif 35*afc2ba1dSToomas Soome endif 36*afc2ba1dSToomas Soome endif ?dup 0= if exit endif \ level 37*afc2ba1dSToomas Soome repeat 2drop \ level 38*afc2ba1dSToomas Soome refill 0= until \ level 39*afc2ba1dSToomas Soome drop 40*afc2ba1dSToomas Soome; immediate 41*afc2ba1dSToomas Soome 42*afc2ba1dSToomas Soome: [if] ( flag -- ) 43*afc2ba1dSToomas Soome0= if postpone [else] then ; immediate 44*afc2ba1dSToomas Soome 45*afc2ba1dSToomas Soome: [then] ( -- ) ; immediate 46*afc2ba1dSToomas Soome: [endif] ( -- ) ; immediate 47*afc2ba1dSToomas Soome 48*afc2ba1dSToomas Soomeprevious 49