Операторы
Арифметические операторыОператоры ARexx-a подразделяются на 4 типа: арифметические, конкатенации, сравнения и логические. Очередность исполнения операторов в выражении зависит от приоритета оператора, который выражается некоторым фиксированным для этого оператора числом. Для изменения приоритета используются круглые скобки. Операторы делятся на унарные (используют единственный операнд) и бинарные (требуют двух операндов).
Ниже дан список арифметических операторов ARexx-a.
Имя Смысл Приоритет Подтип + преобразование 8 Унарный - изменение знака 8 Унарный ** возведение в степень 7 Бинарный * умножение 6 Бинарный / деление 6 Бинарный % целочисленное деление 6 Бинарный // модуль (остаток от деления) 6 Бинарный + сложение 5 Бинарный - вычитание 5 Бинарный
Операторы конкатенации (слияния строк)Операции возведения в степень, целочисленного деления и определения модуля требуют целочисленных операндов.
Единственным явным оператором конкатенации в ARexx-e служит двойная вертикальная черта "||". Пример:
say 'Ком' || 'пьютер' ==> Компьютер
Один или несколько пробелов между литеральными строками также вызовут конкатенацию этих строк, однако между ними будет при этом вставлен единственный пробел:
say 'Здравствуйте' 'товарищи!' ==> Здравствуйте товарищи!
Поэтому пробел в ARexx-e также считается оператором конкатенации. Попытка исполнить это же утверждение без пробела между литеральными строками приведет к тому, что ARexx истолкует двойной апостроф в качестве требования включить апостроф в полученную строку:
say ' Здравствуйте ''товарищи !' ==> Здравствуйте'товарищи!
Слияние литеральных строк со значениями переменных происходит без включения в результирующую строку дополнительных пробелов:
word = 'ход' say 'napo'word ==> пароход
Операторы сравненияРезультат в данном случае будет тем же, как и при использовании оператора ||.
Сравнение происходит либо между числами, либо между строками. Сравнение может быть строгим (strict) или обычным. Строгое сравнение подразумевает полное совпадение сравниваемых объектов. При обычном сравнении не учитываются предшествующие и/или последующие пробелы при сравнении строк, а также незначащие нули при сравнении чисел. Сравнение будет числовым, если оба сравниваемых операнда являются числами, в противном случае операнды будут сравниваться, как строки. Строгие сравнения всегда являются строчными. Результатом сравнения могут являться значения ИСТИНА (TRUE), что соответствует единице, либо ЛОЖЬ (FALSE), что соответствует нулю.
Логические операторыИмя Смысл Приоритет Подтип = Равно 3 Обычный == Точное равенство 3 Строгий ~= Не равно 3 Обычный ~== Точное неравенство 3 Строгий > Больше 3 Обычный ~> Не больше 3 Обычный < Меньше 3 Обычный ~< Не меньше 3 Обычный >= Больше или равно 3 Обычный <= Меньше или равно 3 Обычный
Результатом работы любого из логических операторов является либо значение ИСТИНА, равное единице, либо значение ЛОЖЬ, равное нулю.
Имя Смысл Приоритет Подтип ~ Отрицание 8 Унарный & Конъюнкция (И) 2 Бинарный | Дизъюнкция (ИЛИ) 1 Бинарный && Исключающее ИЛИ 1 Бинарный ^ Исключающее ИЛИ 1 Бинарный