Выражения |
Содержание Previous Next |
Выражение - набор констант, переменных, функций, связанных различными операциями. При записи выражений возможно использование скобок.
Допустимые операции при записи выражений (в порядке возрастания приоритета; операции с одинаковым приоритетом находятся на одной строке):
& OR AND OBJ, NO =, <, >, !, <>, <=, >=, =<, => +, - MOD *, / +, - (унарные)
Здесь (см. раздел "Обозначения"):
[$выражение 1] & [$выражение 2] - операция объединения строковых выражений. [#выражение 1] OR [#выражение 2] - операция "или". Если хотя бы одно из рядом стоящих выражений верно, то верно и всё выражение. [#выражение 1] AND [#выражение 2] - операция "и". Если оба рядом стоящие выражения верны, то верно и всё выражение. [#выражение 1] MOD [#выражение 2] - операция вычисления остатка от деления. OBJ [$выражение] - верно, если в рюкзаке есть предмет [$выражение]. NO [#выражение] - отрицание. Верно, если [#выражение] ложно и наоборот (аналогично "NOT" в Basic). [выражение 1] = [выражение 2] - верно, если значения рядом стоящих выражений равны. [выражение 1] < [выражение 2] - верно, если значение выражения слева меньше значения выражения справа. [выражение 1] > [выражение 2] - верно, если значение выражения слева больше значения выражения справа. [выражение 1] ! [выражение 2], [выражение 1] <> [выражение 2] - верно, если значения рядом стоящих выражений не равны. [выражение 1] <= [выражение 2], [выражение 1] =< [выражение 2] - верно, если значение выражения слева меньше или равно значению выражения справа. [выражение 1] >= [выражение 2], [выражение 1] => [выражение 2] - верно, если значение выражения слева больше или равно значению выражения справа. + , - , *, / - сложение, вычитание, умножение, деление соответственно. Операции записываются как [#выражение 1] [операция] [#выражение 2]. + [#выражение], - [#выражение] - унарные плюс / минус. Находятся перед числовым выражением и меняют знак у значения этого выражения (в случае "-").
В QSP одна переменная / элемент массива может содержать два значения: текстовое и числовое. При использовании текстового значения перед названием переменной ставится символ "$" ("$Player_Name"). Для использования числового значения переменной пишется только её название. Например:
a=5 & $a='яблоко' $a
Числовая константа записывается числом (например, 4535), а текстовая берётся с двух сторон в кавычки. Кавычками могут быть либо апострофы ('), либо прямые кавычки ("). Две подряд идущие кавычки считаются кавычкой, включённой в текстовую константу. Т.е. после выполнения строк
*PL 'Byte Soft''s QSP' *PL "Byte Soft's ""QSP"""
вы увидите строки
Byte Soft's QSP Byte Soft's "QSP"
Существует возможность использования преформатированных текстовых констант. Для таких констант сохраняются переносы строк и отступы. Примеры:
'Данный текст будет расположен на нескольких строках' $a='И этот текст также' a=2 & act 'Многострочное название':gt 'next'
В зависимости от результата вычисления выражения могут быть либо строковыми, либо числовыми. Примеры числовых выражений:
3+4*3*4 (val('25')*4)/(2*5) был_в_комнате = 0 $был_в_комнате = 'нет' 1 AND 1 OR 0 A=B AND (C<>D OR 2=E+3) $str1 = $str2 AND $str2 <> $str3
Примеры строковых выражений:
'строка' "проверка" "преформатированная текстовая константа" mid("строка",1,2) $VAR $VAR + ' строка '
Складывать с помощью "+" можно не только числа (значения числовых выражений), но и объединять текстовые константы (значения строковых выражений). Также для объединения строковых значений можно использовать символ "&", при этом такое объединение должно быть заключено в скобки. Например,
*PL 'The '+'door '+'is closed.'
и
*PL ('The '&'door '&'is closed.')
выведут одно и то же: "The door is closed.".
Возможна ЛЮБАЯ комбинация констант, переменных, функций. При вычислении значений выражений движок (по возможности) конвертирует типы данных автоматически.
В строковые константы, в базовые описания локаций и названия базовых действий существует возможность вставлять значения выражений. Такие "подвыражения" должны находиться между двойных угловых скобок: "<<" и ">>", до и после которых может идти любой текст, включая подобные "подвыражения". Например, вместо оператора
pl 'i='+str(i)
можно написать
pl 'i=<<i>>'
Ещё примеры:
число_гоблинов=5 'Тебя окружили <<число_гоблинов>> гоблинов!' pl 'Вас зовут <<$PlayerName>>, вы находитесь в <<$curloc>>.'
Примеры использования вложенных "подвыражений":
pl val('<<val("<<i>>")>><<j>>') pl val('<<str(val("<<i>>"))>>')
Так как "подвыражения" вычисляются внутри строковых констант, то для вычисления вложенного "подвыражения" необходимо присутствие вложенной строковой константы.
|