The Rexx Parser


The Rexx Parser

/********************************* WARNING ************************************
 * This version of the Rexx Parser is a work-in-progress. In particular, some *
 * parts of the APIs (like the Tree API) are largely undocumented; they will  *
 * be defined at a later stage of the package development.                    *
 ******************************************************************************/

The Rexx Parser is hosted on:

The documentation copy at https://rexx.epbcn.com/rexx-parser/ uses the Rexx Highlighter to display Rexx programs, and therefore has better highlihting. On the other hand, the copy at https://github.com/JosepMariaBlasco/rexx-parser/ has version control, bug reporting, and all the features offered by GitHub.

Beware: some of the program listings that appear in this documentation will not display at all in the GitHub version, as GitHub does not implement the source attribute for Rexx fenced code blocks.

/******************************************************************************/
/* This is a sample Rexx code fragment, numbered, starting at line 93.        */
/* It shows many of the features of the Rexx Parser.                          */
/******************************************************************************/

/**
 * This is a doc-comment. The first statement, up to the first period,
 * is the summary, and the rest is the description.
 */
::Method open Package Protected         -- Bold, underline, italic
  Expose x pos stem.

  Use Arg doors

  a   = 12.34e-56 + " -98.76e+123 "     -- Highlighting of numbers
  len = Length( Stem.12.2a.x.y )        -- A built-in function call
  pos = Pos( "S", "String" )            -- An internal function call
  Call External pos, len, .True         -- An external function call
  .environment~test.2.x = test.2.x      -- Method call, compound variable

  Exit "नमस्ते"G,  "P ≝ 𝔐",  "🦞🍐"     -- Unicode strings

---
---  A markdown doc-comment, starting with "---".
---
Pos: Procedure                          -- A label
  Return "POS"( Arg(1), Arg(2) ) + 1    -- Built-in function calls

The Rexx Parser is a full Abstract Syntax Tree (AST) parser for Rexx and ooRexx written by Josep Maria Blasco <> and distributed under the Apache 2.0 license. Some files may contain contributions from other authors, as attributed in the corresponding copyright notices.

Current version and downloads

The current release is beta 0.2d, refresh 20250629. You can download it here. Daily builds can be found at https://rexx.epbcn.com/rexx-parser/.

The Rexx Parser is also distributed as part of net-oo-rexx, a software bundle curated by Rony Flatscher and consisting of several different Rexx- (and NetRexx-) related packages. The net-oo-rexx package can be downloaded at https://wi.wu.ac.at/rgf/rexx/tmp/net-oo-rexx-packages/.

Documentation

You may be interested in browsing our documentation. In particular, you may want to use one the following quick links:

Child projects

The Rexx Highlighter

The Rexx Highlighter is a child project of the Rexx Parser. Developed around a common code base, it will include output drivers for HTML, ANSI Terminals, and LaTeX.