Условия в данной версии Форма реализованы чуть-чуть по другому, чем в стандартном Форте, поэтому необходимо предварительное знакомство с ним.
Условия реализуют следующие слова:
IF (f --> )
THEN ( --> )
ENDIF ( --> ) (Отсутствует в стандарте)
ELSE ( --> )
Следующие конструкции из этих слов позволяют управлять условиями:
if - then :
( Условие )
IF
( Слова, которые необходимо выполнить, если True )
THEN
if - then - else :
( Условие )
IF
( Слова, которые необходимо выполнить, если True )
ELSE
( Слова, которые необходимо выполнить, если False )
THEN
Так определено в стандарте. Довольно необычно, поэтому я определил слова, чтобы конструкция была более привычна:
if - then :
( Условие )
IF
( Слова, которые необходимо выполнить, если True )
ENDIF
if - then - else :
( Условие )
IF
( Слова, которые необходимо выполнить, если True )
ELSE
( Слова, которые необходимо выполнить, если False )
ENDIF
Условие - набор слов, которые должен оставлять на вершине стека флаг. Флаг управляет работой условия:
значение флага, равное 0 (для целого числа), 0,0 (для числа с плавающей точкой), "" (пустая строка) или False для Boolean - выполняется ветка False. При любом другом значении флага (при ненулевом значении) выполняется ветка True.
Примеры условия:
6 10 < (на стек положил True),
"hello" "word" = (на стек положил False).
Сравнивается обычно уже вычисленное ранее значение, которое лежит на вершине стека.
Следует отметить, что слова IF, ELSE, ENDIF не запрограммированы, а определены в модуле system.sf на основе более глубоких системных слов BRANCH, ?BRANCH, EXIT, _DO, _+LOOP, I, LEAVE, >MARK, >RESOLVE, <MARK, <RESOLVE, определенных в стандарте Форт и полностью реализованных в ScriptFort. Данные слова позволяют определять более сложные, чем if-then-else конструкции с участием переходов, например case. Таки образом, Форт представляется как язык, позволяющий определять семантические конструкции, что в других языках невозможно. За более подробной информацией обращайтесь к источникам.