REXX

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

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

Ссылки


Источник — «http://ru.wikipedia.org/wiki/REXX»

Article keywords: regina rexx,

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net