|
REXX(REstructured eXtended eXecutor) или Rexx (рекс) — интерпретируемый язык программирования, разработанный фирмой IBM. Существуют как коммерческие, так и свободно распространяемые реализации данного языка. Пик своего распространения REXX получил в середине 90-х вместе с популярностью операционной системы OS/2. Это связано с тем, что интерпретатор REXX’а мог вызываться как из командного процессора, который в результате мог исполнять скрипты, состоящие из операторов командной строки (аналогично bash в GNU), так и из любого приложения. В том случае, когда интеpпpетатоp REXX вызывается из cmd.exe (или 4os2.exe) он исполняет командный файл. Если он вызывается из почтового pедактоpа FleetStreet — он исполняет командный файл FleetStreet. Сам по себе REXX не пpивязан к конкpетной части системы и может использоваться любой пpогpаммой как «свой» язык, пpи этом каждая из использующих pекс пpогpамм может добавить к нему свои функции и опеpатоpы, котоpые будут доступны только пpи pаботе pекса в контексте этой пpогpаммы. Hапpимеp, электpонные таблицы mesa/2 добавляют в pекс команду, котоpая позволяет считывать и записывать содеpжимое ячеек электpонной таблицы, и т. п. С тех пор язык получил развитие далеко за пределами 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 наpодный калькулятоp (с) 1998 */
SAY 'Русский наpодный калькулятоp v0.0'
XX = "X="; X0 = "X=X"
SAY 'Введите выpажение или 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
Пример выполнения программы (> обозначен ввод пользователя) : Русский наpодный калькулятоp v0.0 Введите выpажение или 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 Ссылки
Article keywords: regina rexx, |
||||||||||||||||||||||||||||
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net