config root man

Current Path : /sys/amd64/compile/hs32/modules/usr/src/sys/modules/mwl/@/boot/ficl/softwords/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //sys/amd64/compile/hs32/modules/usr/src/sys/modules/mwl/@/boot/ficl/softwords/ifbrack.fr

\ ** ficl/softwords/ifbrack.fr
\ ** ANS conditional compile directives [if] [else] [then]
\ ** Requires ficl 2.0 or greater...
\
\ $FreeBSD: release/9.1.0/sys/boot/ficl/softwords/ifbrack.fr 94290 2002-04-09 17:45:28Z dcs $

hide

: ?[if]   ( c-addr u -- c-addr u flag )
    2dup s" [if]" compare-insensitive 0=
;

: ?[else]   ( c-addr u -- c-addr u flag )
    2dup s" [else]" compare-insensitive 0=
;

: ?[then]   ( c-addr u -- c-addr u flag )
    2dup s" [then]" compare-insensitive 0= >r
    2dup s" [endif]" compare-insensitive 0= r> 
    or
;

set-current

: [else]  ( -- )
    1                                     \ ( level )
    begin
      begin
        parse-word dup  while             \ ( level addr len )
        ?[if] if                          \ ( level addr len )
            2drop 1+                      \ ( level )
        else                              \ ( level addr len )
            ?[else] if                    \ ( level addr len )
                 2drop 1- dup if 1+ endif
            else
                ?[then] if 2drop 1- else 2drop endif 
            endif
        endif ?dup 0=  if exit endif      \ level
      repeat  2drop                       \ level
    refill 0= until                       \ level
    drop
;  immediate

: [if]  ( flag -- )
0= if postpone [else] then ;  immediate

: [then]  ( -- )  ;  immediate
: [endif]  ( -- )  ;  immediate

previous

Man Man