REXX

REXX

REXX (REstructured eXtended eXecutor) или Rexx (рекс) — интерпретируемый язык программирования, разработанный фирмой IBM. Существуют как коммерческие, так и свободно распространяемые реализации данного языка.

Пик своего распространения REXX получил в середине 1990-х вместе с популярностью операционной системы OS/2. Это связано с тем, что интерпретатор REXX’а мог вызываться как из командного процессора, который в результате мог исполнять скрипты, состоящие из операторов командной строки (аналогично bash в GNU), так и из любого приложения.

В том случае, когда интерпретатор REXX вызывается из cmd.exe (или 4os2.exe) он исполняет командный файл. Если он вызывается из почтового редактора FleetStreet — он исполняет командный файл FleetStreet. Сам по себе REXX не привязан к конкретной части системы и может использоваться любой программой как «свой» язык, при этом каждая из использующих REXX программ может добавить к нему свои функции и операторы, которые будут доступны только при работе REXX’а в контексте этой программы. Например, электронная таблица mesa/2 добавляют в REXX команду, которая позволяет считывать и записывать содержимое ячеек таблиц и т. п.

С тех пор язык получил развитие далеко за пределами 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

[править] Пример программы

Пример программы на REXX’е — калькулятор, выполняющий шесть операций (+,-,*,/,//,%), понимающий операции в скобках и произвольное количество переменных:

/* 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»

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

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…