REXX

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску

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, но более простой). Его синтаксис: <source lang="text">

   parse [upper] исходник шаблон

</source> позволяет писать легко читаемые конструкции вроде <source lang="text">

   MyVar = "Вася Иванов"
   parse var MyVar FirstName LastName
   say "Имя:" FirstName
   say "Фамилия:" LastName

</source> или, к примеру, если имя написано через запятую, можно указать это в шаблоне <source lang="text">

   MyVar = "Иванов, Вася"
   parse var MyVar LastName "," FirstName
   say "Имя:" FirstName
   say "Фамилия:" LastName

</source> а также можно пользоваться прямой индексацией столбцов: <source lang="text">

   MyVar = "(202) 123—1234"
   parse var MyVar 2 AreaCode 5 7 SubNumber
   say "Код города:" AreaCode
   say "Телефон:" SubNumber

</source> выведет следующие строки на экран: <source lang="text">

   Код города: 202
   Телефон: 123—1234

</source>

Пример программы

Пример программы на REXX’е — калькулятор, выполняющий шесть операций (+,-,*,/,//,%), понимающий операции в скобках и произвольное количество переменных: <source lang="text"> /* 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 </source> Пример выполнения программы (> обозначен ввод пользователя): <source lang="text">

Русский народный калькулятор 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

</source>

См. также

Ссылки

ca:Rexx da:REXX de:REXX en:REXX es:REXX eu:REXX fi:REXX fr:Restructured Extended Executor he:REXX is:REXX ja:REXX ko:REXX nl:Rexx no:REXX pl:REXX pt:REXX sl:REXX sv:REXX tg:REXX tr:REXX zh:REXX

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....