ALGOL 68RS from RSRE was a portable compiler system written in ALGOL 68RS (bootstrapped from ALGOL 68R), and implemented on a variety of systems including the ICL 2900/Series 39, Multics and DEC VAX/VMS.
The language was based on the Revised Report, but with similar subset restrictions to ALGOL 68R. This compiler survives in the form of an Algol68-to-C compiler aka ELLA ALGOL 68.
Modules
''ALGOL 68RS'' allow the programmer the ability of creating ''modules'', these can be '''use'''d by other programs and also allowed separate compilation.
Syntax:
PROGRAM [ (holelist ) ] progtitle
[ CONTEXT holename IN progtitle ]
[ USE uselist ]
enclosed clause
FINISH
DECS dectitle
CONTEXT holename IN progtitle
[ USE uselist ]
decsbody
KEEP keeplist
FINISH
Example
PROGRAM (thinking, displaying) chess
BEGIN
MODE PIECE = STRUCT(...);
[12]PIECE pieces;
...
HERE thinking(PIECE, pieces, BOARD, game);
...
HERE displaying(PIECE, pieces, BOARD, game);
...
END
PROGRAM thinkmodule
CONTEXT thinking IN chess
...
FINISH
An entire program can thus be '''composed''' of pieces of other modules, particularly if a ''hole'' contains a sub-''hole'' (eg displaypiece), then this ''hole'' can in-turn be pulled into the composition.
Example:
PROGRAM abc
COMPOSE game(thinking=thinkmodule, displaying=displayingmodule(piece=displaypiece))
FINISH