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组成包括了指令和
内置函数两部分,此外TSO/E环境下的REXX还提供了外部函数以及数据
堆栈函数等。