Interactive ALGOL 68

{{Short description|Compiler}}

The Interactive ALGOL 68 compiler for ALGOL 68 was made available by Peter Craven of Algol Applications from 1984.{{cite web|title=AB52.3.1: Survey of Viable ALGOL 68 Implementations |url=http://archive.computerhistory.org/resources/text/algol/algol_bulletin/A52/P31.HTM |accessdate=April 26, 2007 |archiveurl=https://web.archive.org/web/20070927224233/http://archive.computerhistory.org/resources/text/algol/algol_bulletin/A52/P31.HTM |archivedate=September 27, 2007 |url-status=dead }} Then in 1994 from OCCL (Oxford and Cambridge Compilers Ltd) until 2004.{{cite web | title = Oxford and Cambridge Compilers Ltd Home Page | url = http://www.occl-cam.demon.co.uk/ | accessdate = April 26, 2007 |archiveurl = https://web.archive.org/web/20040612122159/http://www.occl-cam.demon.co.uk/ |archivedate = June 12, 2004}}

Platforms

Extensions to standard ALGOL 68

  1. Ability to include source code, and versions of source code.
  2. Nestable comments
  3. FORALL syntactic element for looping over arrays.
  4. ANYMODE a union of all MODEs known to the compiler, and hence dynamic typing.
  5. Enhanced coercions (casting) allowing stringer then "strong" coercions.
  6. Enstructuring automatically coerces a variable from type to struct(type)
  7. Conforming coerces UNION (THING, MOODS) to THING, but if that is not the current mood of the union, then a run-time error will be generated.
  8. Library interface to the native operating system and other libraries.
  9. The operator SIZE
  10. Pseudo-operators ANDTH and OREL, and ANF and ORF for Short-circuit evaluation of Boolean expressions.
  11. Arrays can be slices with stride to select a subset of elements.
  12. MOID is treated differently.

= Example of code =

MODULE vectors

BEGIN

INT dim=3;

MODE VECTOR = [dim]REAL;

OP + = (VECTOR a, b) VECTOR: ( VECTOR out; FOR i FROM LWB a TO UPB a DO out:=a[i]+b[i] OD; out ),

- = (VECTOR a, b) VECTOR: ( VECTOR out; FOR i FROM LWB a TO UPB a DO out:=a[i]-b[i] OD; out ),

DOT = (VECTOR a, b) REAL: ( REAL out:=0; FOR i FROM LWB a TO UPB a DO out+:=a[i]*b[i] OD; out );

END

KEEP VECTOR, +, -, DOT

Restrictions to the language from the standard ALGOL 68

  1. Variable, Modes and Operators must be declared before use.
  2. Anonymous procedure may use rows-declarer as a parameter.
  3. No transient subnames of flexible arrays.
  4. No formatted Transput (or format-texts).
  5. Restricted use of straightening of multiple values during Transput.
  6. Limited use of BYTES, BITS and BOOL.
  7. restricted use of labels to follow EXIT statements.

See also

References

{{Reflist}}