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

См. также

Ссылки


<< назад   вперед >>

Look at other dictionaries:

  • REXX — Ifobox programmig laguage ame REXX paradigm multiparadigm: object-orieted, procedural, structured year 1979 desiger Mike Cowlishaw developer Mike Cowlishaw & IBM latest release versio ANSI X3.274 latest release date 1996 typig… (Wikipedia)
  • Object REXX — The Object REXX programmig laguage is a object-orieted scriptig laguage based o the REXX laguage, produced by IBM, origially for the OS/2 ad OS/390 lies of operatig systems.O October 12, 2004, IBM released Object REXX as ope…
  • Rawhead Rexx — are a Germa power metal/heavy metal bad. The curret members are guitarist ad vocalist Juerge Volk, ad bass player "Face".I August 2004, guitarist Rüdiger Fleck left the bad, followed by drummer Dai Löble i February 2005,…
  • VX-REXX — is a highly-extesible REXX GUI developmet system for OS/2.Much of the ew code i eComStatio has bee writte usig VX-REXX.Though REXX is itself a 3GL, the VX-REXX iterface allows you to build REXX programs usig a combiatio of…
  • Rawhead Rexx (album) — "Rawhead Rexx" is the secod full-legth self-titled studio album by Germa power metal bad, Rawhead Rexx. The album was released i 2002 by AFM Records. Track listig # "The Curse" (Fleck, Beble, Volk) - 1:02 # "Tow of Skulls" (Volk) - 3:52…
  • REXX — (Abk. f. Restructured Exteded E xecutor) ist eie vo Mike Cowlishaw bei IBM etwickelte Skriptsprache. Ihaltsverzeichis 1 Herkuft2 Grudlegede Kozepte2.1 Alles ist ei Strig2.2 Auswertugslogik3 Literatur4 Webliks // Herkuft REXX… (Deutsch Wikipedia)
  • Rexx — (Abk. f. Restructured Exteded E xecutor) ist eie vo Mike Cowlishaw bei IBM etwickelte Skriptsprache. Ihaltsverzeichis 1 Herkuft2 Grudlegede Kozepte2.1 Alles ist ei Strig2.2 Auswertugslogik3 Literatur4 Webliks // Herkuft REXX…
  • REXX — Restructured Exteded Executor Restructured Exteded Executor (REXX) est u lagage, iitialemet Revised EXecutor, mais le sigle était déjà déposé, a été iveté par Mike Cowlishaw, chercheur d'IBM. Lagage iterprété procédural, il est u… (Français Wikipedia)
  • Rexx — Restructured Exteded Executor Restructured Exteded Executor (REXX) est u lagage, iitialemet Revised EXecutor, mais le sigle était déjà déposé, a été iveté par Mike Cowlishaw, chercheur d'IBM. Lagage iterprété procédural, il est u…
  • BASIC — Ifobox programmig laguage ame BASIC paradigm structured, later procedural geeratio 3GL year Start date 1964 desiger Joh Kemey ad Thomas Kurtz developer latest release versio latest release date typig strog implemetatios Apple… (Wikipedia)