The XPL compiler generator system
Linux version Feb 15, 2015

This is a version of the XPL compiler generator System packaged to run on Linux.

History

The original code was developed in 1967 by William McKeeman and David B. Wortman at University of California, Santa Cruz and James J. Horning and others at Stanford University. Over the years it was ported to run on a variety of computer systems.

In 2000 David Bodenstab ported XPL to Intel x86 architecture with a FreeBSD version. The current package is based on this version; only the XPL "submonitor" was rewritten. In the process I did not include all of Bodenstab's extensions. The current version is closer in spirit to the original. However, this would not have been possible without Bodenstab's work In particular the C programs iAPX486.c iAPX486.h are all his original work. Dave's package is at bodenstab.org.

Contents

Running XPL

The generic command to run an arbitrary XPL program is:

  xplsm -p <program> [-i <input>] [-o <output>]' );
        [-i1 <input1>] [-i2 <input2>] [-i3 <input3>]' );
        [-o1 <output1>] [-o2 <output2>] [-o3 <output3>]' );
        [-f1 <file1>] [-f2 <file2>] [-f3 <file3>]' );
        [-t] [-d] [-m <maxmem>] [<parm data>]' );

run_xcom:
The shell script "run_xcom" runs the XPL compiler xcom to compile a program. It takes a single argument, the name of the xpl input (without extension). "./run_xcom prog" will compile a program "prog.xpl" and generate a compiled binary file "prog" and a compilation listing "prog.lst".

run_analyzer:
The shell script "run_analyzer" runs the XPL grammar analyzer analyzer to process a grammar. "./run_analyzer gram" will process a file "gram.bnf" and generate the xpl statements as a file called "gram.dat" and a listing "gram.lst".

Rebuilding the submonitor

The PL/I code for the submonitor requires the Iron Spring PL/I compiler version 0.9.8 and above. The C code requires GCC. the makefile will rebuild the entire submonitor, assuming the the PL/I compiler and library are in system libraries, otherwise change "plic" and "libprf.a" to include the paths to the compiler and the library.

Technical note

Peter Flass
Feb 15, 2015