Steve Meyer wrote in message 00-08-055...>>>>: Peter Flass <flass@leginfo.lbdc.state.ny.us> wrote:>>>>: > XPL, developed in the 1970's was one of the earliest "compiler>>>>: > compilers", was widely ported, and was the basis for a number of
other>>>>: > languages such as the PL/M family.>>I think PL/M and XPL came from different worlds that did not>communicate. I think people saw XPL as too high level. I think PL/M>came from other system level languages such as PL/360 (?). My>recollection may not be right.

Niklaus Wirth developed PL360 as an alternative to writing IBM360
assembly code directly. It was a quick one-person project. The
parser used "operator precedence' techniques which predated practical
LR methods. The tables could be worked out by hand in no time but the
method couldn't handle BNFs of most languages. It was quite low
level, mapping infix syntactic forms directly to single 360
instructions without any optimizations. The PL360 paper inspired lots
of people to develop their own small languages.

McKeeman etc developed XPL on 360 as a tidy subset of PL/I that could
be implemented by a few people and be useful in coding biggish things,
including the compiler and parser generator. The parser was initially
based on their extensions to operator precedence, which relaxed BNF
restrictions but required use of a parser generator tool and was still
limited compared to LR. XPL was "high level" only in having built-in
a varying-length string data type supported by a garbage collector.
There were no struct types.

Univ of Washington ported XPL onto SDS/Xerox systems that were like
360 but with one instruction format.

UW graduate Gary Kildall developed Intel's first programming tools for
the 8008 and 8080, in trade for a very early portable computer: an
8008 without keyboard or monitor, installed in a briefcase. Kildall
used these (plus a floppy drive adapted by UW grad John Torode) to
develop CP/M, the precursor to MS DOS. The Intel tools included an
assembler and PL/M, both coded in Fortran. PL/M was inspired by the
example of PL360 and the implementation methods of XPL. Kildall left
before UW's XPL project but was likely very aware of it.

PL/M's level was limited by the 8008's near inability to support proc
calls. The first micro language to see significant use was Basic,
implemented by assembler-coded interpreters. Implementing real
applications in real compiled languages required later chips with
nicer instruction sets, eg 8088 (gag) and M6800.