Условия
Оператор
IF
объединяет одно или несколько условий и создает новое ветвление в коде.00D6: if <N>
<условие 1>
<условие 2>
...
<условие N+1>
004D: jump_if_false <метка>
N
означает общее кол-во условий внутри выражения IF
и логическую связь между ними:N | Кол-во условий | Логический оператор |
0 | 1 | нет (выражение истинно, если условие в нем истинно) |
1..7 | 2..8 | И (все условия должны быть истинны, чтобы все выражение было истинно) |
21..27 | 2..8 | ИЛИ (хотя бы одно условие должен быть истинно, чтобы все выражение было истинно) |
В одном выражении
IF
может объединяться до 8 условий. Sanny Builder позволяет не указывать
0
после IF. IF 0
и IF
эквивалентны.<метка>
- имя метки, на которую переходит скрипт, если выражение IF
ложно.
<условие>
- любой условный опкод, который возвращает true
или false
Если опция
Проверка условий
включена, после IF
можно писать ключевые слова AND
или OR
. Компилятор будет рассчитывать правильное значение самостоятельно:if and
$var > 0
$var2 == 10.0
jf @anywhere
В данном примере компилятор запишет вместо
and
число 1
.IF AND
- условия, объединенные логическим оператором И
(замена if 1..7
)
IF OR
- условия, объединенные логическим оператором ИЛИ
(замена if 21..27
)Для облегчения работы с условными выражениями существуют высокоуровневые конструкции, для которых не нужны дополнительные метки в коде:
IF <N>/AND/OR
<условие 1>
<условие 2>
...
<условие N+1>
THEN
<команды при истинности условия>
END
IF <N>/AND/OR
<условие 1>
<условие 2>
...
<условие N+1>
THEN
<команды при истинности условия>
ELSE
<команды при ложности условия>
END
Условное выражение создается по общим правилам. После ключевого слова
THEN
указываются опкоды, которые должны выполняться, если условие истинно. После ELSE
указываются опкоды, которые выполняются, если условие ложно. Выражение
IF
завершается ключевым словом END
.if $var == 5
then
Inc($var)
else
Dec($var)
end
Допускаются конструкции IF, вложенные друг в друга.
- a
==
b - a равно b - a
>=
b - a больше либо равно b - a
>
b - a больше b - a
<
b - a меньше b - a
<=
b - a меньше либо равно b - a
<>
b - a не равно b
a
и b
называются операндами. Компилятор может самостоятельно определить нужный опкод, если один из операндов является числовой константой, строковым литералом или тип обеих переменных известен.Last modified 3yr ago