XTRAN Example — Eliminate Dead PL/I Code

The following example uses a rule set written in XTRAN's rules language ("meta-code") that finds and suppresses every statement that is "dead" (cannot execute).  The rules comprise 147 non-comment lines of meta-code.

NOTE that these rules are language-independent; they are exactly the same rules used for similar examples for other languages.


Strategy



Process Flowchart

Here is a flowchart for this process, in which the elements are color coded:

process flowchart

Input to XTRAN

prc:    PROCEDURE;
        DCL i FIXED BIN (31);
        IF i = 0 | i = 1 THEN
            GOTO lbl2;
        i = 1;
        GOTO lbl3;
/*
 * The following code is dead and should therefore be eliminated:
 */
        IF i > 1 THEN
            GOTO lbl1;
        i = 2;
lbl1:   i = 3;
        GOTO lbl3;
/*
 * The following statement is dead and should therefore be eliminated:
 */
        i = 4;
lbl2:   i = 4;
lbl3:   i = 5;
        END PRC;


Output from XTRAN

prc:    PROCEDURE;
        DECLARE i FIXED BINARY (31);
        IF i = 0 | i = 1 THEN
            GOTO lbl2;
        i = 1;
        GOTO lbl3;
lbl2:   i = 4;
lbl3:   i = 5;
        END prc;