Go to the first, previous, next, last section, table of contents.


Syntax Summary (informative)

  1. This Annex summarizes the complete syntax of the language. section Method of Description and Syntax Notation, for a description of the notation used.
    section Character Set
    character ::=
         graphic_character
       | format_effector
       | other_control_function
    
    section Character Set
    graphic_character ::=
         identifier_letter
       | digit
       | space_character
       | special_character
    
    section Identifiers
    identifier ::= identifier_letter {[underline] letter_or_digit}
    
    section Identifiers
    letter_or_digit ::= identifier_letter | digit
    
    section Numeric Literals
    numeric_literal ::= decimal_literal | based_literal
    
    section Decimal Literals
    decimal_literal ::= numeral [.numeral] [exponent]
    
    section Decimal Literals
    numeral ::= digit {[underline] digit}
    
    section Decimal Literals
    exponent ::= E [+] numeral | E - numeral
    
    section Based Literals
    based_literal ::= base # based_numeral [.based_numeral] # [exponent]
    
    section Based Literals
    base ::= numeral
    
    section Based Literals
    based_numeral ::= extended_digit {[underline] extended_digit}
    
    section Based Literals
    extended_digit ::= digit | A | B | C | D | E | F
    
    section Character Literals
    character_literal ::= 'graphic_character'
    
    section String Literals
    string_literal ::= "{string_element}"
    
    section String Literals
    string_element ::= "" | non_quotation_mark_graphic_character
    
    A string_element is either a pair of quotation marks (""), or a
    single graphic_character other than a quotation mark.
    
    section Comments
    comment ::= --{non_end_of_line_character}
    
    section Pragmas
    pragma ::=
       pragma identifier [(pragma_argument_association
          {, pragma_argument_association})];
    
    section Pragmas
    pragma_argument_association ::=
         [pragma_argument_identifier =>] name
       | [pragma_argument_identifier =>] expression
    
    section Declarations
    basic_declaration ::=
         type_declaration         | subtype_declaration
       | object_declaration       | number_declaration
       | subprogram_declaration   | abstract_subprogram_declaration
       | package_declaration      | renaming_declaration
       | exception_declaration    | generic_declaration
       | generic_instantiation
    
    section Declarations
    defining_identifier ::= identifier
    
    section Type Declarations
    type_declaration ::=
         full_type_declaration
       | incomplete_type_declaration
       | private_type_declaration
       | private_extension_declaration
    
    section Type Declarations
    full_type_declaration ::=
         type defining_identifier [known_discriminant_part]
           is type_definition;
       | task_type_declaration
       | protected_type_declaration
    
    section Type Declarations
    type_definition ::=
         enumeration_type_definition | integer_type_definition
       | real_type_definition        | array_type_definition
       | record_type_definition      | access_type_definition
       | derived_type_definition
    
    section Subtype Declarations
    subtype_declaration ::=
       subtype defining_identifier is subtype_indication;
    
    section Subtype Declarations
    subtype_indication ::=  subtype_mark [constraint]
    
    section Subtype Declarations
    subtype_mark ::= subtype_name
    
    section Subtype Declarations
    constraint ::= scalar_constraint | composite_constraint
    
    section Subtype Declarations
    scalar_constraint ::=
       range_constraint | digits_constraint | delta_constraint
    
    section Subtype Declarations
    composite_constraint ::=
       index_constraint | discriminant_constraint
    
    section Object Declarations
    object_declaration ::=
        defining_identifier_list : [aliased] [constant]
          subtype_indication [:= expression];
      | defining_identifier_list : [aliased] [constant]
          array_type_definition [:= expression];
      | single_task_declaration
      | single_protected_declaration
    
    section Object Declarations
    defining_identifier_list ::=
       defining_identifier {, defining_identifier}
    
    section Number Declarations
    number_declaration ::=
       defining_identifier_list : constant := static_expression;
    
    section Derived Types and Classes
    derived_type_definition ::= [abstract] new
      parent_subtype_indication [record_extension_part]
    
    section Scalar Types
    range_constraint ::= range range
    
    section Scalar Types
    range ::=
         range_attribute_reference
       | simple_expression .. simple_expression
    
    section Enumeration Types
    enumeration_type_definition ::=
       (enumeration_literal_specification
         {, enumeration_literal_specification})
    
    section Enumeration Types
    enumeration_literal_specification ::=
       defining_identifier | defining_character_literal
    
    section Enumeration Types
    defining_character_literal ::= character_literal
    
    section Integer Types
    integer_type_definition ::=
       signed_integer_type_definition | modular_type_definition
    
    section Integer Types
    signed_integer_type_definition ::=
       range static_simple_expression .. static_simple_expression
    
    section Integer Types
    modular_type_definition ::= mod static_expression
    
    section Real Types
    real_type_definition ::=
       floating_point_definition | fixed_point_definition
    
    section Floating Point Types
    floating_point_definition ::=
       digits static_expression [real_range_specification]
    
    section Floating Point Types
    real_range_specification ::=
       range static_simple_expression .. static_simple_expression
    
    section Fixed Point Types
    fixed_point_definition ::=
       ordinary_fixed_point_definition | decimal_fixed_point_definition
    
    section Fixed Point Types
    ordinary_fixed_point_definition ::=
       delta static_expression real_range_specification
    
    section Fixed Point Types
    decimal_fixed_point_definition ::=
       delta static_expression digits static_expression
         [real_range_specification]
    
    section Fixed Point Types
    digits_constraint ::=
       digits static_expression [range_constraint]
    
    section Array Types
    array_type_definition ::=
       unconstrained_array_definition | constrained_array_definition
    
    section Array Types
    unconstrained_array_definition ::=
       array(index_subtype_definition {, index_subtype_definition})
         of component_definition
    
    section Array Types
    index_subtype_definition ::= subtype_mark range <>
    
    section Array Types
    constrained_array_definition ::=
       array (discrete_subtype_definition
         {, discrete_subtype_definition}) of component_definition
    
    section Array Types
    discrete_subtype_definition ::= discrete_subtype_indication | range
    
    section Array Types
    component_definition ::= [aliased] subtype_indication
    
    section Index Constraints and Discrete Ranges
    index_constraint ::= (discrete_range {, discrete_range})
    
    section Index Constraints and Discrete Ranges
    discrete_range ::= discrete_subtype_indication | range
    
    section Discriminants
    discriminant_part ::=
       unknown_discriminant_part | known_discriminant_part
    
    section Discriminants
    unknown_discriminant_part ::= (<>)
    
    section Discriminants
    known_discriminant_part ::=
       (discriminant_specification {; discriminant_specification})
    
    section Discriminants
    discriminant_specification ::=
         defining_identifier_list : subtype_mark
           [:= default_expression]
       | defining_identifier_list : access_definition
           [:= default_expression]
    
    section Discriminants
    default_expression ::= expression
    
    section Discriminant Constraints
    discriminant_constraint ::=
       (discriminant_association {, discriminant_association})
    
    section Discriminant Constraints
    discriminant_association ::=
       [discriminant_selector_name
         {| discriminant_selector_name} =>] expression
    
    section Record Types
    record_type_definition ::=
       [[abstract] tagged] [limited] record_definition
    
    section Record Types
    record_definition ::=
         record
            component_list
         end record
       | null record
    
    section Record Types
    component_list ::=
         component_item {component_item}
       | {component_item} variant_part
       |  null;
    
    section Record Types
    component_item ::= component_declaration | representation_clause
    
    section Record Types
    component_declaration ::=
       defining_identifier_list : component_definition
         [:= default_expression];
    
    section Variant Parts and Discrete Choices
    variant_part ::=
       case discriminant_direct_name is
          variant
          {variant}
       end case;
    
    section Variant Parts and Discrete Choices
    variant ::=
       when discrete_choice_list =>
          component_list
    
    section Variant Parts and Discrete Choices
    discrete_choice_list ::= discrete_choice {| discrete_choice}
    
    section Variant Parts and Discrete Choices
    discrete_choice ::= expression | discrete_range | others
    
    section Type Extensions
    record_extension_part ::= with record_definition
    
    section Access Types
    access_type_definition ::=
         access_to_object_definition
       | access_to_subprogram_definition
    
    section Access Types
    access_to_object_definition ::=
        access [general_access_modifier] subtype_indication
    
    section Access Types
    general_access_modifier ::= all | constant
    
    section Access Types
    access_to_subprogram_definition ::=
         access [protected] procedure parameter_profile
       | access [protected] function  parameter_and_result_profile
    
    section Access Types
    access_definition ::= access subtype_mark
    
    section Incomplete Type Declarations
    incomplete_type_declaration ::=
       type defining_identifier [discriminant_part];
    
    section Declarative Parts
    declarative_part ::= {declarative_item}
    
    section Declarative Parts
    declarative_item ::= basic_declarative_item | body
    
    section Declarative Parts
    basic_declarative_item ::=
       basic_declaration | representation_clause | use_clause
    
    section Declarative Parts
    body ::= proper_body | body_stub
    
    section Declarative Parts
    proper_body ::=
       subprogram_body | package_body | task_body | protected_body
    
    section Names
    name ::=
         direct_name                | explicit_dereference
       | indexed_component          | slice
       | selected_component         | attribute_reference
       | type_conversion            | function_call
       | character_literal
    
    section Names
    direct_name ::= identifier | operator_symbol
    
    section Names
    prefix ::= name | implicit_dereference
    
    section Names
    explicit_dereference ::= name.all
    
    section Names
    implicit_dereference ::= name
    
    section Indexed Components
    indexed_component ::= prefix(expression {, expression})
    
    section Slices
    slice ::= prefix(discrete_range)
    
    section Selected Components
    selected_component ::= prefix . selector_name
    
    section Selected Components
    selector_name ::= identifier | character_literal | operator_symbol
    
    section Attributes
    attribute_reference ::= prefix'attribute_designator
    
    section Attributes
    attribute_designator ::=
         identifier[(static_expression)]
       | Access | Delta | Digits
    
    section Attributes
    range_attribute_reference ::= prefix'range_attribute_designator
    
    section Attributes
    range_attribute_designator ::= Range[(static_expression)]
    
    section Aggregates
    aggregate ::=
       record_aggregate | extension_aggregate | array_aggregate
    
    section Record Aggregates
    record_aggregate ::= (record_component_association_list)
    
    section Record Aggregates
    record_component_association_list ::=
         record_component_association {, record_component_association}
       | null record
    
    section Record Aggregates
    record_component_association ::=
       [ component_choice_list => ] expression
    
    section Record Aggregates
    component_choice_list ::=
         component_selector_name {| component_selector_name}
       | others
    
    section Extension Aggregates
    extension_aggregate ::=
    (ancestor_part with record_component_association_list)
    
    section Extension Aggregates
    ancestor_part ::= expression | subtype_mark
    
    section Array Aggregates
    array_aggregate ::=
       positional_array_aggregate | named_array_aggregate
    
    section Array Aggregates
    positional_array_aggregate ::=
         (expression, expression {, expression})
       | (expression {, expression}, others => expression)
    
    section Array Aggregates
    named_array_aggregate ::=
       (array_component_association {, array_component_association})
    
    section Array Aggregates
    array_component_association ::=
       discrete_choice_list => expression
    
    section Expressions
    expression ::=
         relation {and relation} | relation {and then relation}
       | relation {or relation}  | relation {or else relation}
       | relation {xor relation}
    
    section Expressions
    relation ::=
         simple_expression [relational_operator simple_expression]
       | simple_expression [not] in range
       | simple_expression [not] in subtype_mark
    
    section Expressions
    simple_expression ::=
       [unary_adding_operator] term {binary_adding_operator term}
    
    section Expressions
    term ::= factor {multiplying_operator factor}
    
    section Expressions
    factor ::= primary [** primary] | abs primary | not primary
    
    section Expressions
    primary ::=
         numeric_literal   | null
       | string_literal    | aggregate
       | name              | qualified_expression
       | allocator         | (expression)
    
    section Operators and Expression Evaluation
    logical_operator             ::=  and | or  | xor
    
    section Operators and Expression Evaluation
    relational_operator          ::=  =   | /=  | <   | <= | > | >=
    
    section Operators and Expression Evaluation
    binary_adding_operator       ::=  +   | -   | &
    
    section Operators and Expression Evaluation
    unary_adding_operator        ::=  +   | -
    
    section Operators and Expression Evaluation
    multiplying_operator         ::=  *   | /   | mod | rem
    
    section Operators and Expression Evaluation
    highest_precedence_operator  ::=  **  | abs | not
    
    section Type Conversions
    type_conversion ::=
         subtype_mark(expression)
       | subtype_mark(name)
    
    section Qualified Expressions
    qualified_expression ::=
       subtype_mark'(expression) | subtype_mark'aggregate
    
    section Allocators
    allocator ::=
       new subtype_indication | new qualified_expression
    
    section Simple and Compound Statements - Sequences of Statements
    sequence_of_statements ::= statement {statement}
    
    section Simple and Compound Statements - Sequences of Statements
    statement ::=
       {label} simple_statement | {label} compound_statement
    
    section Simple and Compound Statements - Sequences of Statements
    simple_statement ::= null_statement
       | assignment_statement   | exit_statement
       | goto_statement         | procedure_call_statement
       | return_statement       | entry_call_statement
       | requeue_statement      | delay_statement
       | abort_statement        | raise_statement
       | code_statement
    
    section Simple and Compound Statements - Sequences of Statements
    compound_statement ::=
         if_statement           | case_statement
       | loop_statement         | block_statement
       | accept_statement       | select_statement
    
    section Simple and Compound Statements - Sequences of Statements
    null_statement ::= null;
    
    section Simple and Compound Statements - Sequences of Statements
    label ::= <<label_statement_identifier>>
    
    section Simple and Compound Statements - Sequences of Statements
    statement_identifier ::= direct_name
    
    section Assignment Statements
    assignment_statement ::= variable_name := expression;
    
    section If Statements
    if_statement ::=
       if condition then
          sequence_of_statements
       {elsif condition then
          sequence_of_statements}
       [else
          sequence_of_statements]
       end if;
    
    section If Statements
    condition ::= boolean_expression
    
    section Case Statements
    case_statement ::=
       case expression is
          case_statement_alternative
          {case_statement_alternative}
       end case;
    
    section Case Statements
    case_statement_alternative ::=
       when discrete_choice_list =>
          sequence_of_statements
    
    section Loop Statements
    loop_statement ::=
       [loop_statement_identifier:]
          [iteration_scheme] loop
             sequence_of_statements
          end loop [loop_identifier];
    
    section Loop Statements
    iteration_scheme ::= while condition
       | for loop_parameter_specification
    
    section Loop Statements
    loop_parameter_specification ::=
       defining_identifier in [reverse] discrete_subtype_definition
    
    section Block Statements
    block_statement ::=
       [block_statement_identifier:]
          [declare
             declarative_part]
          begin
             handled_sequence_of_statements
          end [block_identifier];
    
    section Exit Statements
    exit_statement ::= exit [loop_name] [when condition];
    
    section Goto Statements
    goto_statement ::= goto label_name;
    
    section Subprogram Declarations
    subprogram_declaration ::= subprogram_specification;
    
    section Subprogram Declarations
    abstract_subprogram_declaration ::= subprogram_specification is abstract;
    
    section Subprogram Declarations
    subprogram_specification ::=
         procedure defining_program_unit_name parameter_profile
       | function defining_designator parameter_and_result_profile
    
    section Subprogram Declarations
    designator ::= [parent_unit_name . ]identifier | operator_symbol
    
    section Subprogram Declarations
    defining_designator ::=
       defining_program_unit_name | defining_operator_symbol
    
    section Subprogram Declarations
    defining_program_unit_name ::=
       [parent_unit_name . ]defining_identifier
    
    section Subprogram Declarations
    operator_symbol ::= string_literal
    
    section Subprogram Declarations
    defining_operator_symbol ::= operator_symbol
    
    section Subprogram Declarations
    parameter_profile ::= [formal_part]
    
    section Subprogram Declarations
    parameter_and_result_profile ::= [formal_part] return subtype_mark
    
    section Subprogram Declarations
    formal_part ::=
       (parameter_specification {; parameter_specification})
    
    section Subprogram Declarations
    parameter_specification ::=
         defining_identifier_list : mode subtype_mark
           [:= default_expression]
       | defining_identifier_list : access_definition
           [:= default_expression]
    
    section Subprogram Declarations
    mode ::= [in] | in out | out
    
    section Subprogram Bodies
    subprogram_body ::=
       subprogram_specification is
          declarative_part
       begin
          handled_sequence_of_statements
       end [designator];
    
    section Subprogram Calls
    procedure_call_statement ::=
         procedure_name;
       | procedure_prefix actual_parameter_part;
    
    section Subprogram Calls
    function_call ::=
         function_name
       | function_prefix actual_parameter_part
    
    section Subprogram Calls
    actual_parameter_part ::=
       (parameter_association {, parameter_association})
    
    section Subprogram Calls
    parameter_association ::=
       [formal_parameter_selector_name =>] explicit_actual_parameter
    
    section Subprogram Calls
    explicit_actual_parameter ::= expression | variable_name
    
    section Return Statements
    return_statement ::= return [expression];
    
    section Package Specifications and Declarations
    package_declaration ::= package_specification;
    
    section Package Specifications and Declarations
    package_specification ::=
       package defining_program_unit_name is
          {basic_declarative_item}
       [private
          {basic_declarative_item}]
       end [[parent_unit_name.]identifier]
    
    section Package Bodies
    package_body ::=
       package body defining_program_unit_name is
          declarative_part
       [begin
          handled_sequence_of_statements]
       end [[parent_unit_name.]identifier];
    
    section Private Types and Private Extensions
    private_type_declaration ::=
       type defining_identifier [discriminant_part] is
         [[abstract] tagged] [limited] private;
    
    section Private Types and Private Extensions
    private_extension_declaration ::=
       type defining_identifier [discriminant_part] is
         [abstract] new ancestor_subtype_indication with private;
    
    section Use Clauses
    use_clause ::= use_package_clause | use_type_clause
    
    section Use Clauses
    use_package_clause ::= use package_name {, package_name};
    
    section Use Clauses
    use_type_clause ::= use type subtype_mark {, subtype_mark};
    
    section Renaming Declarations
    renaming_declaration ::=
          object_renaming_declaration
        | exception_renaming_declaration
        | package_renaming_declaration
        | subprogram_renaming_declaration
        | generic_renaming_declaration
    
    section Object Renaming Declarations
    object_renaming_declaration ::=
       defining_identifier : subtype_mark renames object_name;
    
    section Exception Renaming Declarations
    exception_renaming_declaration ::=
       defining_identifier : exception renames exception_name;
    
    section Package Renaming Declarations
    package_renaming_declaration ::=
       package defining_program_unit_name renames package_name;
    
    section Subprogram Renaming Declarations
    subprogram_renaming_declaration ::=
       subprogram_specification renames callable_entity_name;
    
    section Generic Renaming Declarations
    generic_renaming_declaration ::=
         generic package defining_program_unit_name renames
           generic_package_name;
       | generic procedure defining_program_unit_name renames
           generic_procedure_name;
       | generic function defining_program_unit_name renames
           generic_function_name;
    
    section Task Units and Task Objects
    task_type_declaration ::=
       task type defining_identifier [known_discriminant_part]
         [is task_definition];
    
    section Task Units and Task Objects
    single_task_declaration ::=
       task defining_identifier [is task_definition];
    
    section Task Units and Task Objects
    task_definition ::=
          {task_item}
       [ private
          {task_item}]
       end [task_identifier]
    
    section Task Units and Task Objects
    task_item ::= entry_declaration | representation_clause
    
    section Task Units and Task Objects
    task_body ::=
       task body defining_identifier is
          declarative_part
       begin
          handled_sequence_of_statements
       end [task_identifier];
    
    section Protected Units and Protected Objects
    protected_type_declaration ::=
       protected type defining_identifier [known_discriminant_part] is
         protected_definition;
    
    section Protected Units and Protected Objects
    single_protected_declaration ::=
       protected defining_identifier is protected_definition;
    
    section Protected Units and Protected Objects
    protected_definition ::=
          { protected_operation_declaration }
       [ private
          { protected_element_declaration } ]
       end [protected_identifier]
    
    section Protected Units and Protected Objects
    protected_operation_declaration ::=
         subprogram_declaration
       | entry_declaration
       | representation_clause
    
    section Protected Units and Protected Objects
    protected_element_declaration ::=
       protected_operation_declaration | component_declaration
    
    section Protected Units and Protected Objects
    protected_body ::=
       protected body defining_identifier is
          { protected_operation_item }
       end [protected_identifier];
    
    section Protected Units and Protected Objects
    protected_operation_item ::=
         subprogram_declaration
       | subprogram_body
       | entry_body
       | representation_clause
    
    section Entries and Accept Statements
    entry_declaration ::=
       entry defining_identifier [(discrete_subtype_definition)]
         parameter_profile;
    
    section Entries and Accept Statements
    accept_statement ::=
       accept entry_direct_name [(entry_index)] parameter_profile [do
          handled_sequence_of_statements
       end [entry_identifier]];
    
    section Entries and Accept Statements
    entry_index ::= expression
    
    section Entries and Accept Statements
    entry_body ::=
       entry defining_identifier entry_body_formal_part entry_barrier is
          declarative_part
       begin
          handled_sequence_of_statements
       end [entry_identifier];
    
    section Entries and Accept Statements
    entry_body_formal_part ::=
       [(entry_index_specification)] parameter_profile
    
    section Entries and Accept Statements
    entry_barrier ::= when condition
    
    section Entries and Accept Statements
    entry_index_specification ::=
       for defining_identifier in discrete_subtype_definition
    
    section Entry Calls
    entry_call_statement ::= entry_name [actual_parameter_part];
    
    section Requeue Statements
    requeue_statement ::= requeue entry_name [with abort];
    
    section Delay Statements, Duration, and Time
    delay_statement ::= delay_until_statement | delay_relative_statement
    
    section Delay Statements, Duration, and Time
    delay_until_statement ::= delay until delay_expression;
    
    section Delay Statements, Duration, and Time
    delay_relative_statement ::= delay delay_expression;
    
    section Select Statements
    select_statement ::=
         selective_accept
       | timed_entry_call
       | conditional_entry_call
       | asynchronous_select
    
    section Selective Accept
    selective_accept ::=
       select
          [guard]
          select_alternative
       { or
          [guard]
          select_alternative }
       [ else
          sequence_of_statements ]
      end select;
    
    section Selective Accept
    guard ::= when condition =>
    
    section Selective Accept
    select_alternative ::=
         accept_alternative
       | delay_alternative
       | terminate_alternative
    
    section Selective Accept
    accept_alternative ::=
    accept_statement [sequence_of_statements]
    
    section Selective Accept
    delay_alternative ::=
    delay_statement [sequence_of_statements]
    
    section Selective Accept
    terminate_alternative ::= terminate;
    
    section Timed Entry Calls
    timed_entry_call ::=
       select
          entry_call_alternative
       or
          delay_alternative
       end select;
    
    section Timed Entry Calls
    entry_call_alternative ::=
       entry_call_statement [sequence_of_statements]
    
    section Conditional Entry Calls
    conditional_entry_call ::=
       select
          entry_call_alternative
       else
          sequence_of_statements
       end select;
    
    section Asynchronous Transfer of Control
    asynchronous_select ::=
       select
          triggering_alternative
       then abort
          abortable_part
       end select;
    
    section Asynchronous Transfer of Control
    triggering_alternative ::=
       triggering_statement [sequence_of_statements]
    
    section Asynchronous Transfer of Control
    triggering_statement ::= entry_call_statement | delay_statement
    
    section Asynchronous Transfer of Control
    abortable_part ::= sequence_of_statements
    
    section Abort of a Task - Abort of a Sequence of Statements
    abort_statement ::= abort task_name {, task_name};
    
    section Compilation Units - Library Units
    compilation ::= {compilation_unit}
    
    section Compilation Units - Library Units
    compilation_unit ::=
         context_clause library_item
       | context_clause subunit
    
    section Compilation Units - Library Units
    library_item ::= [private] library_unit_declaration
       | library_unit_body
       | [private] library_unit_renaming_declaration
    
    section Compilation Units - Library Units
    library_unit_declaration ::=
         subprogram_declaration | package_declaration
       | generic_declaration    | generic_instantiation
    
    section Compilation Units - Library Units
    library_unit_renaming_declaration ::=
         package_renaming_declaration
       | generic_renaming_declaration
       | subprogram_renaming_declaration
    
    section Compilation Units - Library Units
    library_unit_body ::= subprogram_body | package_body
    
    section Compilation Units - Library Units
    parent_unit_name ::= name
    
    section Context Clauses - With Clauses
    context_clause ::= {context_item}
    
    section Context Clauses - With Clauses
    context_item ::= with_clause | use_clause
    
    section Context Clauses - With Clauses
    with_clause ::= with library_unit_name {, library_unit_name};
    
    section Subunits of Compilation Units
    body_stub ::=
         subprogram_body_stub
       | package_body_stub
       | task_body_stub
       | protected_body_stub
    
    section Subunits of Compilation Units
    subprogram_body_stub ::= subprogram_specification is separate;
    
    section Subunits of Compilation Units
    package_body_stub ::= package body defining_identifier is separate;
    
    section Subunits of Compilation Units
    task_body_stub ::= task body defining_identifier is separate;
    
    section Subunits of Compilation Units
    protected_body_stub ::=
       protected body defining_identifier is separate;
    
    section Subunits of Compilation Units
    subunit ::= separate (parent_unit_name) proper_body
    
    section Exception Declarations
    exception_declaration ::= defining_identifier_list : exception;
    
    section Exception Handlers
    handled_sequence_of_statements ::=
          sequence_of_statements
       [exception
          exception_handler
          {exception_handler}]
    
    section Exception Handlers
    exception_handler ::=
      when [choice_parameter_specification:] exception_choice
        {| exception_choice} =>
         sequence_of_statements
    
    section Exception Handlers
    choice_parameter_specification ::= defining_identifier
    
    section Exception Handlers
    exception_choice ::= exception_name | others
    
    section Raise Statements
    raise_statement ::= raise [exception_name];
    
    section Generic Declarations
    generic_declaration ::=
       generic_subprogram_declaration | generic_package_declaration
    
    section Generic Declarations
    generic_subprogram_declaration ::=
       generic_formal_part subprogram_specification;
    
    section Generic Declarations
    generic_package_declaration ::=
       generic_formal_part package_specification;
    
    section Generic Declarations
    generic_formal_part ::=
       generic {generic_formal_parameter_declaration | use_clause}
    
    section Generic Declarations
    generic_formal_parameter_declaration ::=
          formal_object_declaration
        | formal_type_declaration
        | formal_subprogram_declaration
        | formal_package_declaration
    
    section Generic Instantiation
    generic_instantiation ::=
         package defining_program_unit_name is
           new generic_package_name [generic_actual_part];
       | procedure defining_program_unit_name is
           new generic_procedure_name [generic_actual_part];
       | function defining_designator is
           new generic_function_name [generic_actual_part];
    
    section Generic Instantiation
    generic_actual_part ::=
       (generic_association {, generic_association})
    
    section Generic Instantiation
    generic_association ::=
       [generic_formal_parameter_selector_name =>]
         explicit_generic_actual_parameter
    
    section Generic Instantiation
    explicit_generic_actual_parameter ::= expression | variable_name
       | subprogram_name | entry_name | subtype_mark
       | package_instance_name
    
    section Formal Objects
    formal_object_declaration ::=
       defining_identifier_list : mode subtype_mark
         [:= default_expression];
    
    section Formal Types
    formal_type_declaration ::=
       type defining_identifier[discriminant_part] is
         formal_type_definition;
    
    section Formal Types
    formal_type_definition ::=
         formal_private_type_definition
       | formal_derived_type_definition
       | formal_discrete_type_definition
       | formal_signed_integer_type_definition
       | formal_modular_type_definition
       | formal_floating_point_definition
       | formal_ordinary_fixed_point_definition
       | formal_decimal_fixed_point_definition
       | formal_array_type_definition
       | formal_access_type_definition
    
    section Formal Private and Derived Types
    formal_private_type_definition ::=
       [[abstract] tagged] [limited] private
    
    section Formal Private and Derived Types
    formal_derived_type_definition ::=
       [abstract] new subtype_mark [with private]
    
    section Formal Scalar Types
    formal_discrete_type_definition ::= (<>)
    
    section Formal Scalar Types
    formal_signed_integer_type_definition ::= range <>
    
    section Formal Scalar Types
    formal_modular_type_definition ::= mod <>
    
    section Formal Scalar Types
    formal_floating_point_definition ::= digits <>
    
    section Formal Scalar Types
    formal_ordinary_fixed_point_definition ::= delta <>
    
    section Formal Scalar Types
    formal_decimal_fixed_point_definition ::= delta <> digits <>
    
    section Formal Array Types
    formal_array_type_definition ::= array_type_definition
    
    section Formal Access Types
    formal_access_type_definition ::= access_type_definition
    
    section Formal Subprograms
    formal_subprogram_declaration ::=
       with subprogram_specification [is subprogram_default];
    
    section Formal Subprograms
    subprogram_default ::= default_name | <>
    
    section Formal Subprograms
    default_name ::= name
    
    section Formal Packages
    formal_package_declaration ::=
       with package defining_identifier is new
         generic_package_name formal_package_actual_part;
    
    section Formal Packages
    formal_package_actual_part ::= (<>) | [generic_actual_part]
    
    section Representation Items
    representation_clause ::=
         attribute_definition_clause
       | enumeration_representation_clause
       | record_representation_clause
       | at_clause
    
    section Representation Items
    local_name ::=
         direct_name
       | direct_name'attribute_designator
       | library_unit_name
    
    section Representation Attributes
    attribute_definition_clause ::=
         for local_name'attribute_designator use expression;
       | for local_name'attribute_designator use name;
    
    section Enumeration Representation Clauses
    enumeration_representation_clause ::=
       for first_subtype_local_name use enumeration_aggregate;
    
    section Enumeration Representation Clauses
    enumeration_aggregate ::= array_aggregate
    
    section Record Representation Clauses
    record_representation_clause ::=
       for first_subtype_local_name use
          record [mod_clause]
             {component_clause}
          end record;
    
    section Record Representation Clauses
    component_clause ::=
       component_local_name at position range first_bit .. last_bit;
    
    section Record Representation Clauses
    position ::= static_expression
    
    section Record Representation Clauses
    first_bit ::= static_simple_expression
    
    section Record Representation Clauses
    last_bit ::= static_simple_expression
    
    section Machine Code Insertions
    code_statement ::= qualified_expression;
    
    section Pragma Restrictions
    restriction ::= restriction_identifier
       | restriction_parameter_identifier => expression
    
    section Reduced Accuracy Subtypes
    delta_constraint ::= delta static_expression [range_constraint]
    
    section At Clauses
    at_clause ::= for direct_name use at expression;
    
    section Mod Clauses
    mod_clause ::= at mod static_expression;
    
    
    SYNTAX CROSS REFERENCE
  2. abort_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    abortable_part
       asynchronous_select                   section Asynchronous Transfer of Control
    
    abstract_subprogram_declaration
       basic_declaration                     section Declarations
    
    accept_alternative
       select_alternative                    section Selective Accept
    
    accept_statement
       accept_alternative                    section Selective Accept
       compound_statement                    section Simple and Compound Statements - Sequences of Statements
    
    access_definition
       discriminant_specification            section Discriminants
       parameter_specification               section Subprogram Declarations
    
    access_type_definition
       formal_access_type_definition         section Formal Access Types
       type_definition                       section Type Declarations
    
    access_to_object_definition
       access_type_definition                section Access Types
    
    access_to_subprogram_definition
       access_type_definition                section Access Types
    
    actual_parameter_part
       entry_call_statement                  section Entry Calls
       function_call                         section Subprogram Calls
       procedure_call_statement              section Subprogram Calls
    
    aggregate
       primary                               section Expressions
       qualified_expression                  section Qualified Expressions
    
    allocator
       primary                               section Expressions
    
    ancestor_part
       extension_aggregate                   section Extension Aggregates
    
    array_aggregate
       aggregate                             section Aggregates
       enumeration_aggregate                 section Enumeration Representation Clauses
    
    array_component_association
       named_array_aggregate                 section Array Aggregates
    
    array_type_definition
       formal_array_type_definition          section Formal Array Types
       object_declaration                    section Object Declarations
       type_definition                       section Type Declarations
    
    assignment_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    asynchronous_select
       select_statement                      section Select Statements
    
    at_clause
       representation_clause                 section Representation Items
    
    attribute_definition_clause
       representation_clause                 section Representation Items
    
    attribute_designator
       attribute_definition_clause           section Representation Attributes
       attribute_reference                   section Attributes
       local_name                            section Representation Items
    
    attribute_reference
       name                                  section Names
    
    base
       based_literal                         section Based Literals
    
    based_literal
       numeric_literal                       section Numeric Literals
    
    based_numeral
       based_literal                         section Based Literals
    
    basic_declaration
       basic_declarative_item                section Declarative Parts
    
    basic_declarative_item
       declarative_item                      section Declarative Parts
       package_specification                 section Package Specifications and Declarations
    
    binary_adding_operator
       simple_expression                     section Expressions
    
    block_statement
       compound_statement                    section Simple and Compound Statements - Sequences of Statements
    
    body
       declarative_item                      section Declarative Parts
    
    body_stub
       body                                  section Declarative Parts
    
    case_statement
       compound_statement                    section Simple and Compound Statements - Sequences of Statements
    
    case_statement_alternative
       case_statement                        section Case Statements
    
    character
       comment                               section Comments
    
    character_literal
       defining_character_literal            section Enumeration Types
       name                                  section Names
       selector_name                         section Selected Components
    
    choice_parameter_specification
       exception_handler                     section Exception Handlers
    
    code_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    compilation_unit
       compilation                           section Compilation Units - Library Units
    
    component_choice_list
       record_component_association          section Record Aggregates
    
    component_clause
       record_representation_clause          section Record Representation Clauses
    
    component_declaration
       component_item                        section Record Types
       protected_element_declaration         section Protected Units and Protected Objects
    
    component_definition
       component_declaration                 section Record Types
       constrained_array_definition          section Array Types
       unconstrained_array_definition        section Array Types
    
    component_item
       component_list                        section Record Types
    
    component_list
       record_definition                     section Record Types
       variant                               section Variant Parts and Discrete Choices
    
    composite_constraint
       constraint                            section Subtype Declarations
    
    compound_statement
       statement                             section Simple and Compound Statements - Sequences of Statements
    
    condition
       entry_barrier                         section Entries and Accept Statements
       exit_statement                        section Exit Statements
       guard                                 section Selective Accept
       if_statement                          section If Statements
       iteration_scheme                      section Loop Statements
    
    conditional_entry_call
       select_statement                      section Select Statements
    
    constrained_array_definition
       array_type_definition                 section Array Types
    
    constraint
       subtype_indication                    section Subtype Declarations
    
    context_clause
       compilation_unit                      section Compilation Units - Library Units
    
    context_item
       context_clause                        section Context Clauses - With Clauses
    
    decimal_fixed_point_definition
       fixed_point_definition                section Fixed Point Types
    
    decimal_literal
       numeric_literal                       section Numeric Literals
    
    declarative_item
       declarative_part                      section Declarative Parts
    
    declarative_part
       block_statement                       section Block Statements
       entry_body                            section Entries and Accept Statements
       package_body                          section Package Bodies
       subprogram_body                       section Subprogram Bodies
       task_body                             section Task Units and Task Objects
    default_expression
       component_declaration                 section Record Types
       discriminant_specification            section Discriminants
       formal_object_declaration             section Formal Objects
       parameter_specification               section Subprogram Declarations
    
    default_name
       subprogram_default                    section Formal Subprograms
    
    defining_character_literal
       enumeration_literal_specification     section Enumeration Types
    
    defining_designator
       generic_instantiation                 section Generic Instantiation
       subprogram_specification              section Subprogram Declarations
    
    defining_identifier
       choice_parameter_specification        section Exception Handlers
       defining_identifier_list              section Object Declarations
       defining_program_unit_name            section Subprogram Declarations
       entry_body                            section Entries and Accept Statements
       entry_declaration                     section Entries and Accept Statements
       entry_index_specification             section Entries and Accept Statements
       enumeration_literal_specification     section Enumeration Types
       exception_renaming_declaration        section Exception Renaming Declarations
       formal_package_declaration            section Formal Packages
       formal_type_declaration               section Formal Types
       full_type_declaration                 section Type Declarations
       incomplete_type_declaration           section Incomplete Type Declarations
       loop_parameter_specification          section Loop Statements
       object_renaming_declaration           section Object Renaming Declarations
       package_body_stub                     section Subunits of Compilation Units
       private_extension_declaration         section Private Types and Private Extensions
       private_type_declaration              section Private Types and Private Extensions
       protected_body                        section Protected Units and Protected Objects
       protected_body_stub                   section Subunits of Compilation Units
       protected_type_declaration            section Protected Units and Protected Objects
       single_protected_declaration          section Protected Units and Protected Objects
       single_task_declaration               section Task Units and Task Objects
       subtype_declaration                   section Subtype Declarations
       task_body                             section Task Units and Task Objects
       task_body_stub                        section Subunits of Compilation Units
       task_type_declaration                 section Task Units and Task Objects
    
    defining_identifier_list
       component_declaration                 section Record Types
       discriminant_specification            section Discriminants
       exception_declaration                 section Exception Declarations
       formal_object_declaration             section Formal Objects
       number_declaration                    section Number Declarations
       object_declaration                    section Object Declarations
       parameter_specification               section Subprogram Declarations
    
    defining_operator_symbol
       defining_designator                   section Subprogram Declarations
    
    defining_program_unit_name
       defining_designator                   section Subprogram Declarations
       generic_instantiation                 section Generic Instantiation
       generic_renaming_declaration          section Generic Renaming Declarations
       package_body                          section Package Bodies
       package_renaming_declaration          section Package Renaming Declarations
       package_specification                 section Package Specifications and Declarations
       subprogram_specification              section Subprogram Declarations
    
    delay_alternative
       select_alternative                    section Selective Accept
       timed_entry_call                      section Timed Entry Calls
    
    delay_relative_statement
       delay_statement                       section Delay Statements, Duration, and Time
    
    delay_statement
       delay_alternative                     section Selective Accept
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
       triggering_statement                  section Asynchronous Transfer of Control
    
    delay_until_statement
       delay_statement                       section Delay Statements, Duration, and Time
    
    delta_constraint
       scalar_constraint                     section Subtype Declarations
    
    derived_type_definition
       type_definition                       section Type Declarations
    
    designator
       subprogram_body                       section Subprogram Bodies
    
    digit
       extended_digit                        section Based Literals
       graphic_character                     section Character Set
       letter_or_digit                       section Identifiers
       numeral                               section Decimal Literals
    
    digits_constraint
       scalar_constraint                     section Subtype Declarations
    
    direct_name
       accept_statement                      section Entries and Accept Statements
       at_clause                             section At Clauses
       local_name                            section Representation Items
       name                                  section Names
       statement_identifier                  section Simple and Compound Statements - Sequences of Statements
       variant_part                          section Variant Parts and Discrete Choices
    
    discrete_choice
       discrete_choice_list                  section Variant Parts and Discrete Choices
    
    discrete_choice_list
       array_component_association           section Array Aggregates
       case_statement_alternative            section Case Statements
       variant                               section Variant Parts and Discrete Choices
    
    discrete_range
       discrete_choice                       section Variant Parts and Discrete Choices
       index_constraint                      section Index Constraints and Discrete Ranges
       slice                                 section Slices
    
    discrete_subtype_definition
       constrained_array_definition          section Array Types
       entry_declaration                     section Entries and Accept Statements
       entry_index_specification             section Entries and Accept Statements
       loop_parameter_specification          section Loop Statements
    
    discriminant_association
       discriminant_constraint               section Discriminant Constraints
    
    discriminant_constraint
       composite_constraint                  section Subtype Declarations
    
    discriminant_part
       formal_type_declaration               section Formal Types
       incomplete_type_declaration           section Incomplete Type Declarations
       private_extension_declaration         section Private Types and Private Extensions
       private_type_declaration              section Private Types and Private Extensions
    
    discriminant_specification
       known_discriminant_part               section Discriminants
    
    entry_barrier
       entry_body                            section Entries and Accept Statements
    
    entry_body
       protected_operation_item              section Protected Units and Protected Objects
    
    entry_body_formal_part
       entry_body                            section Entries and Accept Statements
    
    entry_call_alternative
       conditional_entry_call                section Conditional Entry Calls
       timed_entry_call                      section Timed Entry Calls
    
    entry_call_statement
       entry_call_alternative                section Timed Entry Calls
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
       triggering_statement                  section Asynchronous Transfer of Control
    
    entry_declaration
       protected_operation_declaration       section Protected Units and Protected Objects
       task_item                             section Task Units and Task Objects
    
    entry_index
       accept_statement                      section Entries and Accept Statements
    
    entry_index_specification
       entry_body_formal_part                section Entries and Accept Statements
    
    enumeration_aggregate
       enumeration_representation_clause     section Enumeration Representation Clauses
    
    enumeration_literal_specification
       enumeration_type_definition           section Enumeration Types
    
    enumeration_representation_clause
       representation_clause                 section Representation Items
    
    enumeration_type_definition
       type_definition                       section Type Declarations
    
    exception_choice
       exception_handler                     section Exception Handlers
    
    exception_declaration
       basic_declaration                     section Declarations
    
    exception_handler
       handled_sequence_of_statements        section Exception Handlers
    
    exception_renaming_declaration
       renaming_declaration                  section Renaming Declarations
    
    exit_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    explicit_actual_parameter
       parameter_association                 section Subprogram Calls
    
    explicit_dereference
       name                                  section Names
    
    explicit_generic_actual_parameter
       generic_association                   section Generic Instantiation
    
    exponent
       based_literal                         section Based Literals
       decimal_literal                       section Decimal Literals
    
    expression
       ancestor_part                         section Extension Aggregates
       array_component_association           section Array Aggregates
       assignment_statement                  section Assignment Statements
       at_clause                             section At Clauses
       attribute_definition_clause           section Representation Attributes
       attribute_designator                  section Attributes
       case_statement                        section Case Statements
       condition                             section If Statements
       decimal_fixed_point_definition        section Fixed Point Types
       default_expression                    section Discriminants
       delay_relative_statement              section Delay Statements, Duration, and Time
       delay_until_statement                 section Delay Statements, Duration, and Time
       delta_constraint                      section Reduced Accuracy Subtypes
       digits_constraint                     section Fixed Point Types
       discrete_choice                       section Variant Parts and Discrete Choices
       discriminant_association              section Discriminant Constraints
       entry_index                           section Entries and Accept Statements
       explicit_actual_parameter             section Subprogram Calls
       explicit_generic_actual_parameter     section Generic Instantiation
       floating_point_definition             section Floating Point Types
       indexed_component                     section Indexed Components
       mod_clause                            section Mod Clauses
       modular_type_definition               section Integer Types
       number_declaration                    section Number Declarations
       object_declaration                    section Object Declarations
       ordinary_fixed_point_definition       section Fixed Point Types
       position                              section Record Representation Clauses
       positional_array_aggregate            section Array Aggregates
       pragma_argument_association           section Pragmas
       primary                               section Expressions
       qualified_expression                  section Qualified Expressions
       range_attribute_designator            section Attributes
       record_component_association          section Record Aggregates
       restriction                           section Pragma Restrictions
       return_statement                      section Return Statements
       type_conversion                       section Type Conversions
    
    extended_digit
       based_numeral                         section Based Literals
    
    extension_aggregate
       aggregate                             section Aggregates
    
    factor
       term                                  section Expressions
    
    first_bit
       component_clause                      section Record Representation Clauses
    
    fixed_point_definition
       real_type_definition                  section Real Types
    
    floating_point_definition
       real_type_definition                  section Real Types
    
    formal_access_type_definition
       formal_type_definition                section Formal Types
    
    formal_array_type_definition
       formal_type_definition                section Formal Types
    
    formal_decimal_fixed_point_definition
       formal_type_definition                section Formal Types
    
    formal_derived_type_definition
       formal_type_definition                section Formal Types
    
    formal_discrete_type_definition
       formal_type_definition                section Formal Types
    
    formal_floating_point_definition
       formal_type_definition                section Formal Types
    
    formal_modular_type_definition
       formal_type_definition                section Formal Types
    
    formal_object_declaration
       generic_formal_parameter_declaration  section Generic Declarations
    
    formal_ordinary_fixed_point_definition
       formal_type_definition                section Formal Types
    
    formal_package_actual_part
       formal_package_declaration            section Formal Packages
    
    formal_package_declaration
       generic_formal_parameter_declaration  section Generic Declarations
    
    formal_part
       parameter_and_result_profile          section Subprogram Declarations
       parameter_profile                     section Subprogram Declarations
    
    formal_private_type_definition
       formal_type_definition                section Formal Types
    
    formal_signed_integer_type_definition
       formal_type_definition                section Formal Types
    
    formal_subprogram_declaration
       generic_formal_parameter_declaration  section Generic Declarations
    
    formal_type_declaration
       generic_formal_parameter_declaration  section Generic Declarations
    
    formal_type_definition
       formal_type_declaration               section Formal Types
    
    format_effector
       character                             section Character Set
    
    full_type_declaration
       type_declaration                      section Type Declarations
    
    function_call
       name                                  section Names
    
    general_access_modifier
       access_to_object_definition           section Access Types
    
    generic_actual_part
       formal_package_actual_part            section Formal Packages
       generic_instantiation                 section Generic Instantiation
    
    generic_association
       generic_actual_part                   section Generic Instantiation
    
    generic_declaration
       basic_declaration                     section Declarations
       library_unit_declaration              section Compilation Units - Library Units
    
    generic_formal_parameter_declaration
       generic_formal_part                   section Generic Declarations
    
    generic_formal_part
       generic_package_declaration           section Generic Declarations
       generic_subprogram_declaration        section Generic Declarations
    
    generic_instantiation
       basic_declaration                     section Declarations
       library_unit_declaration              section Compilation Units - Library Units
    
    generic_package_declaration
       generic_declaration                   section Generic Declarations
    
    generic_renaming_declaration
       library_unit_renaming_declaration     section Compilation Units - Library Units
       renaming_declaration                  section Renaming Declarations
    
    generic_subprogram_declaration
       generic_declaration                   section Generic Declarations
    
    goto_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    graphic_character
       character                             section Character Set
       character_literal                     section Character Literals
       string_element                        section String Literals
    
    guard
       selective_accept                      section Selective Accept
    
    handled_sequence_of_statements
       accept_statement                      section Entries and Accept Statements
       block_statement                       section Block Statements
       entry_body                            section Entries and Accept Statements
       package_body                          section Package Bodies
       subprogram_body                       section Subprogram Bodies
       task_body                             section Task Units and Task Objects
    
    identifier
       accept_statement                      section Entries and Accept Statements
       attribute_designator                  section Attributes
       block_statement                       section Block Statements
       defining_identifier                   section Declarations
       designator                            section Subprogram Declarations
       direct_name                           section Names
       entry_body                            section Entries and Accept Statements
       loop_statement                        section Loop Statements
       package_body                          section Package Bodies
       package_specification                 section Package Specifications and Declarations
       pragma                                section Pragmas
       pragma_argument_association           section Pragmas
       protected_body                        section Protected Units and Protected Objects
       protected_definition                  section Protected Units and Protected Objects
       restriction                           section Pragma Restrictions
       selector_name                         section Selected Components
       task_body                             section Task Units and Task Objects
       task_definition                       section Task Units and Task Objects
    
    identifier_letter
       graphic_character                     section Character Set
       identifier                            section Identifiers
       letter_or_digit                       section Identifiers
    
    if_statement
       compound_statement                    section Simple and Compound Statements - Sequences of Statements
    
    implicit_dereference
       prefix                                section Names
    
    incomplete_type_declaration
       type_declaration                      section Type Declarations
    
    index_constraint
       composite_constraint                  section Subtype Declarations
    
    index_subtype_definition
       unconstrained_array_definition        section Array Types
    
    indexed_component
       name                                  section Names
    
    integer_type_definition
       type_definition                       section Type Declarations
    
    iteration_scheme
       loop_statement                        section Loop Statements
    
    known_discriminant_part
       discriminant_part                     section Discriminants
       full_type_declaration                 section Type Declarations
       protected_type_declaration            section Protected Units and Protected Objects
       task_type_declaration                 section Task Units and Task Objects
    
    label
       statement                             section Simple and Compound Statements - Sequences of Statements
    
    last_bit
       component_clause                      section Record Representation Clauses
    
    letter_or_digit
       identifier                            section Identifiers
    
    library_item
       compilation_unit                      section Compilation Units - Library Units
    
    library_unit_body
       library_item                          section Compilation Units - Library Units
    
    library_unit_declaration
       library_item                          section Compilation Units - Library Units
    
    library_unit_renaming_declaration
       library_item                          section Compilation Units - Library Units
    
    local_name
       attribute_definition_clause           section Representation Attributes
       component_clause                      section Record Representation Clauses
       enumeration_representation_clause     section Enumeration Representation Clauses
       record_representation_clause          section Record Representation Clauses
    
    loop_parameter_specification
       iteration_scheme                      section Loop Statements
    
    loop_statement
       compound_statement                    section Simple and Compound Statements - Sequences of Statements
    
    mod_clause
       record_representation_clause          section Record Representation Clauses
    
    mode
       formal_object_declaration             section Formal Objects
       parameter_specification               section Subprogram Declarations
    
    modular_type_definition
       integer_type_definition               section Integer Types
    
    multiplying_operator
       term                                  section Expressions
    
    name
       abort_statement                       section Abort of a Task - Abort of a Sequence of Statements
       assignment_statement                  section Assignment Statements
       attribute_definition_clause           section Representation Attributes
       default_name                          section Formal Subprograms
       entry_call_statement                  section Entry Calls
       exception_choice                      section Exception Handlers
       exception_renaming_declaration        section Exception Renaming Declarations
       exit_statement                        section Exit Statements
       explicit_actual_parameter             section Subprogram Calls
       explicit_dereference                  section Names
       explicit_generic_actual_parameter     section Generic Instantiation
       formal_package_declaration            section Formal Packages
       function_call                         section Subprogram Calls
       generic_instantiation                 section Generic Instantiation
       generic_renaming_declaration          section Generic Renaming Declarations
       goto_statement                        section Goto Statements
       implicit_dereference                  section Names
       local_name                            section Representation Items
       object_renaming_declaration           section Object Renaming Declarations
       package_renaming_declaration          section Package Renaming Declarations
       parent_unit_name                      section Compilation Units - Library Units
       pragma_argument_association           section Pragmas
       prefix                                section Names
       primary                               section Expressions
       procedure_call_statement              section Subprogram Calls
       raise_statement                       section Raise Statements
       requeue_statement                     section Requeue Statements
       subprogram_renaming_declaration       section Subprogram Renaming Declarations
       subtype_mark                          section Subtype Declarations
       type_conversion                       section Type Conversions
       use_package_clause                    section Use Clauses
       with_clause                           section Context Clauses - With Clauses
    
    named_array_aggregate
       array_aggregate                       section Array Aggregates
    
    null_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    number_declaration
       basic_declaration                     section Declarations
    
    numeral
       base                                  section Based Literals
       decimal_literal                       section Decimal Literals
       exponent                              section Decimal Literals
    
    numeric_literal
       primary                               section Expressions
    
    object_declaration
       basic_declaration                     section Declarations
    
    object_renaming_declaration
       renaming_declaration                  section Renaming Declarations
    
    operator_symbol
       defining_operator_symbol              section Subprogram Declarations
       designator                            section Subprogram Declarations
       direct_name                           section Names
       selector_name                         section Selected Components
    
    ordinary_fixed_point_definition
       fixed_point_definition                section Fixed Point Types
    
    other_control_function
       character                             section Character Set
    
    package_body
       library_unit_body                     section Compilation Units - Library Units
       proper_body                           section Declarative Parts
    
    package_body_stub
       body_stub                             section Subunits of Compilation Units
    
    package_declaration
       basic_declaration                     section Declarations
       library_unit_declaration              section Compilation Units - Library Units
    
    package_renaming_declaration
       library_unit_renaming_declaration     section Compilation Units - Library Units
       renaming_declaration                  section Renaming Declarations
    
    package_specification
       generic_package_declaration           section Generic Declarations
       package_declaration                   section Package Specifications and Declarations
    
    parameter_and_result_profile
       access_to_subprogram_definition       section Access Types
       subprogram_specification              section Subprogram Declarations
    
    parameter_association
       actual_parameter_part                 section Subprogram Calls
    
    parameter_profile
       accept_statement                      section Entries and Accept Statements
       access_to_subprogram_definition       section Access Types
       entry_body_formal_part                section Entries and Accept Statements
       entry_declaration                     section Entries and Accept Statements
       subprogram_specification              section Subprogram Declarations
    
    parameter_specification
       formal_part                           section Subprogram Declarations
    
    parent_unit_name
       defining_program_unit_name            section Subprogram Declarations
       designator                            section Subprogram Declarations
       package_body                          section Package Bodies
       package_specification                 section Package Specifications and Declarations
       subunit                               section Subunits of Compilation Units
    
    position
       component_clause                      section Record Representation Clauses
    
    positional_array_aggregate
       array_aggregate                       section Array Aggregates
    
    pragma_argument_association
       pragma                                section Pragmas
    
    prefix
       attribute_reference                   section Attributes
       function_call                         section Subprogram Calls
       indexed_component                     section Indexed Components
       procedure_call_statement              section Subprogram Calls
       range_attribute_reference             section Attributes
       selected_component                    section Selected Components
       slice                                 section Slices
    
    primary
       factor                                section Expressions
    
    private_extension_declaration
       type_declaration                      section Type Declarations
    
    private_type_declaration
       type_declaration                      section Type Declarations
    
    procedure_call_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    proper_body
       body                                  section Declarative Parts
       subunit                               section Subunits of Compilation Units
    
    protected_body
       proper_body                           section Declarative Parts
    
    protected_body_stub
       body_stub                             section Subunits of Compilation Units
    
    protected_definition
       protected_type_declaration            section Protected Units and Protected Objects
       single_protected_declaration          section Protected Units and Protected Objects
    
    protected_element_declaration
       protected_definition                  section Protected Units and Protected Objects
    
    protected_operation_declaration
       protected_definition                  section Protected Units and Protected Objects
       protected_element_declaration         section Protected Units and Protected Objects
    
    protected_operation_item
       protected_body                        section Protected Units and Protected Objects
    
    protected_type_declaration
       full_type_declaration                 section Type Declarations
    
    qualified_expression
       allocator                             section Allocators
       code_statement                        section Machine Code Insertions
       primary                               section Expressions
    
    raise_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    range
       discrete_range                        section Index Constraints and Discrete Ranges
       discrete_subtype_definition           section Array Types
       range_constraint                      section Scalar Types
       relation                              section Expressions
    
    range_attribute_designator
       range_attribute_reference             section Attributes
    
    range_attribute_reference
       range                                 section Scalar Types
    
    range_constraint
       delta_constraint                      section Reduced Accuracy Subtypes
       digits_constraint                     section Fixed Point Types
       scalar_constraint                     section Subtype Declarations
    
    real_range_specification
       decimal_fixed_point_definition        section Fixed Point Types
       floating_point_definition             section Floating Point Types
       ordinary_fixed_point_definition       section Fixed Point Types
    
    real_type_definition
       type_definition                       section Type Declarations
    
    record_aggregate
       aggregate                             section Aggregates
    
    record_component_association
       record_component_association_list     section Record Aggregates
    
    record_component_association_list
       extension_aggregate                   section Extension Aggregates
       record_aggregate                      section Record Aggregates
    
    record_definition
       record_extension_part                 section Type Extensions
       record_type_definition                section Record Types
    
    record_extension_part
       derived_type_definition               section Derived Types and Classes
    
    record_representation_clause
       representation_clause                 section Representation Items
    
    record_type_definition
       type_definition                       section Type Declarations
    
    relation
       expression                            section Expressions
    
    relational_operator
       relation                              section Expressions
    
    renaming_declaration
       basic_declaration                     section Declarations
    
    representation_clause
       basic_declarative_item                section Declarative Parts
       component_item                        section Record Types
       protected_operation_declaration       section Protected Units and Protected Objects
       protected_operation_item              section Protected Units and Protected Objects
       task_item                             section Task Units and Task Objects
    
    requeue_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    return_statement
       simple_statement                      section Simple and Compound Statements - Sequences of Statements
    
    scalar_constraint
       constraint                            section Subtype Declarations
    
    select_alternative
       selective_accept                      section Selective Accept
    
    select_statement
       compound_statement                    section Simple and Compound Statements - Sequences of Statements
    
    selected_component
       name                                  section Names
    
    selective_accept
       select_statement                      section Select Statements
    
    selector_name
       component_choice_list                 section Record Aggregates
       discriminant_association              section Discriminant Constraints
       generic_association                   section Generic Instantiation
       parameter_association                 section Subprogram Calls
       selected_component                    section Selected Components
    
    sequence_of_statements
       abortable_part                        section Asynchronous Transfer of Control
       accept_alternative                    section Selective Accept
       case_statement_alternative            section Case Statements
       conditional_entry_call                section Conditional Entry Calls
       delay_alternative                     section Selective Accept
       entry_call_alternative                section Timed Entry Calls
       exception_handler                     section Exception Handlers
       handled_sequence_of_statements        section Exception Handlers
       if_statement                          section If Statements
       loop_statement                        section Loop Statements
       selective_accept                      section Selective Accept
       triggering_alternative                section Asynchronous Transfer of Control
    
    signed_integer_type_definition
       integer_type_definition               section Integer Types
    
    simple_expression
       first_bit                             section Record Representation Clauses
       last_bit                              section Record Representation Clauses
       range                                 section Scalar Types
       real_range_specification              section Floating Point Types
       relation                              section Expressions
       signed_integer_type_definition        section Integer Types
    
    simple_statement
       statement                             section Simple and Compound Statements - Sequences of Statements
    
    single_protected_declaration
       object_declaration                    section Object Declarations
    
    single_task_declaration
       object_declaration                    section Object Declarations
    
    slice
       name                                  section Names
    
    space_character
       graphic_character                     section Character Set
    
    special_character
       graphic_character                     section Character Set
    
    statement
       sequence_of_statements                section Simple and Compound Statements - Sequences of Statements
    
    statement_identifier
       block_statement                       section Block Statements
       label                                 section Simple and Compound Statements - Sequences of Statements
       loop_statement                        section Loop Statements
    string_element
       string_literal                        section String Literals
    
    string_literal
       operator_symbol                       section Subprogram Declarations
       primary                               section Expressions
    
    subprogram_body
       library_unit_body                     section Compilation Units - Library Units
       proper_body                           section Declarative Parts
       protected_operation_item              section Protected Units and Protected Objects
    
    subprogram_body_stub
       body_stub                             section Subunits of Compilation Units
    
    subprogram_declaration
       basic_declaration                     section Declarations
       library_unit_declaration              section Compilation Units - Library Units
       protected_operation_declaration       section Protected Units and Protected Objects
       protected_operation_item              section Protected Units and Protected Objects
    
    subprogram_default
       formal_subprogram_declaration         section Formal Subprograms
    
    subprogram_renaming_declaration
       library_unit_renaming_declaration     section Compilation Units - Library Units
       renaming_declaration                  section Renaming Declarations
    
    subprogram_specification
       abstract_subprogram_declaration       section Subprogram Declarations
       formal_subprogram_declaration         section Formal Subprograms
       generic_subprogram_declaration        section Generic Declarations
       subprogram_body                       section Subprogram Bodies
       subprogram_body_stub                  section Subunits of Compilation Units
       subprogram_declaration                section Subprogram Declarations
       subprogram_renaming_declaration       section Subprogram Renaming Declarations
    
    subtype_declaration
       basic_declaration                     section Declarations
    
    subtype_indication
       access_to_object_definition           section Access Types
       allocator                             section Allocators
       component_definition                  section Array Types
       derived_type_definition               section Derived Types and Classes
       discrete_range                        section Index Constraints and Discrete Ranges
       discrete_subtype_definition           section Array Types
       object_declaration                    section Object Declarations
       private_extension_declaration         section Private Types and Private Extensions
       subtype_declaration                   section Subtype Declarations
    
    subtype_mark
       access_definition                     section Access Types
       ancestor_part                         section Extension Aggregates
       discriminant_specification            section Discriminants
       explicit_generic_actual_parameter     section Generic Instantiation
       formal_derived_type_definition        section Formal Private and Derived Types
       formal_object_declaration             section Formal Objects
       index_subtype_definition              section Array Types
       object_renaming_declaration           section Object Renaming Declarations
       parameter_and_result_profile          section Subprogram Declarations
       parameter_specification               section Subprogram Declarations
       qualified_expression                  section Qualified Expressions
       relation                              section Expressions
       subtype_indication                    section Subtype Declarations
       type_conversion                       section Type Conversions
       use_type_clause                       section Use Clauses
    
    subunit
       compilation_unit                      section Compilation Units - Library Units
    
    task_body
       proper_body                           section Declarative Parts
    
    task_body_stub
       body_stub                             section Subunits of Compilation Units
    
    task_definition
       single_task_declaration               section Task Units and Task Objects
       task_type_declaration                 section Task Units and Task Objects
    
    task_item
       task_definition                       section Task Units and Task Objects
    
    task_type_declaration
       full_type_declaration                 section Type Declarations
    
    term
       simple_expression                     section Expressions
    
    terminate_alternative
       select_alternative                    section Selective Accept
    
    timed_entry_call
       select_statement                      section Select Statements
    
    triggering_alternative
       asynchronous_select                   section Asynchronous Transfer of Control
    
    triggering_statement
       triggering_alternative                section Asynchronous Transfer of Control
    
    type_conversion
       name                                  section Names
    
    type_declaration
       basic_declaration                     section Declarations
    
    type_definition
       full_type_declaration                 section Type Declarations
    
    unary_adding_operator
       simple_expression                     section Expressions
    
    unconstrained_array_definition
       array_type_definition                 section Array Types
    
    underline
       based_numeral                         section Based Literals
       identifier                            section Identifiers
       numeral                               section Decimal Literals
    
    unknown_discriminant_part
       discriminant_part                     section Discriminants
    
    use_clause
       basic_declarative_item                section Declarative Parts
       context_item                          section Context Clauses - With Clauses
       generic_formal_part                   section Generic Declarations
    
    use_package_clause
       use_clause                            section Use Clauses
    
    use_type_clause
       use_clause                            section Use Clauses
    
    variant
       variant_part                          section Variant Parts and Discrete Choices
    
    variant_part
       component_list                        section Record Types
    
    with_clause
       context_item                          section Context Clauses - With Clauses
    

Index

Index entries are given by paragraph number. A list of all
language-defined library units may be found under Language-Defined
Library Units. A list of all language-defined types may be found under
Language-Defined Types.

Operator index

&  operator    section Expressions(1), section Binary Adding Operators(1), section Binary Adding Operators(3)

*  operator    section Expressions(1), section Multiplying Operators(1), section Multiplying Operators(1)
** operator    section Expressions(1), section Highest Precedence Operators(1), section Highest Precedence Operators(7)

+  operator    section Expressions(1), section Binary Adding Operators(1), section Unary Adding Operators(1), see section Binary Adding Operators(1), see section Unary Adding Operators(1)

=  operator    section Expressions(1), section Relational Operators and Membership Tests(1), section Relational Operators and Membership Tests(1)

-  operator    section Expressions(1), section Binary Adding Operators(1), section Unary Adding Operators(1), see section Binary Adding Operators(1), see section Unary Adding Operators(1)

/  operator    section Expressions(1), section Multiplying Operators(1), section Multiplying Operators(1)
/= operator    section Expressions(1), section Relational Operators and Membership Tests(1), section Relational Operators and Membership Tests(1)

<  operator    section Expressions(1), section Relational Operators and Membership Tests(1), section Relational Operators and Membership Tests(1)
<= operator    section Expressions(1), section Relational Operators and Membership Tests(1), section Relational Operators and Membership Tests(1)

>  operator    section Expressions(1), section Relational Operators and Membership Tests(1), section Relational Operators and Membership Tests(1)
>= operator    section Expressions(1), section Relational Operators and Membership Tests(1), section Relational Operators and Membership Tests(1)

Digits index

10646-1:1993, ISO/IEC standard    section Normative References.
1539:1991,    ISO/IEC standard    section Normative References.
1989:1985,    ISO standard        section Normative References.

6429:1992,    ISO/IEC standard    section Normative References.
646:1991,     ISO/IEC standard    section Normative References.

8859-1:1987,  ISO/IEC standard    section Normative References.

9899:1990,    ISO/IEC standard    section Normative References.


Go to the first, previous, next, last section, table of contents.