REXX
- Дата создания:
- 1979
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .rex
- Реализации и версии (свернуть все | развернуть все):
REXX — интерпретируемый язык программирования, изначально предназначенный для создания макросов и использования в качестве скриптового языка. Он был разработан в IBM для проприетарных операционных систем (z/VM, z/OS, z/VSE, OS/2, AIX).
Целью создания REXX была легкость использования, а не легкость реализации. Он снабжен обширной библиотекой мощных и удобных функций для работы со строками, автоматическоим преобразованием типов, интуитивным синтаксисом конкатенации строк, числами произвольной точности, ассоциативными массивами и небольшим набором команд с контекстно-зависимыми ключевыми словами, предназначенными для максимальной гибкости и быстрой разработки.
В настоящее время доступны как минимум две открытые реализации, Open Object REXX и Regina, и минимум одна проприетарная, uni-REXX. Для некоторых реализаций существуют не только интерпретаторы, но и компиляторы.
Элементы синтаксиса:
Комментарии, которые могут быть вложенными | /* ... */ |
---|---|
Регулярное выражение идентификатора переменной | [A-Za-z?_][A-Za-z?_0-9]* |
Присваивание значения переменной | varname = value |
Группировка выражений | ( ... ) |
Блок | do ... end |
Равенство | = |
Неравенство | <>, \= |
Тождественное равенство | == |
Тождественное неравенство | \== |
Сравнение | <, >, <=, >= |
Определение функции | funcname: procedure |
Вызов функции | y = f(x) |
Вызов функции без параметров | y = f() |
Последовательность | ; |
Если - то | if CONDITION then STATEMENT |
Если - то - иначе | if CONDITION then STATEMENT; else STATEMENT |
Бесконечный цикл | do forever ... end |
Цикл с предусловием | do while CONDITION ... end |
Цикл с постусловием | do until CONDITION ... end |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | do i = 1 to j ... end |
Цикл for - next для диапазона целых чисел с декрементом на 1 | do i = 1 to j by -1 ... end |
Логотип Rexx Language Association
Ссылки:
Примеры:
Hello, World!:
Пример для версий Regina 3.3say 'Hello, World!'
Факториал:
Пример для версий Regina 3.3В примере используется рекурсивное определение факториала.
REXX позволяет установить произвольную точность вычислений. В данном случае 14 знаков необходимо для того, чтобы все факториалы выводились как целые числа. Без первой строки факториалы, начиная с 13!, выводятся как числа с плавающей точкой.
Конкатенация строк может выполняться оператором ||
или в неявном виде при последовательном перечислении величин и констант. Если величины разделены пробелами, эти пробелы добавляются и в итоговую строку.
Слово procedure
в определении функции необязательно; оно указывает на то, что переменные подпрограммы локальны; в противном случае они будут глобальными в пределах программы.
numeric digits 14
do n = 0 to 16
say n"! = "factorial(n)
end
exit
factorial: procedure
parse arg n .
if n = 0 then
n = 1
else
n = n * factorial(n - 1)
return n
Числа Фибоначчи:
Пример для версий Regina 3.3В этом примере используется рекурсивное определение чисел Фибоначчи.
numbers = ''
do n = 1 to 16
numbers = numbers||fibonacci(n)", "
end
say numbers"..."
exit
fibonacci: procedure
parse arg n .
if n < 3 then
n = 1
else
n = fibonacci(n-1) + fibonacci(n-2)
return n
Числа Фибоначчи:
Пример для версий Regina 3.3В этом примере используется итеративное вычисление чисел Фибоначчи. Массивы реализованы как “корневые переменные”: обращение к элементам массива идет по их индексам fib.1
(или fib.first
).
fib.0 = 0
fib.1 = 1
output = fib.1||', '
do f = 2 to 16
e = f - 1; d = f - 2
fib.f = fib.e + fib.d
output = output||fib.f', '
end
say output"..."
exit
Комментарии
]]>blog comments powered by Disqus
]]>