Revised Report on the Algorithmic Language ALGOL 68

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.tex.
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, September 2000, the printed document is only for proofreading.

The document is best read using a TEX-previewer with hyperref-support, e.g. xdvi coming with teTeX-1.0 or newer.

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.10 Elaboration of formats
0.3.11 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.4 Semantics
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.D. 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