16. Table of Contents 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.1.3 Method of Description 1.2 Structure of the Standard 1.3 Design Goals and Sources 1.4 Language Summary 1.5 Syntax Notation 1.6 Classification of Errors 2 Lexical Elements 2.1 Character Set 2.2 Lexical Elements, Separators and Delimiters 2.3 Identifiers 2.4 Numeric Literals 2.4.1 Decimal Literals 2.4.2 Based Literals 2.5 Character Literals 2.6 String Literals 2.7 Comments 2.8 Pragmas 2.9 Reserved Words 2.10 Allowed Replacements of Characters 3 Declarations and Types 3.1 Declarations 3.2 Objects and Named Numbers 3.2.1 Object Declarations 3.2.2 Number Declarations 3.3 Types and Subtypes 3.3.1 Type Declarations 3.3.2 Subtype Declarations 3.3.3 Classification of Operations 3.4 Derived Types 3.5 Scalar Types 3.5.1 Enumeration Types 3.5.2 Character Types 3.5.3 Boolean Types 3.5.4 Integer Types 3.5.5 Operations of Discrete Types 3.5.6 Real Types 3.5.7 Floating Point Types 3.5.8 Operations of Floating Point Types 3.5.9 Fixed Point Types 3.5.10 Operations of fixed point types 3.6 Array Types 3.6.1 Index Constraints and Discrete Ranges 3.6.2 Operations of Array Types 3.6.3 The Type String 3.7 Record Types 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 3.8.1 Incomplete Type Declarations 3.8.2 Operations of Access Types 3.9 Declarative Parts 4 Names and Expressions 4.1 Names 4.1.1 Indexed Components 4.1.2 Slices 4.1.3 Selected Components 4.1.4 Attributes 4.2 Literals 4.3 Aggregates 4.3.1 Record Aggregates 4.3.2 Array Aggregates 4.4 Expressions 4.5 Operators and Expression Evaluation 4.5.1 Logical Operators and Short Circuit Control Forms 4.5.2 Relational Operators and Membership Tests 4.5.3 Adding Operators 4.5.4 Unary Operators 4.5.5 Multiplying Operators 4.5.6 Exponentiating Operator 4.5.7 Accuracy of Operations with Real Operands 4.6 Type Conversions 4.7 Qualified Expressions 4.8 Allocators 4.9 Static Expressions and Static Subtypes 4.10 Universal Expression 5 Statements 5.1 Simple and Compound Statements - Sequences of Statements 5.2 Assignment Statement 5.2.1 Array Assignments 5.3 If Statements 5.4 Case Statements 5.5 Loop Statements 5.6 Block Statements 5.7 Exit Statements 5.8 Return Statements 5.9 Goto Statements 6 Subprograms 6.1 Subprogram Declarations 6.2 Formal Parameter Modes 6.3 Subprogram Bodies 6.3.1 Conformance Rules 6.3.2 Inline Expansion of Subprograms 6.4 Subprogram Calls 6.4.1 Parameter Associations 6.4.2 Default Parameters 6.5 Function Subprograms 6.6 Parameter and Result Type Profile - Overloading of Subprograms 6.7 Overloading of Operators 7 Packages 7.1 Package Structure 7.2 Package Specifications and Declarations 7.3 Package Bodies 7.4 Private Type and Deferred Constant Declarations 7.4.1 Private Types 7.4.2 Operations of a Private Type 7.4.3 Deferred Constants 7.4.4 Limited Types 7.5 Example of a Table Management Package 7.6 Example of a Text Handling Package 8 Visibility Rules 8.1 Declarative Region 8.2 Scope of Declarations 8.3 Visibility 8.4 Use Clauses 8.5 Renaming Declarations 8.6 The Package Standard 8.7 The Context of Overload Resolution 9 Tasks 9.1 Task Specifications and Task Bodies 9.2 Task Types and Task Objects 9.3 Task Execution - Task Activation 9.4 Task Dependence - Termination of Tasks 9.5 Entries, Entry Calls and Accept Statements 9.6 Delay Statements, Duration and Time 9.7 Select Statements 9.7.1 Selective Waits 9.7.2 Conditional Entry Calls 9.7.3 Timed Entry Calls 9.8 Priorities 9.9 Task and Entry Attributes 9.10 Abort Statements 9.11 Shared Variables 9.12 Example of Tasking 10 Program Structure and Compilation Issues 10.1 Compilation Units - Library Units 10.1.1 Context Clauses - With Clauses 10.1.2 Examples of Compilation Units 10.2 Subunits of Compilation Units 10.2.1 Examples of Subunits 10.3 Order of Compilation 10.4 The Program Library 10.5 Elaboration of Library Units 10.6 Program Optimization 11 Exceptions 11.1 Exception Declarations 11.2 Exception Handlers 11.3 Raise Statements 11.4 Exception Handling 11.4.1 Exceptions Raised During the Execution of Statements 11.4.2 Exceptions Raised During the Elaboration of Declarations 11.5 Exceptions Raised During Task Communication 11.6 Exceptions and Optimization 11.7 Suppressing Checks 12 Generic Units 12.1 Generic Declarations 12.1.1 Generic Formal Objects 12.1.2 Generic Formal Types 12.1.3 Generic Formal Subprograms 12.2 Generic Bodies 12.3 Generic Instantiation 12.3.1 Matching Rules for Formal Objects 12.3.2 Matching Rules for Formal Private Types 12.3.3 Matching Rules for Formal Scalar Types 12.3.4 Matching Rules for Formal Array Types 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 13.1 Representation Clauses 13.2 Length Clause 13.3 Enumeration Representation Clauses 13.4 Record Representation Clauses 13.5 Address Clauses 13.5.1 Interrupts 13.6 Change of Representation 13.7 The Package System 13.7.1 System Dependent Named Numbers 13.7.2 Representation Attributes 13.7.3 Representation Attributes of Real Types 13.8 Machine Code Insertions 13.9 Interface to other Languages 13.10 Unchecked Programming 13.10.1 Unchecked Storage Deallocation 13.10.2 Unchecked Type Conversions 14 Input-Output 14.1 External Files and File Objects 14.2 Sequential and Direct Files 14.2.1 File Management 14.2.2 Sequential Input-Output 14.2.3 Specification of the Package Sequential_IO 14.2.4 Direct Input-Output 14.2.5 Specification of the Package Direct_IO 14.3 Text Input-Output 14.3.1 File Management 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 14.4 Exceptions in Input-Output 14.5 Specification of the Package IO_EXCEPTIONS 14.6 Low Level Input-Output 14.7 Example of Input-Output Annexes A Predefined Language Attributes B Predefined Language Pragmas C Predefined Language Environment Appendices D Glossary E Syntax Summary F Implementation Dependent Characteristics Index Postscript: Submission of Comments