REXX

REXX

REXX или Rexx (REstructured eXtended eXecutor, произносится «рекс») — интерпретируемый язык программирования, разработанный фирмой 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

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "REXX" в других словарях:

  • REXX — Saltar a navegación, búsqueda REXX Paradigma: multiparadigma Apareció en: 1979 Diseñado por: Mike Cowlishaw Desarrollador: Mike Cowlishaw e IBM Última versión: ANSI X3.27 …   Wikipedia Español

  • REXX — Erscheinungsjahr: 1979 Entwickler: Mike Cowlishaw Aktuelle Version: ANSI X3.274  (1996) Typisierung: dynamisch …   Deutsch Wikipedia

  • Rexx — (Abk. f. Restructured Extended Executor) ist eine von Mike Cowlishaw bei IBM entwickelte Skriptsprache. Inhaltsverzeichnis 1 Herkunft 2 Grundlegende Konzepte 2.1 Alles ist ein String 2.2 Auswertungslogik …   Deutsch Wikipedia

  • REXX —   [Abk. für Restructured Extended Executor, dt. »umstrukturierter erweiterter Durchführer«], eine von Mike F. Cowlishaw um 1980 bei IBM entwickelte prozedurale Programmiersprache (prozedurale Sprache), die leicht zu erlernen und einfach zu… …   Universal-Lexikon

  • REXX — (REstructured eXtended eXecutor) es un lenguaje de programación desarrollado en IBM por Michael Cowlishaw del que existen numerosas implementaciones disponibles con código abierto. Es un lenguaje de programación estructurado de alto nivel… …   Enciclopedia Universal

  • REXX — Infobox programming language name = REXX paradigm = multiparadigm: object oriented, procedural, structured year = 1979 designer = Mike Cowlishaw developer = Mike Cowlishaw IBM latest release version = ANSI X3.274 latest release date = 1996 typing …   Wikipedia

  • REXX — Restructured Extended Executor Restructured Extended Executor (REXX) est un langage, initialement Revised EXecutor, mais le sigle était déjà déposé, a été inventé par Mike Cowlishaw, chercheur d IBM. Langage interprété procédural, il est un des… …   Wikipédia en Français

  • Rexx — Restructured Extended Executor Restructured Extended Executor (REXX) est un langage, initialement Revised EXecutor, mais le sigle était déjà déposé, a été inventé par Mike Cowlishaw, chercheur d IBM. Langage interprété procédural, il est un des… …   Wikipédia en Français

  • REXX — ● sg. np. m. ►LANG REstructured eXtended eXecutor language... attaque! Langage de commande d OS/2. Pour faire un bon Rexx, prendre un shell Unix convenable, et remplacer tous les noms de commandes par des trucs à vous pour dérouter tout le monde …   Dictionnaire d'informatique francophone

  • REXX —    Acronym formed from Restructured Extended Executor Language. A scripting language from IBM, originally written by Mike Cowlishaw of IBM UK in 1979 for the VM mainframe environment and now available on many operating systems, including OS/2,… …   Dictionary of networking


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»