Axiom Справочник языка

Глава 3 · Выражения и операции

Выражения

Правая часть присваивания, аргумент функции, выводимое значение и условие выбора ветви — всё это места, где требуется вычислить результат. Запись, которая описывает такое вычисление и даёт значение определённого типа, называется выражением.

Литералы, имена и операции

Литерал записывает значение непосредственно, например 3, "Текст" или TRUE; имя переменной читает её текущее значение. Операция получает один или два операнда — выражения, над которыми выполняется действие: в count + 2 операндами сложения служат значение переменной и число 2.

Скобки объединяют часть выражения и меняют порядок действий. В следующем примере сначала выполняется сложение, затем умножение:

DIM count AS INTEGER = 3
DIM total AS INTEGER = (count + 2) * 4
PRINT total

Результат:

20

Без скобок count + 2 * 4 сначала вычисляет произведение. Приоритет каждой операции приведён в таблице порядка вычисления.

Вызовы, элементы массивов и поля

Помимо литералов, имён и операций, в выражение входят вызовы функций, обращения к элементам массива и полям записи. Запись name(...) может означать вызов или индексирование — действие определяется объявлением имени; создание пользовательской записи также имеет собственные формы.

Тип результата и место использования

Тип выражения определяется его частями и выполняемой операцией: сравнение возвращает BOOLEAN, соединение строк — STRING. Результат должен быть совместим с типом получателя или аргумента. Числовые выражения, строковые операции и допустимые типы операндов описаны в статье «Операции и порядок вычисления».

Условие IF принимает только BOOLEAN, поэтому количество проверяется сравнением count > 0: само число не означает истину или ложь. Допустимые переходы между типами приведены в статье о преобразованиях.

Отдельная инструкция с выражением должна целиком быть вызовом процедуры, функции или метода; результат функции в такой инструкции не используется. После синтаксического разбора выражение, которое не является вызовом, отклоняется с MB2040, поэтому (Value() + 1) не становится допустимой инструкцией из-за вызова внутри скобок. Подробности приведены в статье о вызовах.

См. также

Вычисления над значениями задают операции и приоритет, а логический результат условий и выбора действий определяет, какие инструкции выполнятся.