Выражения

Содержание  Previous  Next

Выражение - набор констант, переменных, функций, связанных различными операциями. При записи выражений возможно использование скобок.

 

Допустимые операции при записи выражений (в порядке возрастания приоритета; операции с одинаковым приоритетом находятся на одной строке):

 

&

OR

AND

OBJ, NO

=, <, >, !, <>, <=, >=, =<, =>

+, -

MOD

*, /

+, - (унарные)

 

PS:

Выражения в скобках имеют наивысший приоритет.

 

Здесь (см. раздел "Обозначения"):

 

[$выражение 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].

+ [#выражение], - [#выражение] - унарные плюс / минус. Находятся перед числовым выражением и меняют знак у значения этого выражения (в случае "-").

 

PS:

Верным считается числовое выражение, значение которого отлично от 0. При значении 0 выражение считается ложным. Для значения "верно" настоятельно рекомендуется использовать -1.

 

В 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"

 

PS:

QSP поддерживает только целые числа. Числа с плавающей запятой (дробные) не поддерживаются.

 

Существует возможность использования преформатированных текстовых констант. Для таких констант сохраняются переносы строк и отступы. Примеры:

 

 'Данный текст

         будет расположен на

 нескольких строках'

 $a='И этот

 текст

         также'

 a=2 & act 'Многострочное

 название':gt 'next'

 

PS:

Строки, содержащие преформатированную текстовую константу, считаются ОДНОЙ строкой (сообщения об ошибках также выводятся с учётом того, что это одна строка).

 

В зависимости от результата вычисления выражения могут быть либо строковыми, либо числовыми.

Примеры числовых выражений:

 

 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>>"))>>')

 

Так как "подвыражения" вычисляются внутри строковых констант, то для вычисления вложенного "подвыражения" необходимо присутствие вложенной строковой константы.

 

PS:

Смотрите раздел "Использование массивов" этой части документации, чтобы получить дополнительную информацию о возможных выражениях.