| 1. | Introduction | ||
| 1.1 | Scope of the Standard | ||
| 1.1.1 | Extent of the Standard | ||
| 1.1.2 | Conformity of an Implementation with the Standard | ||
| 1.2 | Structure of the Standard | ||
| 1.3 | Design Goals and Sources | ||
| 1.4 | Language Summary | ||
| 1.5 | Method of Description and Syntax Notation | 2.1.8 | |
| 1.6 | Classification of Errors | 5.9 | |
| 2. | Lexical Elements | ||
| 2.1 | Character Set | ||
| 2.2 | Lexical Elements, Separators, and Delimiters | 2.1.1 | |
| 2.3 | Identifiers | 3.1.1, 3.1.3, 3.1.4, 3.2, 5.2.1, 5.5.4, 8.1.1, 8.1.2 | |
| 2.4 | Numeric Literals | 3.1.2, 3.2.5, 7.2.6 | |
| 2.4.1 | Decimal Literals | ||
| 2.4.2 | Based Literals | ||
| 2.5 | Character Literals | 3.2.5 | |
| 2.6 | String Literals | 2.1.1, 2.1.2, 2.1.4, 3.2.5 | |
| 2.7 | Comments | 2.1.4, 2.1.7, 3.3, 5.2.1, 5.6.7, 5.6.8, 7.1.3, 7.1.5, 7.2.5, 8.3.5 | |
| 2.8 | Pragmas | 8.4.2, 9.1.1 | |
| 2.9 | Reserved Words | 3.1.3 | |
| 2.10 | Allowable Replacements of Characters | ||
| 3. | Declarations and Types | 2.1.4, 2.1.6, 2.1.8, 4.1.4, 5.3 | |
| 3.1 | Declarations | 3.2.1 | |
| 3.2 | Objects and Named Numbers | 3.2.3, 3.2.5, 4.1.5, 7.2.6, 8.2.1 | |
| 3.2.1 | Object Declarations | 4.1.6, 5.9.6 | |
| 3.2.2 | Number Declarations | ||
| 3.3 | Types and Subtypes | 3.2.2, 3.4.1, 4.1.5, 7.2.7, 8.2.3, 9.1.5 | |
| 3.3.1 | Type Declarations | 3.3.5 | |
| 3.3.2 | Subtype Declarations | 5.3.1, 5.5.1, 5.6.3, 5.7.2, 7.2.7, 9.1.5 | |
| 3.3.3 | Classification of Operations | ||
| 3.4 | Derived Types | 3.4.1, 5.3.1, 7.2.7, 9.1.5 | |
| 3.5 | Scalar Types | 3.4.1, 5.3.1, 5.5.1 | |
| 3.5.1 | Enumeration Types | 2.1.4, 3.4.2, 5.6.3, 5.7.1 | |
| 3.5.2 | Character Types | ||
| 3.5.3 | Boolean Types | 3.2.3 | |
| 3.5.4 | Integer Types | 7.1.1, 7.1.2, 7.2.1, 7.2.5 | |
| 3.5.5 | Operations of Discrete Types | ||
| 3.5.6 | Real Types | 7.1.1, 7.1.2, 5.5.6, 7.2.5 | |
| 3.5.7 | Floating Point Types | 7.2.1, 7.2.2, 7.2.3 | |
| 3.5.8 | Operations of Floating Point Types | ||
| 3.5.9 | Fixed Point Types | 7.1.1, 7.2.1 | |
| 3.5.10 | Operations of Fixed Point Types | ||
| 3.6 | Array Types | 5.3.2, 5.5.1, 5.5.2, 5.9.3, 8.2.2, 8.3.4, 9.1.3 | |
| 3.6.1 | Index Constraints and Discrete Ranges | 5.5.2, 9.1.3 | |
| 3.6.2 | Operations of Array Types | 5.6.2 | |
| 3.6.3 | The Type String | 2.1.1 | |
| 3.7 | Record Types | 2.1.2, 5.4.1, 5.4.2, 5.4.3, 5.9.3 | |
| 3.7.1 | Discriminants | ||
| 3.7.2 | Discriminant Constraints | ||
| 3.7.3 | Variant Parts | ||
| 3.7.4 | Operations of Record Types | ||
| 3.8 | Access Types | 5.4.3, 5.9.2, 6.1.3, 7.6.6, 7.7.3 | |
| 3.8.1 | Incomplete Type Declarations | 5.4.3 | |
| 3.8.2 | Operations of Access Types | ||
| 3.9 | Declarative Parts | 2.1.4, 5.9.6 | |
| 4. | Names and Expressions | ||
| 4.1 | Names | 3.2, 8.1.1, 8.1.2 | |
| 4.1.1 | Indexed Components | ||
| 4.1.2 | Slices | 5.6.2 | |
| 4.1.3 | Selected Components | ||
| 4.1.4 | Attributes | 8.2.4 | |
| 4.2 | Literals | 8.2.4 | |
| 4.3 | Aggregates | ||
| 4.3.1 | Record Aggregates | 5.6.10 | |
| 4.3.2 | Array Aggregates | ||
| 4.4 | Expressions | 2.1.1, 2.1.3, 2.1.5, 5.5, 5.5.3, 7.2.7 | |
| 4.5 | Operators and Expression Evaluation | 2.1.1, 2.1.3, 5.5.3, 5.7.1, 5.7.2, 5.7.4, 7.2.7 | |
| 4.5.1 | Logical Operators and Short-circuit Control Forms | 5.5.4, 5.5.5 | |
| 4.5.2 | Relational Operators and Membership Tests | 2.1.1, 5.5.6, 5.7.5, 7.2.8 | |
| 4.5.3 | Binary Adding Operators | 2.1.1, 5.7.4 | |
| 4.5.4 | Unary Adding Operators | ||
| 4.5.5. | Multiplying Operators | 9.1.5 | |
| 4.5.6 | Highest Precedence Operators | 5.5.3 | |
| 4.5.7 | Accuracy of Operations with Real Operands | 5.5.6, 7.2.2, 7.2.3, 7.2.4, 7.2.5, 7.2.7 | |
| 4.6 | Type Conversions | 5.9.1 | |
| 4.7 | Qualified Expressions | ||
| 4.8 | Allocators | 5.4.3, 6.1.3, 7.6.6 | |
| 4.9 | Static Expressions and Static Subtypes | 3.2.5, 7.2.6, 8.2.1 | |
| 4.10 | Universal Expressions | 7.2.6 | |
| 5. | Statements | 2.1.2, 2.1.6, 2.1.8, 3.3.6, 5.6 | |
| 5.1 | Simple and Compound Statements - Sequences of Statements | 5.6.1 | |
| 5.2 | Assignment Statement | 2.1.3, 5.6.2 | |
| 5.2.1 | Array Assignments | ||
| 5.3 | If Statements | 2.1.5, 3.3.7, 5.6.1, 5.6.5 | |
| 5.4 | Case Statements | 3.3.7, 5.6.1, 5.6.3 | |
| 5.5 | Loop Statements | 5.1.1, 5.5.1, 5.6.1, 5.6.2, 5.6.4, 5.6.6, 7.4.2 | |
| 5.6 | Block Statements | 3.3.7, 5.1.2, 5.6.1, 5.6.9, 5.8.4, 9.1.2 | |
| 5.7 | Exit Statements | 5.1.3, 5.6.4, 5.6.4, 5.6.5 | |
| 5.8 | Return Statements | 5.6.8 | |
| 5.9 | Goto Statements | 5.6.7, 5.8.1 | |
| 6. | Subprograms | 4.1.2 | |
| 6.1 | Subprogram Declarations | 2.1.2, 3.2.4, 3.3.3, 4.1.1, 4.1.4, 4.1.5, 4.2.1, 5.2.1, 5.6.6, 7.1.3, 7.1.4 | |
| 6.2 | Formal Parameter Modes | 2.1.5, 5.2.4, 5.9.3 | |
| 6.3 | Subprogram Bodies | 2.1.7, 3.3.4, 3.3.7, 5.1.4, 9.1.1 | |
| 6.3.1 | Conformance Rules | ||
| 6.3.2 | Inline Expansion of Subprograms | 9.1.1 | |
| 6.4 | Subprogram Calls | 2.1.1, 4.1.3, 5.2.2, 5.6.6, 5.9.3 | |
| 6.4.1 | Parameter Associations | 5.2.2, 5.9.8 | |
| 6.4.2 | Default Parameters | 5.2.2, 5.2.3 | |
| 6.5 | Function Subprograms | 2.1.1, 3.2.4, 4.1.3, 4.3.1, 5.9.6 | |
| 6.6 | Parameter and Result Type Profile - Overloading of Subprograms | 4.2.1, 5.7.3, 8.2.5 | |
| 6.7 | Overloading of Operators | 5.7.5 | |
| 7. | Packages | 2.1.2, 4.1.4, 4.1.5 | |
| 7.1 | Package Structure | 4.2.1, 4.3, 7.1.5 | |
| 7.2 | Package Specifications and Declarations | 2.1.7, 3.2.4, 3.3.3, 4.1.1, 4.1.6, 4.2.1, 4.2.2, 4.2.4, 4.3.1, 5.1.4, 7.1.3, 7.1.5, 8.2.6, 8.3.1 | |
| 7.3 | Package Bodies | 2.1.7, 3.3.4, 4.1.1, 4.2.1, 4.3.1, 5.1.4, 5.9.1 | |
| 7.4 | Private Type and Deferred Constant Declarations | 5.3.3 | |
| 7.4.1 | Private Types | 5.3.3 | |
| 7.4.2 | Operations of a Private Type | ||
| 7.4.3 | Deferred Constants | ||
| 7.4.4 | Limited Types | 5.3.3, 5.7.5, 8.3.4 | |
| 7.5 | Example of a Table Management Package | ||
| 7.6 | Example of a Text Handling Package | ||
| 8. | Visibility Rules | 4.2, 5.7 | |
| 8.1 | Declarative Region | 4.2.3 | |
| 8.2 | Scope of Declarations | 4.1.6, 4.2.3, 7.6.6 | |
| 8.3 | Visibility | 4.1.3, 4.1.4, 4.2.1, 4.2.3, 5.7.1, 5.7.3 | |
| 8.4 | Use Clauses | 5.6.9, 5.7.1, 5.7.2 | |
| 8.5 | Renaming Declarations | 5.6.9, 5.7.1, 5.7.2 | |
| 8.6 | The Package Standard | 3.2.2, 7.2.1 | |
| 8.7 | The Context of Overload Resolution | 8.2.5 | |
| 9. | Tasks | 4.1.7, 4.2.4, 6, 7.4 | |
| 9.1 | Task Specifications and Task Bodies | 2.1.7, 3.2.4, 3.3.7, 5.1.4, 6.1.1, 6.1.4, 6.3.4, 7.1.3, 8.4.2 | |
| 9.2 | Task Types and Task Objects | 6.1.1, 6.1.2 | |
| 9.3 | Task Execution - Task Activation | 6.1.3, 6.1.4, 6.1.5, 6.3.2, 7.4.1, 7.4.2, 7.4.5, 8.2.6 | |
| 9.4 | Task Dependence - Termination of Tasks | 6.2.3, 6.3 | |
| 9.5 | Entries, Entry Calls, and Accept Statements | 3.2.4, 4.3.1, 5.1.4, 5.2.1, 5.2.4, 5.6.1, 5.9.4, 6.1.4, 6.2, 6.3.1, 6.3.2, 7.4.5, 7.4.7 | |
| 9.6 | Delay Statements, Duration, and Time | 6.1.5, 6.2.5, 7.1.1, 7.4.2, 7.4.3 | |
| 9.7 | Select Statements | 2.1.2, 5.6.1, 6.2.1, 6.2.6 | |
| 9.7.1 | Selective Waits | 6.2.1, 6.2.2, 6.2.4, 6.2.5, 6.3.2, 7.4.4 | |
| 9.7.2 | Conditional Entry Calls | 4.2.4, 6.2.5 | |
| 9.7.3 | Timed Entry Calls | 4.2.4, 6.1.5, 6.2.5 | |
| 9.8 | Priorities | 6.1.4, 7.4.5, 8.4.2 | |
| 9.9 | Task and Entry Attributes | 6.2.3 | |
| 9.10 | Abort Statements | 6.3.3, 7.4.6 | |
| 9.11 | Shared Variables | 6.2.4, 7.4.7 | |
| 9.12 | Example of Tasking | ||
| 10. | Program Structure and Compilation Issues | 4.1.1 | |
| 10.1 | Compilation Units - Library Units | 3.3.2, 4.1.1, 7.1.4 | |
| 10.1.1 | Context Clauses - With Clauses | 2.1.2, 4.2.1, 4.2.3, 8.2.6, 8.4.1, 8.4.2 | |
| 10.1.2 | Examples of Compilation Units | ||
| 10.2 | Subunits of Compilation Units | 4.1.1, 4.2.3 | |
| 10.2.1 | Examples of Subunits | ||
| 10.3 | Order of Compilation | ||
| 10.4 | The Program Library | 8.4 | |
| 10.5 | Elaboration of Library Units | 8.4.2 | |
| 10.6 | Program Optimization | 8.4.4 | |
| 11. | Exceptions | 4.3, 5.8, 7.5 | |
| 11.1 | Exception Declarations | 3.3.5, 4.3.1, 5.4.3, 7.5.2, 7.5.3 | |
| 11.2 | Exception Handlers | 2.1.2, 4.3.1, 5.6.9, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 6.2.2, 6.3.1, 6.3.4, 7.5.2, 7.5.3, 8.2.7 | |
| 11.3 | Raise Statements | 4.3.1, 7.5.3, 8.2.3, 8.2.7 | |
| 11.4 | Exception Handling | 4.3.1, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 6.2.2, 6.3.4, 7.5, 8.2.7 | |
| 11.4.1 | Exceptions Raised During the Execution of Statements | 5.8.1 | |
| 11.4.2 | Exceptions Raised During the Elaboration of Declarations | 5.8.1 | |
| 11.5 | Exceptions Raised During Task Communication | 5.8.1, 6.2.2 | |
| 11.6 | Exceptions and Optimization | ||
| 11.7 | Suppressing Checks | 5.9.5 | |
| 12. | Generic Units | ||
| 12.1 | Generic Declarations | 2.1.2, 3.2.4, 4.2.2, 8.1.1, 8.1.2, 8.1.3, 8.3.1, 8.3.3, 8.3.4, 8.3.5, 8.4.1, 8.4.3 | |
| 12.1.1 | Generic Formal Objects | 8.2.4, 8.2.6 | |
| 12.1.2 | Generic Formal Types | 8.2.2, 8.3.3, 8.3.4, 8.3.6 | |
| 12.1.3 | Generic Formal Subprograms | 8.3.6 | |
| 12.2 | Generic Bodies | 8.2.7 | |
| 12.3 | Generic Instantiation | 2.1.2, 3.2.4, 5.2.2, 8.1.1, 8.2.4, 8.2.5, 8.3.2, 8.3.6, 8.4.4 | |
| 12.3.1 | Matching Rules for Formal Objects | ||
| 12.3.2 | Matching Rules for Formal Private Types | 5.3.3, 8.3.4 | |
| 12.3.3 | Matching Rules for Formal Scalar Types | ||
| 12.3.4 | Matching Rules for Formal Array Types | 8.2.2 | |
| 12.3.5 | Matching Rules for Formal Access Types | ||
| 12.3.6 | Matching Rules for Formal Subprograms | ||
| 12.4 | Example of a Generic Package | ||
| 13. | Representation Clauses and Implementation-Dependent Features | 4.1.4, 7.6 | |
| 13.1 | Representation Clauses | 7.6.1 | |
| 13.2 | Length Clauses | 5.4.3, 7.6.1 | |
| 13.3 | Enumeration Representation Clauses | 3.4.2, 7.6.1 | |
| 13.4 | Record Representation Clauses | 2.1.2, 7.6.1 | |
| 13.5 | Address Clauses | 5.9.4 | |
| 13.5.1 | Interrupts | 4.1.7, 5.9.4 | |
| 13.6 | Change of Representation | 7.6.1 | |
| 13.7 | The Package System | 7.6.2 | |
| 13.7.1 | System-Dependent Named Numbers | 7.4.3 | |
| 13.7.2 | Representation Attributes | 7.3.1 | |
| 13.7.3 | Representation Attributes of Real Types | 7.2.3 | |
| 13.8 | Machine Code Insertions | 7.1.5, 7.6.3 | |
| 13.9 | Interface to Other Languages | 5.9.3, 7.1.5, 7.6.4, 7.6.7 | |
| 13.10 | Unchecked Programming | ||
| 13.10.1 | Unchecked Storage Deallocation | 5.4.3, 5.9.2, 7.6.6 | |
| 13.10.2 | Unchecked Type Conversions | 5.9.1, 7.6.7 | |
| 14. | Input-Output | 7.7 | |
| 14.1 | External Files and File Objects | ||
| 14.2 | Sequential and Direct Files | ||
| 14.2.1 | File Management | 7.7.1, 7.7.2 | |
| 14.2.2 | Sequential Input-Output | 5.9.7, 7.7.3 | |
| 14.2.3 | Specification of the Package Sequential_IO | ||
| 14.2.4 | Direct Input-Output | 5.9.7, 7.7.1, 7.7.3 | |
| 14.2.5 | Specification of the Package Direct_IO | ||
| 14.3 | Text Input-Output | 4.2.2 | |
| 14.3.1 | File Management | 7.7.2 | |
| 14.3.2 | Default Input and Output Files | ||
| 14.3.3 | Specification of Line and Page Lengths | ||
| 14.3.4 | Operations on Columns, Lines, and Pages | ||
| 14.3.5 | Get and Put Procedures | ||
| 14.3.6 | Input-Output of Characters and Strings | ||
| 14.3.7 | Input-Output for Integer Types | ||
| 14.3.8 | Input-Output for Real Types | ||
| 14.3.9 | Input-Output for Enumeration Types | ||
| 14.3.10 | Specification of the Package Text_IO | 3.2.2, 4.2.2 | |
| 14.4 | Exceptions in Input-Output | ||
| 14.5 | Specification of the Package IO_Exceptions | ||
| 14.6 | Low Level Input-Output | 7.7.4 | |
| 14.7 | Example of Input-Output | ||
| Annexes | |||
|---|---|---|---|
| A. | Predefined Language Attributes | 3.2.5, 3.4.2, 5.3.3, 5.5.1, 5.5.2, 6.2.3, 8.2.4 | |
| B. | Predefined Language Pragmas | 4.1.4, 5.9.5, 6.1.4, 6.2.4, 7.4.5, 7.4.7, 7.6.4, 9.1.1 | |
| C. | Predefined Language Environment | 3.4.1, 5.7.1, 6.1.5, 7.1.1, 7.1.6, 7.2.1, 7.5.1, 7.5.2, 7.6.3 | |
| Appendices | |||
| D. | Glossary | ||
| E. | Syntax Summary | ||
| F. | Implementation-Dependent Characteristics | 4.1.1, 5.4.1, 7.1.1, 7.1.2, 7.1.3, 7.1.5, 7.1.6, 7.2.1, 7.2.4, 7.4.3, 7.6.2, 7.6.3, 7.6.5, 7.6.8 |