home *** CD-ROM | disk | FTP | other *** search
- REXXTACY: The REXX to C Translator
-
- Anthony T. Green
-
- Ruddock and Associates, Inc.
-
-
- *** Introduction
-
- * REXXTACY - The REXX to C translator
-
- REXXTACY is a package which allows you to convert a REXX program into a
- DOS or OS/2 executable. It does this by first translating the REXX source
- into C code. You must then invoke the Microsoft C compiler, and link the
- resulting object file with the REXXTACY runtime library.
-
- The process of converting a REXX program to into C code consists of invoking
- the REXXTACY program with your REXX source file as an argument.
- REXXTACY will analyse the REXX source (myprog.cmd), perform some optimizations
- on the code, and emit a C source file (myprog.c).
- This C source is ready to compile with the Microsoft C compiler.
-
- * Using this manual
-
- The organization of this manual has been loosly based on IBM's OS/2 REXX
- reference manual. Most sections of that manual have corresponding sections
- in this document. This will make it easier for the user who wishes to find
- any implementation differences between particular commands or control
- structures.
-
- Since there are only a small number of differences or omissions from REXX in
- REXXTACY, the manual will seem rather sparse at points. Please be aware that
- this manual is not intended to be a REXX reference manual - but rather a
- description of the REXXTACY implementation.
-
- * Using REXXTACY
-
- REXXTACY has a number of command line options. Run REXXTACY -? for
- usage information...
-
- REXXTACY 2.0 - (C) 1992 Ruddock and Associates. All rights reserved.
-
- Options -o Optimize REXX program
- -p Debug parser.
- -z Debug peephole optimizer.
- -u Debug du & ud chain generation.
- -g Debug constant and copy propagations.
- -b Dump basic block information.
- -h Display this message.
- -? Display this message.
-
- C files created with REXXTACY have the same name as the REXX file name,
- but ending in .c.
-
- Most of the other switches are for debugging (and entertainment) purposes
- only. They tell REXXTACY to emit information pertaining to REXXTACY's
- internal optimization efforts. If ever you encounter a bug in REXXTACY you
- should run it again with all of these switches on, and pipe the output to a
- file. This file is very useful in helping the author track down problems.
-
- Many errors in a REXX program will be caught at compile time by REXXTACY.
- However, REXXTACY provides extensive runtime error checks. A compiled REXX
- program processing faulty data will emit descriptive error messages ---
- with line numbers that refer back to the original REXX source file.
-
-
- *** General Concepts
-
- * Structure and General Syntax
-
- REXXTACY input can be structured exactly like REXX input. It supports implicit
- and explicit end of statement markers, statement continuation markers and C
- style comments. However, hexadecimal and binary strings are not supported at
- this time.
-
- * Expressions and Operators
-
- All of REXX's logical, arithmentic and comparison expressions and operators are
- supported by REXXTACY --- including string abuttals and operator precedence
- orders.
-
- * Clauses and Instructions
-
- REXXTACY supports all five REXX clause types:
-
- 1. NULL Clauses
- 2. Labels
- 3. Assignments
- 4. Keyword Instructions
- 5. Commands
-
- * Assignments and Symbols
-
- Constant symbols, simple symbols, compound symbols and stems are all supported
- by REXXTACY. Assignments to these symbol types operate exactly as they do
- in REXX. One limitation of the current version of REXXTACY is that REXX
- keywords are are always recognized as keywords, independent of the lexical
- context in which they appear. This means that, for instance, you may not have
- a variable called SAY.
-
- * Commands to External Environments
-
- The only command processing environment that REXXTACY currently supports is
- CMD (for OS/2) and COMMAND (for DOS). Commands to this environment may be
- issued exactly as they are in REXX, however, they are executed in a subcommand
- shell rather than as a callback to the parent shell (as in the case of OS/2).
-
-
- *** Keyword Instructions
-
- * ADDRESS
-
- Not implemented. All commands are routed to the OS/2 or DOS command shell.
-
-
- * ARG
-
- Implementation identical to that of REXX.
-
-
- * CALL
-
- Implementation identical to that of REXX, with the omission of:
- * CALL ON
- * CALL OFF
-
-
- * DO
-
- Implementation identical to that of REXX.
-
-
- * DROP
-
- Not implemented.
-
-
- * EXIT
-
- Implementation identical to that of REXX.
-
-
- * IF
-
- Implementation identical to that of REXX.
-
-
- * INTERPRET
-
- Not implemented.
-
-
- * ITERATE
-
- Not implemented.
-
-
- * LEAVE
-
- Not implemented.
-
-
- * NOP
-
- Implementation identical to that of REXX.
-
-
- * NUMERIC
-
- Not implemented.
-
-
- * OPTIONS
-
- Not implemented.
-
-
- * PARSE
-
- Implementation identical to that of REXX except for the omissions of
- * PARSE SOURCE.
-
-
- * PROCEDURE
-
- Implementation identical to that of REXX.
-
-
- * PULL
-
- Implementation identical to that of REXX.
-
-
- * PUSH
-
- Not implemented.
-
-
- * QUEUE
-
- Not implemented.
-
-
- * RETURN
-
- Implementation identical to that of REXX.
-
-
- * SAY
-
- Implementation identical to that of REXX.
-
-
- * SELECT
-
- Implementation identical to that of REXX.
-
-
- * SIGNAL
-
- Not implemented.
-
-
- * TRACE
-
- Not implemented.
-
-
- *** Functions
-
- Function calls in REXXTACY operate exactly as they do in REXX. Built in
- functions that are supported in REXXTACY include:
-
- * LENGTH
- * LINEIN (No support for device names, line or count parameters)
- * LINES (No support for device names)
-
-