ALGOL 68RS

From Wikipedia, the free encyclopedia

Original author(s)I. F. Currie, J. D. Morrison
Initial releaseAugust 1977; 48 years ago (1977-08)
Final release
algol68toc 1.14 / 25 August 2012; 12 years ago (2012-08-25)
ALGOL 68RS
Original author(s)I. F. Currie, J. D. Morrison
Developer(s)Royal Signals and Radar Establishment
Initial releaseAugust 1977; 48 years ago (1977-08)
Final release
algol68toc 1.14 / 25 August 2012; 12 years ago (2012-08-25)
Repositorygithub.com/coolbikerdad/Algol-68RS-Source
Written inALGOL 68
Operating systemICL VME, Multics, VMS
PlatformICL 2900 Series, VAX
Available inEnglish
TypeCompiler, translator
LicenseFreeware, public domain (parts)
Websitealgol68.sf.net

ALGOL 68RS is the second ALGOL 68 compiler written by I. F. Currie and J. D. Morrison, at the Royal Signals and Radar Establishment (RSRE).[1] Unlike the earlier ALGOL 68-R, it was designed to be portable, and implemented the language of the Revised Report.

Versions of ALGOL 68RS were written for the ICL 2900 Series, Multics, and VAX running VMS.[2][3]

Subsequently, parts of this compiler were released into the public domain, as a translator from ALGOL 68 to C, as part of the public release of the hardware description language ELLA, also by the RSRE.

Although the ALGOL 68-R compiler, written by I.F. Currie, J.D. Morrison, and S.G. Bond, was a great success, it suffered from two major problems: it had been written for the nearly obsolete ICL 1900 computer, and it implemented an out-of-date version of the language as it was released before the Revised Report on ALGOL 68 was available.

RSRE needed a newer compiler for various internal projects, so the team of Currie and Morrison wrote a new compiler designed for cross-platform software portability between machines. The compiler dealt with the parsing of ALGOL 68, producing a high level intermediate language known as stream language that is then compiled to machine code by a translator. The compiler needed to know only the sizes of the various object machine data types and the character encoding (set) available.

The compiler was written in ALGOL 68, bootstrapped initially using the ALGOL 68-R compiler.

A team of two programmers at Oxford University Computing Services wrote a code generator for the ICL 2900 series.[4] Martyn Thomas of South West Universities Regional Computer Centre (SWURCC) arranged that this system be sponsored by International Computers Limited (ICL) and sold as an official ICL product.[5]

Later, the Avon Universities Joint Computer Centre, a large user of Multics requested the SWURCC team to produce a Multics version of ALGOL 68RS. A version for the Digital Equipment Corporation (DEC) VAX computer was also written.

Eventually the team at SWURCC formed a company, Praxis, initially supporting the Multics version of ALGOL 68RS.

RSRE also used the ALGOL 68RS compiler for internal projects, including the Flex machine and the ELLA hardware design language. When it was decided to make ELLA freely available, Praxis was commissioned to write an ALGOL 68 to C translator named ctrans, based on the ALGOL 68RS compiler.

Restrictions in the language compiled

Like the earlier ALGOL 68-R compiler, ALGOL 68RS was a one-pass compiler, which required some restrictions on the language compiled.

Declaration before use

The ALGOL 68 program:

PROC even = (INT number) BOOL: ( number = 0 | TRUE | odd (ABS (number - 1)));
PROC odd = (INT number) BOOL: ( number = 0 | FALSE | even (ABS (number - 1)));

would have to be re-written as:

PROC (INT) BOOL odd;
PROC even = (INT number) BOOL : ( number = 0 | TRUE | odd (ABS (number - 1)));
odd := (INT number) BOOL : ( number = 0 | FALSE | even (ABS (number - 1)));

To allow recursive declarations of modes (types) a special stub mode declaration was used to inform the compiler that an upcoming symbol was a mode rather than an operator:

MODE B,
     A = STRUCT (REF B b),
     B = [1:10] REF A;

Parallel processing

Like ALGOL 68-R, the operators PAR clause and the SEMA mode with its associated UP, DOWN, and LEVEL, were omitted.

Extensions to ALGOL 68

Availability

References

Related Articles

Wikiwand AI