The Wayback Machine - https://web.archive.org/web/20070927191700/http://burks.brighton.ac.uk/burks/language/other/a68rr/rrtoc.htm

Revised Report on the Algorithmic Language ALGOL 68

Edited by:

A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, C.H. Lindsey, L.G.T. Meertens and R.G.Fisker.

This Report has been accepted by Working Group 2.1, reviewed by Technical Committee 2 on Programming and approved for publication by the General Assembly of The International Federation for Information Processing. Reproduction of the Report, for any purpose, but only of the whole text, is explicitly permitted without formality.


This translation{1.1.5 } of the Report to HTML source language was created by: W. B. Kloke, mailto:klokew@acm.org.

Remarks on this edition are collected into a separated document, http://vestein.arb-phys.uni-dortmund.de/~wb/RR/vorwort.html.
   Further versions will be found also in http://vestein.arb-phys.uni-dortmund.de/~wb/RR/.

Known errata, as published in Algol Bulletin No. 41 and ..., are corrected. Syntactic errors in the standard-prelude, as mentioned in Commentary AB 43 p.7f, are corrected also.

Layout of examples has still to be improved.

Some reference language examples are clobbered, due to imprecise translation from TeX to HTML by tth.

At this time, April 2001, the printed document is only for proofreading.


Contents

Acknowledgements

0. Introduction
   0.1. Aims and principles of design
      0.1.1 Completeness and clarity of description
      0.1.2 Orthogonal design
      0.1.3 Security
      0.1.4 Efficiency
         0.1.4.1 Static mode checking
         0.1.4.2 Mode-independent parsing
         0.1.4.3 Independent compilation
         0.1.4.4 Loop optimization
         0.1.4.5 Representations
   0.2 Comparison with ALGOL 60
      0.2.1 Values in ALGOL 68
      0.2.2 Declarations in ALGOL 68
      0.2.3 Dynamic storage allocation in ALGOL 68
      0.2.4 Collateral elaboration in ALGOL 68
      0.2.5 Standard declarations in ALGOL 68
      0.2.6 Some particular constructions in ALGOL 68
   0.3 Comparison with the language defined in 1968
      0.3.1 Casts and routine texts
      0.3.2 Extended ranges
      0.3.3 Conformity clauses
      0.3.4 Modes of multiple values
      0.3.5 Identification of operators
      0.3.6 Representations
      0.3.7 Standard prelude
      0.3.8 Line length in transput
      0.3.9 Internal transput
      0.3.11 Elaboration of formats
      0.3.12 Features removed
   0.4 Changes in the method of description
      0.4.1 Two-level grammar
      0.4.2 Modes
      0.4.3 Extensions
      0.4.5 Translations

1. Language and metalanguage
   1.1. The method of description
      1.1.1. Introduction
      1.1.2. Pragmatics
      1.1.3. The syntax of the strict language
         1.1.3.1. Protonotions
         1.1.3.2. Production rules and production trees
         1.1.3.3. Metaproduction rules and simple substitution
         1.1.3.4. Hyper-rules and consistent substitution
      1.1.4. The semantics
         1.1.4.1. Hypernotions, designation and envelopment
         1.1.4.2. Paranotions
         1.1.4.3. Undefined
      1.1.5. Translations and variants
   1.2. General metaproduction rules
      1.2.1. Metaproduction rules of modes
      1.2.2. Metaproduction rules associated with phrases and coercion
      1.2.3. Metaproduction rules associated with nests
   1.3. General hyper-rules
      1.3.1. Syntax of general predicates
      1.3.2. The holding of predicates
      1.3.3. Syntax of general constructions

2. The computer and the program
   2.1. Terminology
      2.1.1. Objects
         2.1.1.1. Values, locales, environs and scenes
         2.1.1.2. Modes
         2.1.1.3. Scopes
      2.1.2. Relationships
      2.1.3. Values
         2.1.3.1. Plain values
         2.1.3.2. Names
         2.1.3.3. Structured values
         2.1.3.4. Multiple values
         2.1.3.5. Routines
         2.1.3.6. Acceptability of values
      2.1.4. Actions
         2.1.4.1. Elaboration
         2.1.4.2. Serial and collateral actions
         2.1.4.3. Initiation, completion and termination
      2.1.5. Abbreviations
   2.2. The program

3.0. Clauses
   3.1. Closed clauses
   3.2. Serial clauses
   3.3. Collateral and parallel clauses
   3.4. Choice clauses
   3.5. Loop clauses

4. Declarations, declarers and indicators
   4.1. Declarations
   4.2. Mode declarations
   4.3. Priority declarations
   4.4. Identifier declarations
   4.5. Operation declarations
   4.6. Declarers
   4.7. Relationships between modes
   4.8. Indicators and field selectors

5. Units
   5.2. Units associated with names
      5.2.1. Assignations
      5.2.2. Identity relations
      5.2.3. Generators
      5.2.4. Nihils
   5.3. Units associated with stowed values
      5.3.1. Selections
      5.3.2. Slices
   5.4. Units associated with routines
      5.4.1. Routine texts
      5.4.2. Formulas
      5.4.3. Calls
      5.4.4. Jumps
   5.5. Units associated with values of any mode
      5.5.1. Casts
      5.5.2. Skips

6. Coercion
   6.1. Coercees
   6.2. Dereferencing
   6.3. Deproceduring
   6.4. Uniting
   6.5. Widening
   6.6. Rowing
   6.7. Voiding

7. Modes and nests
   7.1. Independence of properties
   7.2. Identification in nests
   7.3. Equivalence of modes
   7.4. Well-formedness

8.0. Denotations
   8.1. Plain denotations
      8.1.1. Integral denotations
      8.1.2. Real denotations
      8.1.3. Boolean denotations
      8.1.4. Character denotations
      8.1.5. Void denotation
   8.2. Bits denotations
   8.3. String denotations

9. Tokens and symbols
   9.1. Tokens
   9.2. Comments and pragmats
   9.3. Representations
   9.4. The reference language
      9.4.1. Representations of symbols
      9.4.2. Other TAX symbols
         9.4.2.1. Metasyntax
         9.4.2.2. Representation

10. Standard environment
   10.1. Program texts
      10.1.2. The environment condition
      10.1.3. The method of description of the standard environment
   10.2. The standard prelude
      10.2.1. Environment enquiries
      10.2.2. Standard modes
      10.2.3. Standard operators and functions
         10.2.3.0. Standard priorities
         10.2.3.1. Rows and associated operations
         10.2.3.2. Operations on boolean operands
         10.2.3.3. Operations on integral operands
         10.2.3.4. Operations on real operands
         10.2.3.5. Operations on arithmetic operands
         10.2.3.6. Operations on character operands
         10.2.3.7. Operations on complex operands
         10.2.3.8. Bits and associated operations
         10.2.3.9. Bytes and associated operations
         10.2.3.10. Strings and associated operations
         10.2.3.11. Operations combined with assignations
         10.2.3.12. Standard mathematical constants and functions
      10.2.4. Synchronization operations
   10.3. Transput declarations
      10.3.1. Books, channels and files
         10.3.1.1. Books and backfiles
         10.3.1.2. Channnels
         10.3.1.3. Files
         10.3.1.4. Opening and closing files
         10.3.1.5. Position enquiries
         10.3.1.6. Layout routines
      10.3.2. Transput values
         10.3.2.1. Conversion routines
         10.3.2.2. Transput modes
         10.3.2.3. Straightening
      10.3.3. Formatless transput
         10.3.3.1. Formatless output
         10.3.3.2. Formatless input
      10.3.4. Format texts
         10.3.4.1. Collections and pictures
         10.3.4.2. Integral patterns
         10.3.4.3. Real patterns
         10.3.4.4. Boolean patterns
         10.3.4.5. Complex patterns
         10.3.4.6. String patterns
         10.3.4.7. Bits patterns
         10.3.4.8. Choice patterns
         10.3.4.9. Format patterns
         10.3.4.10. General patterns
      10.3.5. Formatted transput
         10.3.5.1. Formatted output
         10.3.5.2. Formatted input
      10.3.6. Binary transput
         10.3.6.1. Binary output
         10.3.6.2. Binary input
   10.4. The system prelude and task list
      10.4.1. The system prelude
      10.4.2. The system task list
   10.5. The particular preludes and postludes
      10.5.1. The particular preludes
      10.5.2. The particular postludes

11.1. Complex square root
   11.2. Innerproduct 1
   11.3. Innerproduct 2
   11.4. Largest element
   11.5. Euler summation
   11.6. The norm of a vector
   11.7. Determinant of a matrix
   11.8. Greatest common divisor
   11.9. Continued fraction
   11.10. Formula manipulation
   11.11. Information retrieval
   11.12. Cooperating sequential processes
   11.13. Towers of Hanoi

12.1. Technical terms
   12.2. Paranotions
   12.3. Predicates
   12.4. Index to the standard prelude
   12.5. Alphabetic listing of metaproduction rules


14. AB39.3.1 Specification of partial parametrization proposal.
2.1.3.5. Routines
5.4.3. Calls (with partial parametrization)

Next