REXX
Материал из Википедии — свободной энциклопедии
REXX (REstructured eXtended eXecutor) или Rexx (рекс) — интерпретируемый язык программирования, разработанный фирмой IBM. Существуют как коммерческие, так и свободно распространяемые реализации данного языка.
Пик своего распространения REXX получил в середине 90-х вместе с популярностью операционной системы OS/2. Это связано с тем, что интерпретатор REXX’а мог вызываться как из командного процессора, который в результате мог исполнять скрипты, состоящие из операторов командной строки (аналогично bash в GNU), так и из любого приложения.
В том случае, когда интерпретатор REXX вызывается из cmd.exe (или 4os2.exe) он исполняет командный файл. Если он вызывается из почтового редактора FleetStreet — он исполняет командный файл FleetStreet. Сам по себе REXX не привязан к конкретной части системы и может использоваться любой программой как «свой» язык, при этом каждая из использующих рекс программ может добавить к нему свои функции и операторы, которые будут доступны только при работе рекса в контексте этой программы. Например, электронные таблицы mesa/2 добавляют в рекс команду, которая позволяет считывать и записывать содержимое ячеек электронной таблицы, и т. п.
С тех пор язык получил развитие далеко за пределами OS/2, но традиционно его свойствами остались удобный доступ к командам операционой системы, мощные операции со строками, упрощённая обработка ошибок и встроенный дебаггер.
Изначально REXX не был обьектно‐ориентированным, хотя в настоящее время существуют и такие версии языка (например, Open Object REXX). Синтаксически язык слегка напоминает упрощённый (для человеческого понимания) ПЛ/1. Переменные в REXX не типизированы и не требуют декларации.
Из особенностей языка следует отметить мощный и удобный оператор PARSE для разбора строк (похожий на «=~ m/» в Perl, но более простой). Его синтаксис
parse [upper] исходник шаблон
позволяет писать легко читаемые конструкции вроде
myVar = "Вася Иванов" parse var MyVar firstName lastName say "Имя:" firstName say "Фамилия:" lastName
или, к примеру, если имя написано через запятую, можно указать это в шаблоне
myVar = "Иванов, Вася" parse var MyVar LastName "," FirstName say "Имя:" firstName say "Фамилия:" lastName
а также можно пользоваться прямой индексацией столбцов:
myVar = "(202) 123—1234" parse var MyVar 2 AreaCode 5 7 SubNumber say "Код города:" AreaCode say "Телефон:" SubNumber
выведет следующие строки на экран:
Код города: 202 Телефон: 123—1234
[править] Пример программы: «Русский народный калькулятор»
Пример программы на рексе — калькулятор, выполняющий шесть операций (+,-,*,/,//,%), понимающий операции в скобках и произвольное количество переменных:
/* calc.cmd народный калькулятор (с) 1998 */
SAY 'Русский народный калькулятор v0.0'
XX = "X="; X0 = "X=X"
SAY 'Введите выражение или Q для завершения'
DO FOREVER
PULL v
IF v = 'Q' THEN LEAVE
S=LEFT(v,1)
IF(DATATYPE(S,'A'))
THEN
DO
IF(POS('=',v) = 0)
THEN
DO
INTERPRET XX v
SAY 'X=' X
END
ELSE
INTERPRET v
END
ELSE
DO
INTERPRET X0 v
SAY 'X=' X
END
END
EXIT
Пример выполнения программы (> обозначен ввод пользователя) :
Русский народный калькулятор v0.0 Введите выражение или Q для завершения >300+(12.5*2+5) X= 330.0 >Y=X*2 >Y+2 X= 662.0 >+33 X= 695.0 >+123 X= 818.0 >/10 X= 81.8 >//2 X= 1.8 >+1024 X= 1025.8 >%4 X= 256
[править] См. также
[править] Ссылки
- Страничка языка REXX на IBM
- Коммерческий интерперетатор REXX для Windows, OS/2 и DOS
- Свободно распространяемый кросплатформенный интерпретатор Regina Rexx
- Open Object Rexx (ooRexx) — проект с открытым кодом, управляемый Rexx Language Association (RexxLA)
- Обзор Open Object Rexx (рус.)
- История появления ARexx для AmigaOS
- Краткий обзор ARexx
|
|
|
|---|---|
| Используемые в разработке |
Ада • АПЛ • Ассемблер • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • ColdFusion • D • dBase • Delphi • Erlang • Eiffel • Forth • Gambas • Фортран • Groovy • Haskell • Java • JavaScript • Icon • Limbo • Лисп • Lua • MATLAB • Object Pascal • Objective-C • Оберон • PowerBASIC • Parser • Паскаль • Perl • PHP • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Tcl • Scheme • Smalltalk • SQL • Vala • Visual Basic • VB.NET |
| Академические | |
| IEC61131-3 |
Instruction List • ST • FBD • Ladder Diagram • SFC |
| Прочие | |
| Эзотерические | |

