更新时间:2022-08-21 13:11
REXX(Restructured Extended Executor)是IBM在20世纪80年代发明的一种程序设计语言。主要用在IBM大型机(Mainframe Computer)上,在VSE、VM、OS/400、AIX、OS/2其他的IBM平台上也可以找到它的解译器或编译器。另有面向对象的版本,成为Object REXX。
从Rexx诞生起,IBM就将各种版本的Rexx加入到它的操作系统中——从主机到中型机再到终端用户操作系统,比如OS/2和PC-DOS。其他OS制造商,比如Amiga,也将Rexx作为永远可用的系统脚本语言集成进来。此外,许多独立软件开发商为很多平台创建了Rexx环境。再晚些时候,ANSI于1996年正式为Rexx采纳了一个标准。
当前(尤其是在Linux或者起源于BSD的OS上),Rexx的那些大部分早期实现,主要作为历史足迹为人们所关心。不过,两个当前保持的Rexx实现可以用于包括Linux、Mac OS X和Windows在内的许多平台:Regina和NetRexx。Regina是本地执行文件,以免费软件源代码方式,或者为诸多平台预编译好的方式获得——您可以像安装任何其他语言解释器一样安装它。NetRexx是一个有趣的“混合物”。此语言派生自普通的Rexx。更类似于Jython或者Jacl,NetRexx将类似于Rexx源代码编译为Java字节代码,并(可选)在JVM中运行作为结果生成的.class文件。
NetRexx是一个IBM项目,用于为Java虚拟机编译类似于Rexx的代码。在实际能力和编程级别上,Rexx最接近于bash加上GNU文件工具(外加grep和sed);或者可能相当于awk或Perl。当然,相对于Python、Ruby或者Java来说,Rexx让人感觉更为快而粗糙。Rexx的冗长——或者更应该说是,简洁——类似于Perl、Python、Ruby或者TCL。并且,Rexx当然是完全Turing的,支持模块和结构化编程,有面向专门任务的库,例如GUI接口、网络编程和数据库访问。但是它最自然的目标在于系统脚本的自动化和本文处理任务。与shell脚本一起,Rexx使得应用程序的控制非常自然且显而易见;但相对于bash(或者tcsh、ksh等等),Rexx中包含了更丰富的内置控制结构和(文本处理)函数。
在文体上,Rexx的IBM/mainframe根源体现在它对命令的大小写敏感;在某种次要程度上也体现在它使用标点符号相对较少 (更多用关键字而不是符号)。我倾向于认为这些特性的目的是提高可读性;但这在很大程度上取决于个人的爱好。
Rexx一个层次非常高的脚本语言,有特别强大的用于文本处理任务的工具。
基本的REXX组成包括了指令和内置函数两部分,此外TSO/E环境下的REXX还提供了外部函数以及数据堆栈函数等。