IF   ELSE   THEN   AHEAD

IF ( fl ---)

Le mot IF est d'exécution immédiate.

IF marque le début d'une structure de contrôle de type IF..THEN ou IF..ELSE..THEN.

Lors de l'exécution, la partie de définition située entre IF et THEN ou entre IF et ELSE est exécutée si le flag booléen situé au sommet de la pile de données est vrai (f<>0).

Dans le cas contraire, si le flag booléen est faux (f=0), c'est la partie de définition située entre ELSE et THEN qui sera exécutée. S'il n'y a pas de ELSE, l'exécution se poursuit après THEN.

Example:

: BEAU? ( fl ---)
    IF
        ." Beau temps "
    ELSE
        ." Temps couvert "
    THEN ;
1 BEAU?    \ affiche Beau temps
0 BEAU?    \ affiche Temps couvert

ELSE ( ---)

Word of immediate execution and used in compilation only. Mark a alternative in a control structure of the type:
  (condition) IF ... ELSE ... THEN ...

At runtime, if the condition on the stack before IF is false, there is a break in sequence with a jump following ELSE, then resumed in sequence after THEN.

Example:

: TEST ( ---)
    CR ." Appuyez sur une touche " KEY
    DUP 65 122 BETWEEN
    IF
        CR 3 SPACES ." c'est une lettre "
    ELSE
        DUP 48 57 BETWEEN
        IF
            CR 3 SPACES ." is a digit "
        ELSE
            CR 3 SPACES ." is a special character "
        THEN
    THEN
    DROP ;

THEN

Immediate execution word used in compilation only. Mark the end a control structure of type IF..THEN or IF..ELSE..THEN .

AHEAD ( comp: --- orig )

: pt1 
    AHEAD 1111 2222 THEN 
    3333 
    ;
pt1     \ push 3333 on stack