15.6.2.2532
[IF]
bracket-if
TOOLS EXT
Compilation:
Perform the execution semantics given below.

Execution:
( flag | flag "<spaces>name ..." -- )

If flag is true, do nothing. Otherwise, skipping leading spaces, parse and discard space-delimited words from the parse area, including nested occurrences of [IF] ... [THEN] and [IF] ... [ELSE] ... [THEN], until either the word [ELSE] or the word [THEN] has been parsed and discarded. If the parse area becomes exhausted, it is refilled as with REFILL. [IF] is an immediate word.

An ambiguous condition exists if [IF] is POSTPONEd, or if the end of the input buffer is reached and cannot be refilled before the terminating [ELSE] or [THEN] is parsed.

Rationale:
Typical use: ... flag [IF] ... [ELSE] ... [THEN] ...
Implementation:
: [IF] ( flag -- )
   0= IF POSTPONE [ELSE] THEN
; IMMEDIATE