Annex P (informative) Syntax Summary This Annex summarizes the complete syntax of the language. See 1.1.4 for a description of the notation used. 2.3: identifier ::= identifier_start {identifier_start | identifier_extend} 2.3: identifier_start ::= letter_uppercase | letter_lowercase | letter_titlecase | letter_modifier | letter_other | number_letter 2.3: identifier_extend ::= mark_non_spacing | mark_spacing_combining | number_decimal | punctuation_connector 2.4: numeric_literal ::= decimal_literal | based_literal 2.4.1: decimal_literal ::= numeral [.numeral] [exponent] 2.4.1: numeral ::= digit {[underline] digit} 2.4.1: exponent ::= E [+] numeral | E - numeral 2.4.1: digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 2.4.2: based_literal ::= base # based_numeral [.based_numeral] # [exponent] 2.4.2: base ::= numeral 2.4.2: based_numeral ::= extended_digit {[underline] extended_digit} 2.4.2: extended_digit ::= digit | A | B | C | D | E | F 2.5: character_literal ::= 'graphic_character' 2.6: string_literal ::= "{string_element}" 2.6: string_element ::= "" | non_quotation_mark_graphic_character 2.7: comment ::= --{non_end_of_line_character} 2.8: pragma ::= pragma identifier [(pragma_argument_association {, pragma_argument_association})]; 2.8: pragma_argument_association ::= [pragma_argument_identifier =>] name | [pragma_argument_identifier =>] expression | pragma_argument_aspect_mark => name | pragma_argument_aspect_mark => expression 3.1: basic_declaration ::= type_declaration | subtype_declaration | object_declaration | number_declaration | subprogram_declaration | abstract_subprogram_declaration | null_procedure_declaration | expression_function_declaration | package_declaration | renaming_declaration | exception_declaration | generic_declaration | generic_instantiation 3.1: defining_identifier ::= identifier 3.2.1: type_declaration ::= full_type_declaration | incomplete_type_declaration | private_type_declaration | private_extension_declaration 3.2.1: full_type_declaration ::= type defining_identifier [known_discriminant_part ] is type_definition [aspect_specification]; | task_type_declaration | protected_type_declaration 3.2.1: type_definition ::= enumeration_type_definition | integer_type_definition | real_type_definition | array_type_definition | record_type_definition | access_type_definition | derived_type_definition | interface_type_definition 3.2.2: subtype_declaration ::= subtype defining_identifier is subtype_indication [aspect_specification]; 3.2.2: subtype_indication ::= [null_exclusion] subtype_mark [constraint] 3.2.2: subtype_mark ::= subtype_name 3.2.2: constraint ::= scalar_constraint | composite_constraint 3.2.2: scalar_constraint ::= range_constraint | digits_constraint | delta_constraint 3.2.2: composite_constraint ::= index_constraint | discriminant_constraint 3.3.1: object_declaration ::= defining_identifier_list : [aliased] [constant] subtype_indication [:= expression] [aspect_specification]; | defining_identifier_list : [aliased] [constant] access_definition [:= expression] [aspect_specification]; | defining_identifier_list : [aliased] [constant] array_type_definition [:= expression] [aspect_specification]; | single_task_declaration | single_protected_declaration 3.3.1: defining_identifier_list ::= defining_identifier {, defining_identifier} 3.3.2: number_declaration ::= defining_identifier_list : constant := static_expression; 3.4: derived_type_definition ::= [abstract] [limited] new parent_subtype_indication [[and interface_list] record_extension_part] 3.5: range_constraint ::= range range 3.5: range ::= range_attribute_reference | simple_expression .. simple_expression 3.5.1: enumeration_type_definition ::= (enumeration_literal_specification {, enumeration_literal_specification}) 3.5.1: enumeration_literal_specification ::= defining_identifier | defining_character_literal 3.5.1: defining_character_literal ::= character_literal 3.5.4: integer_type_definition ::= signed_integer_type_definition | modular_type_definition 3.5.4: signed_integer_type_definition ::= range static_simple_expression .. static_simple_expression 3.5.4: modular_type_definition ::= mod static_expression 3.5.6: real_type_definition ::= floating_point_definition | fixed_point_definition 3.5.7: floating_point_definition ::= digits static_expression [real_range_specification] 3.5.7: real_range_specification ::= range static_simple_expression .. static_simple_expression 3.5.9: fixed_point_definition ::= ordinary_fixed_point_definition | decimal_fixed_point_definition 3.5.9: ordinary_fixed_point_definition ::= delta static_expression real_range_specification 3.5.9: decimal_fixed_point_definition ::= delta static_expression digits static_expression [real_range_specification] 3.5.9: digits_constraint ::= digits static_simple_expression [range_constraint] 3.6: array_type_definition ::= unconstrained_array_definition | constrained_array_definition 3.6: unconstrained_array_definition ::= array(index_subtype_definition {, index_subtype_definition }) of component_definition 3.6: index_subtype_definition ::= subtype_mark range <> 3.6: constrained_array_definition ::= array (discrete_subtype_definition {, discrete_subtype_definition}) of component_definition 3.6: discrete_subtype_definition ::= discrete_subtype_indication | range 3.6: component_definition ::= [aliased] subtype_indication | [aliased] access_definition 3.6.1: index_constraint ::= (discrete_range {, discrete_range}) 3.6.1: discrete_range ::= discrete_subtype_indication | range 3.7: discriminant_part ::= unknown_discriminant_part | known_discriminant_part 3.7: unknown_discriminant_part ::= (<>) 3.7: known_discriminant_part ::= (discriminant_specification {; discriminant_specification}) 3.7: discriminant_specification ::= defining_identifier_list : [null_exclusion] subtype_mark [:= default_expression] | defining_identifier_list : access_definition [:= default_expression] 3.7: default_expression ::= expression 3.7.1: discriminant_constraint ::= (discriminant_association {, discriminant_association}) 3.7.1: discriminant_association ::= [discriminant_selector_name {| discriminant_selector_name } =>] expression 3.8: record_type_definition ::= [[abstract] tagged] [limited] record_definition 3.8: record_definition ::= record component_list end record | null record 3.8: component_list ::= component_item {component_item} | {component_item} variant_part | null; 3.8: component_item ::= component_declaration | aspect_clause 3.8: component_declaration ::= defining_identifier_list : component_definition [:= default_expression] [aspect_specification]; 3.8.1: variant_part ::= case discriminant_direct_name is variant {variant} end case; 3.8.1: variant ::= when discrete_choice_list => component_list 3.8.1: discrete_choice_list ::= discrete_choice {| discrete_choice} 3.8.1: discrete_choice ::= choice_expression | discrete_subtype_indication | range | others 3.9.1: record_extension_part ::= with record_definition 3.9.3: abstract_subprogram_declaration ::= [overriding_indicator] subprogram_specification is abstract [aspect_specification]; 3.9.4: interface_type_definition ::= [limited | task | protected | synchronized] interface [and interface_list ] 3.9.4: interface_list ::= interface_subtype_mark {and interface_subtype_mark} 3.10: access_type_definition ::= [null_exclusion] access_to_object_definition | [null_exclusion] access_to_subprogram_definition 3.10: access_to_object_definition ::= access [general_access_modifier] subtype_indication 3.10: general_access_modifier ::= all | constant 3.10: access_to_subprogram_definition ::= access [protected] procedure parameter_profile | access [protected] function parameter_and_result_profile 3.10: null_exclusion ::= not null 3.10: access_definition ::= [null_exclusion] access [constant] subtype_mark | [null_exclusion] access [protected] procedure parameter_profile | [null_exclusion ] access [protected] function parameter_and_result_profile 3.10.1: incomplete_type_declaration ::= type defining_identifier [discriminant_part] [is tagged]; 3.11: declarative_part ::= {declarative_item} 3.11: declarative_item ::= basic_declarative_item | body 3.11: basic_declarative_item ::= basic_declaration | aspect_clause | use_clause 3.11: body ::= proper_body | body_stub 3.11: proper_body ::= subprogram_body | package_body | task_body | protected_body 4.1: name ::= direct_name | explicit_dereference | indexed_component | slice | selected_component | attribute_reference | type_conversion | function_call | character_literal | qualified_expression | generalized_reference | generalized_indexing 4.1: direct_name ::= identifier | operator_symbol 4.1: prefix ::= name | implicit_dereference 4.1: explicit_dereference ::= name.all 4.1: implicit_dereference ::= name 4.1.1: indexed_component ::= prefix(expression {, expression}) 4.1.2: slice ::= prefix(discrete_range) 4.1.3: selected_component ::= prefix . selector_name 4.1.3: selector_name ::= identifier | character_literal | operator_symbol 4.1.4: attribute_reference ::= prefix'attribute_designator 4.1.4: attribute_designator ::= identifier[(static_expression)] | Access | Delta | Digits | Mod 4.1.4: range_attribute_reference ::= prefix'range_attribute_designator 4.1.4: range_attribute_designator ::= Range[(static_expression)] 4.1.5: generalized_reference ::= reference_object_name 4.1.6: generalized_indexing ::= indexable_container_object_prefix actual_parameter_part 4.3: aggregate ::= record_aggregate | extension_aggregate | array_aggregate 4.3.1: record_aggregate ::= (record_component_association_list) 4.3.1: record_component_association_list ::= record_component_association {, record_component_association} | null record 4.3.1: record_component_association ::= [component_choice_list =>] expression | component_choice_list => <> 4.3.1: component_choice_list ::= component_selector_name {| component_selector_name} | others 4.3.2: extension_aggregate ::= (ancestor_part with record_component_association_list) 4.3.2: ancestor_part ::= expression | subtype_mark 4.3.3: array_aggregate ::= positional_array_aggregate | named_array_aggregate 4.3.3: positional_array_aggregate ::= (expression, expression {, expression}) | (expression {, expression}, others => expression) | (expression {, expression}, others => <>) 4.3.3: named_array_aggregate ::= (array_component_association {, array_component_association}) 4.3.3: array_component_association ::= discrete_choice_list => expression | discrete_choice_list => <> 4.4: expression ::= relation {and relation} | relation {and then relation} | relation {or relation} | relation {or else relation} | relation {xor relation} 4.4: choice_expression ::= choice_relation {and choice_relation} | choice_relation {or choice_relation} | choice_relation {xor choice_relation} | choice_relation {and then choice_relation} | choice_relation {or else choice_relation} 4.4: choice_relation ::= simple_expression [relational_operator simple_expression] 4.4: relation ::= simple_expression [relational_operator simple_expression] | tested_simple_expression [not] in membership_choice_list | raise_expression 4.4: membership_choice_list ::= membership_choice {| membership_choice} 4.4: membership_choice ::= choice_simple_expression | range | subtype_mark 4.4: simple_expression ::= [unary_adding_operator] term {binary_adding_operator term} 4.4: term ::= factor {multiplying_operator factor} 4.4: factor ::= primary [** primary] | abs primary | not primary 4.4: primary ::= numeric_literal | null | string_literal | aggregate | name | allocator | (expression) | (conditional_expression) | (quantified_expression) 4.5: logical_operator ::= and | or | xor 4.5: relational_operator ::= = | /= | < | <= | > | >= 4.5: binary_adding_operator ::= + | - | & 4.5: unary_adding_operator ::= + | - 4.5: multiplying_operator ::= * | / | mod | rem 4.5: highest_precedence_operator ::= ** | abs | not 4.5.7: conditional_expression ::= if_expression | case_expression 4.5.7: if_expression ::= if condition then dependent_expression {elsif condition then dependent_expression} [else dependent_expression] 4.5.7: condition ::= boolean_expression 4.5.7: case_expression ::= case selecting_expression is case_expression_alternative {, case_expression_alternative} 4.5.7: case_expression_alternative ::= when discrete_choice_list => dependent_expression 4.5.8: quantified_expression ::= for quantifier loop_parameter_specification => predicate | for quantifier iterator_specification => predicate 4.5.8: quantifier ::= all | some 4.5.8: predicate ::= boolean_expression 4.6: type_conversion ::= subtype_mark(expression) | subtype_mark(name) 4.7: qualified_expression ::= subtype_mark'(expression) | subtype_mark'aggregate 4.8: allocator ::= new [subpool_specification] subtype_indication | new [subpool_specification] qualified_expression 4.8: subpool_specification ::= (subpool_handle_name) 5.1: sequence_of_statements ::= statement {statement} {label} 5.1: statement ::= {label} simple_statement | {label} compound_statement 5.1: simple_statement ::= null_statement | assignment_statement | exit_statement | goto_statement | procedure_call_statement | simple_return_statement | entry_call_statement | requeue_statement | delay_statement | abort_statement | raise_statement | code_statement 5.1: compound_statement ::= if_statement | case_statement | loop_statement | block_statement | extended_return_statement | accept_statement | select_statement 5.1: null_statement ::= null; 5.1: label ::= <> 5.1: statement_identifier ::= direct_name 5.2: assignment_statement ::= variable_name := expression; 5.3: if_statement ::= if condition then sequence_of_statements {elsif condition then sequence_of_statements} [else sequence_of_statements] end if; 5.4: case_statement ::= case selecting_expression is case_statement_alternative {case_statement_alternative} end case; 5.4: case_statement_alternative ::= when discrete_choice_list => sequence_of_statements 5.5: loop_statement ::= [loop_statement_identifier:] [iteration_scheme] loop sequence_of_statements end loop [loop_identifier]; 5.5: iteration_scheme ::= while condition | for loop_parameter_specification | for iterator_specification 5.5: loop_parameter_specification ::= defining_identifier in [reverse] discrete_subtype_definition 5.5.2: iterator_specification ::= defining_identifier in [reverse] iterator_name | defining_identifier [: subtype_indication ] of [reverse] iterable_name 5.6: block_statement ::= [block_statement_identifier:] [declare declarative_part] begin handled_sequence_of_statements end [block_identifier]; 5.7: exit_statement ::= exit [loop_name] [when condition]; 5.8: goto_statement ::= goto label_name; 6.1: subprogram_declaration ::= [overriding_indicator] subprogram_specification [aspect_specification]; 6.1: subprogram_specification ::= procedure_specification | function_specification 6.1: procedure_specification ::= procedure defining_program_unit_name parameter_profile 6.1: function_specification ::= function defining_designator parameter_and_result_profile 6.1: designator ::= [parent_unit_name . ]identifier | operator_symbol 6.1: defining_designator ::= defining_program_unit_name | defining_operator_symbol 6.1: defining_program_unit_name ::= [parent_unit_name . ]defining_identifier 6.1: operator_symbol ::= string_literal 6.1: defining_operator_symbol ::= operator_symbol 6.1: parameter_profile ::= [formal_part] 6.1: parameter_and_result_profile ::= [formal_part] return [null_exclusion] subtype_mark | [formal_part] return access_definition 6.1: formal_part ::= (parameter_specification {; parameter_specification}) 6.1: parameter_specification ::= defining_identifier_list : [aliased] mode [null_exclusion ] subtype_mark [:= default_expression] | defining_identifier_list : access_definition [:= default_expression] 6.1: mode ::= [in] | in out | out 6.3: subprogram_body ::= [overriding_indicator] subprogram_specification [aspect_specification] is declarative_part begin handled_sequence_of_statements end [designator]; 6.4: procedure_call_statement ::= procedure_name; | procedure_prefix actual_parameter_part; 6.4: function_call ::= function_name | function_prefix actual_parameter_part 6.4: actual_parameter_part ::= (parameter_association {, parameter_association}) 6.4: parameter_association ::= [formal_parameter_selector_name =>] explicit_actual_parameter 6.4: explicit_actual_parameter ::= expression | variable_name 6.5: simple_return_statement ::= return [expression]; 6.5: extended_return_object_declaration ::= defining_identifier : [aliased][constant] return_subtype_indication [:= expression] 6.5: extended_return_statement ::= return extended_return_object_declaration [do handled_sequence_of_statements end return]; 6.5: return_subtype_indication ::= subtype_indication | access_definition 6.7: null_procedure_declaration ::= [overriding_indicator] procedure_specification is null [aspect_specification]; 6.8: expression_function_declaration ::= [overriding_indicator] function_specification is (expression) [aspect_specification]; | [overriding_indicator] function_specification is aggregate [aspect_specification]; 7.1: package_declaration ::= package_specification; 7.1: package_specification ::= package defining_program_unit_name [aspect_specification] is {basic_declarative_item} [private {basic_declarative_item}] end [[parent_unit_name.]identifier] 7.2: package_body ::= package body defining_program_unit_name [aspect_specification] is declarative_part [begin handled_sequence_of_statements] end [[parent_unit_name.]identifier]; 7.3: private_type_declaration ::= type defining_identifier [discriminant_part ] is [[abstract] tagged] [limited] private [aspect_specification]; 7.3: private_extension_declaration ::= type defining_identifier [discriminant_part] is [abstract] [limited | synchronized] new ancestor_subtype_indication [and interface_list] with private [aspect_specification]; 8.3.1: overriding_indicator ::= [not] overriding 8.4: use_clause ::= use_package_clause | use_type_clause 8.4: use_package_clause ::= use package_name {, package_name}; 8.4: use_type_clause ::= use [all] type subtype_mark {, subtype_mark}; 8.5: renaming_declaration ::= object_renaming_declaration | exception_renaming_declaration | package_renaming_declaration | subprogram_renaming_declaration | generic_renaming_declaration 8.5.1: object_renaming_declaration ::= defining_identifier : [null_exclusion] subtype_mark renames object_name [aspect_specification]; | defining_identifier : access_definition renames object_name [aspect_specification]; 8.5.2: exception_renaming_declaration ::= defining_identifier : exception renames exception_name [aspect_specification]; 8.5.3: package_renaming_declaration ::= package defining_program_unit_name renames package_name [aspect_specification]; 8.5.4: subprogram_renaming_declaration ::= [overriding_indicator] subprogram_specification renames callable_entity_name [aspect_specification]; 8.5.5: generic_renaming_declaration ::= generic package defining_program_unit_name renames generic_package_name [aspect_specification]; | generic procedure defining_program_unit_name renames generic_procedure_name [aspect_specification]; | generic function defining_program_unit_name renames generic_function_name [aspect_specification]; 9.1: task_type_declaration ::= task type defining_identifier [known_discriminant_part] [aspect_specification] [is [new interface_list with] task_definition]; 9.1: single_task_declaration ::= task defining_identifier [aspect_specification][is [new interface_list with] task_definition]; 9.1: task_definition ::= {task_item} [ private {task_item}] end [task_identifier] 9.1: task_item ::= entry_declaration | aspect_clause 9.1: task_body ::= task body defining_identifier [aspect_specification] is declarative_part begin handled_sequence_of_statements end [task_identifier]; 9.4: protected_type_declaration ::= protected type defining_identifier [known_discriminant_part] [aspect_specification] is [new interface_list with] protected_definition; 9.4: single_protected_declaration ::= protected defining_identifier [aspect_specification] is [new interface_list with] protected_definition; 9.4: protected_definition ::= { protected_operation_declaration } [ private { protected_element_declaration } ] end [protected_identifier] 9.4: protected_operation_declaration ::= subprogram_declaration | entry_declaration | aspect_clause 9.4: protected_element_declaration ::= protected_operation_declaration | component_declaration 9.4: protected_body ::= protected body defining_identifier [aspect_specification] is { protected_operation_item } end [protected_identifier]; 9.4: protected_operation_item ::= subprogram_declaration | subprogram_body | null_procedure_declaration | expression_function_declaration | entry_body | aspect_clause 9.5: synchronization_kind ::= By_Entry | By_Protected_Procedure | Optional 9.5.2: entry_declaration ::= [overriding_indicator] entry defining_identifier [(discrete_subtype_definition )] parameter_profile [aspect_specification]; 9.5.2: accept_statement ::= accept entry_direct_name [(entry_index)] parameter_profile [do handled_sequence_of_statements end [entry_identifier]]; 9.5.2: entry_index ::= expression 9.5.2: entry_body ::= entry defining_identifier entry_body_formal_part entry_barrier is declarative_part begin handled_sequence_of_statements end [entry_identifier]; 9.5.2: entry_body_formal_part ::= [(entry_index_specification )] parameter_profile 9.5.2: entry_barrier ::= when condition 9.5.2: entry_index_specification ::= for defining_identifier in discrete_subtype_definition 9.5.3: entry_call_statement ::= entry_name [actual_parameter_part]; 9.5.4: requeue_statement ::= requeue procedure_or_entry_name [with abort]; 9.6: delay_statement ::= delay_until_statement | delay_relative_statement 9.6: delay_until_statement ::= delay until delay_expression; 9.6: delay_relative_statement ::= delay delay_expression; 9.7: select_statement ::= selective_accept | timed_entry_call | conditional_entry_call | asynchronous_select 9.7.1: selective_accept ::= select [guard] select_alternative { or [guard] select_alternative } [ else sequence_of_statements ] end select; 9.7.1: guard ::= when condition => 9.7.1: select_alternative ::= accept_alternative | delay_alternative | terminate_alternative 9.7.1: accept_alternative ::= accept_statement [sequence_of_statements] 9.7.1: delay_alternative ::= delay_statement [sequence_of_statements] 9.7.1: terminate_alternative ::= terminate; 9.7.2: timed_entry_call ::= select entry_call_alternative or delay_alternative end select; 9.7.2: entry_call_alternative ::= procedure_or_entry_call [sequence_of_statements] 9.7.2: procedure_or_entry_call ::= procedure_call_statement | entry_call_statement 9.7.3: conditional_entry_call ::= select entry_call_alternative else sequence_of_statements end select; 9.7.4: asynchronous_select ::= select triggering_alternative then abort abortable_part end select; 9.7.4: triggering_alternative ::= triggering_statement [sequence_of_statements] 9.7.4: triggering_statement ::= procedure_or_entry_call | delay_statement 9.7.4: abortable_part ::= sequence_of_statements 9.8: abort_statement ::= abort task_name {, task_name}; 10.1.1: compilation ::= {compilation_unit} 10.1.1: compilation_unit ::= context_clause library_item | context_clause subunit 10.1.1: library_item ::= [private] library_unit_declaration | library_unit_body | [private] library_unit_renaming_declaration 10.1.1: library_unit_declaration ::= subprogram_declaration | package_declaration | generic_declaration | generic_instantiation 10.1.1: library_unit_renaming_declaration ::= package_renaming_declaration | generic_renaming_declaration | subprogram_renaming_declaration 10.1.1: library_unit_body ::= subprogram_body | package_body 10.1.1: parent_unit_name ::= name 10.1.2: context_clause ::= {context_item} 10.1.2: context_item ::= with_clause | use_clause 10.1.2: with_clause ::= limited_with_clause | nonlimited_with_clause 10.1.2: limited_with_clause ::= limited [private] with library_unit_name {, library_unit_name}; 10.1.2: nonlimited_with_clause ::= [private] with library_unit_name {, library_unit_name}; 10.1.3: body_stub ::= subprogram_body_stub | package_body_stub | task_body_stub | protected_body_stub 10.1.3: subprogram_body_stub ::= [overriding_indicator] subprogram_specification is separate [aspect_specification]; 10.1.3: package_body_stub ::= package body defining_identifier is separate [aspect_specification]; 10.1.3: task_body_stub ::= task body defining_identifier is separate [aspect_specification]; 10.1.3: protected_body_stub ::= protected body defining_identifier is separate [aspect_specification]; 10.1.3: subunit ::= separate (parent_unit_name) proper_body 11.1: exception_declaration ::= defining_identifier_list : exception [aspect_specification]; 11.2: handled_sequence_of_statements ::= sequence_of_statements [exception exception_handler {exception_handler}] 11.2: exception_handler ::= when [choice_parameter_specification:] exception_choice {| exception_choice} => sequence_of_statements 11.2: choice_parameter_specification ::= defining_identifier 11.2: exception_choice ::= exception_name | others 11.3: raise_statement ::= raise; | raise exception_name [with string_expression]; 11.3: raise_expression ::= raise exception_name [with string_simple_expression] 12.1: generic_declaration ::= generic_subprogram_declaration | generic_package_declaration 12.1: generic_subprogram_declaration ::= generic_formal_part subprogram_specification [aspect_specification]; 12.1: generic_package_declaration ::= generic_formal_part package_specification; 12.1: generic_formal_part ::= generic {generic_formal_parameter_declaration | use_clause} 12.1: generic_formal_parameter_declaration ::= formal_object_declaration | formal_type_declaration | formal_subprogram_declaration | formal_package_declaration 12.3: generic_instantiation ::= package defining_program_unit_name is new generic_package_name [generic_actual_part] [aspect_specification]; | [overriding_indicator] procedure defining_program_unit_name is new generic_procedure_name [generic_actual_part] [aspect_specification]; | [overriding_indicator] function defining_designator is new generic_function_name [generic_actual_part] [aspect_specification]; 12.3: generic_actual_part ::= (generic_association {, generic_association}) 12.3: generic_association ::= [generic_formal_parameter_selector_name =>] explicit_generic_actual_parameter 12.3: explicit_generic_actual_parameter ::= expression | variable_name | subprogram_name | entry_name | subtype_mark | package_instance_name 12.4: formal_object_declaration ::= defining_identifier_list : mode [null_exclusion] subtype_mark [:= default_expression] [aspect_specification]; | defining_identifier_list : mode access_definition [:= default_expression] [aspect_specification]; 12.5: formal_type_declaration ::= formal_complete_type_declaration | formal_incomplete_type_declaration 12.5: formal_complete_type_declaration ::= type defining_identifier[discriminant_part ] is formal_type_definition [aspect_specification]; 12.5: formal_incomplete_type_declaration ::= type defining_identifier[discriminant_part] [is tagged]; 12.5: 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 | formal_interface_type_definition 12.5.1: formal_private_type_definition ::= [[abstract] tagged] [limited] private 12.5.1: formal_derived_type_definition ::= [abstract] [limited | synchronized] new subtype_mark [[and interface_list]with private] 12.5.2: formal_discrete_type_definition ::= (<>) 12.5.2: formal_signed_integer_type_definition ::= range <> 12.5.2: formal_modular_type_definition ::= mod <> 12.5.2: formal_floating_point_definition ::= digits <> 12.5.2: formal_ordinary_fixed_point_definition ::= delta <> 12.5.2: formal_decimal_fixed_point_definition ::= delta <> digits <> 12.5.3: formal_array_type_definition ::= array_type_definition 12.5.4: formal_access_type_definition ::= access_type_definition 12.5.5: formal_interface_type_definition ::= interface_type_definition 12.6: formal_subprogram_declaration ::= formal_concrete_subprogram_declaration | formal_abstract_subprogram_declaration 12.6: formal_concrete_subprogram_declaration ::= with subprogram_specification [is subprogram_default] [aspect_specification]; 12.6: formal_abstract_subprogram_declaration ::= with subprogram_specification is abstract [subprogram_default] [aspect_specification]; 12.6: subprogram_default ::= default_name | <> | null 12.6: default_name ::= name 12.7: formal_package_declaration ::= with package defining_identifier is new generic_package_name formal_package_actual_part [aspect_specification]; 12.7: formal_package_actual_part ::= ([others =>] <>) | [generic_actual_part] | (formal_package_association {, formal_package_association } [, others => <>]) 12.7: formal_package_association ::= generic_association | generic_formal_parameter_selector_name => <> 13.1: aspect_clause ::= attribute_definition_clause | enumeration_representation_clause | record_representation_clause | at_clause 13.1: local_name ::= direct_name | direct_name'attribute_designator | library_unit_name 13.1.1: aspect_specification ::= with aspect_mark [=> aspect_definition] {, aspect_mark [=> aspect_definition] } 13.1.1: aspect_mark ::= aspect_identifier['Class] 13.1.1: aspect_definition ::= name | expression | identifier 13.3: attribute_definition_clause ::= for local_name'attribute_designator use expression; | for local_name'attribute_designator use name; 13.4: enumeration_representation_clause ::= for first_subtype_local_name use enumeration_aggregate; 13.4: enumeration_aggregate ::= array_aggregate 13.5.1: record_representation_clause ::= for first_subtype_local_name use record [mod_clause] {component_clause} end record; 13.5.1: component_clause ::= component_local_name at position range first_bit .. last_bit; 13.5.1: position ::= static_expression 13.5.1: first_bit ::= static_simple_expression 13.5.1: last_bit ::= static_simple_expression 13.8: code_statement ::= qualified_expression; 13.11.3: storage_pool_indicator ::= storage_pool_name | null | Standard 13.12: restriction ::= restriction_identifier | restriction_parameter_identifier => restriction_parameter_argument 13.12: restriction_parameter_argument ::= name | expression J.3: delta_constraint ::= delta static_simple_expression [range_constraint] J.7: at_clause ::= for direct_name use at expression; J.8: mod_clause ::= at mod static_expression; Syntax Cross Reference 1/3 In the following syntax cross reference, each syntactic category is followed by the subclause number where it is defined. In addition, each syntactic category S is followed by a list of the categories that use S in their definitions. For example, the first listing below shows that abort_statement appears in the definition of simple_statement. abort_statement 9.8 simple_statement 5.1 abortable_part 9.7.4 asynchronous_select 9.7.4 abstract_subprogram_declaration 3.9.3 basic_declaration 3.1 accept_alternative 9.7.1 select_alternative 9.7.1 accept_statement 9.5.2 accept_alternative 9.7.1 compound_statement 5.1 access_definition 3.10 component_definition 3.6 discriminant_specification 3.7 formal_object_declaration 12.4 object_declaration 3.3.1 object_renaming_declaration 8.5.1 parameter_and_result_profile 6.1 parameter_specification 6.1 return_subtype_indication 6.5 access_to_object_definition 3.10 access_type_definition 3.10 access_to_subprogram_definition 3.10 access_type_definition 3.10 access_type_definition 3.10 formal_access_type_definition 12.5.4 type_definition 3.2.1 actual_parameter_part 6.4 entry_call_statement 9.5.3 function_call 6.4 generalized_indexing 4.1.6 procedure_call_statement 6.4 aggregate 4.3 expression_function_declaration 6.8 primary 4.4 qualified_expression 4.7 allocator 4.8 primary 4.4 ancestor_part 4.3.2 extension_aggregate 4.3.2 array_aggregate 4.3.3 aggregate 4.3 enumeration_aggregate 13.4 array_component_association 4.3.3 named_array_aggregate 4.3.3 array_type_definition 3.6 formal_array_type_definition 12.5.3 object_declaration 3.3.1 type_definition 3.2.1 aspect_clause 13.1 basic_declarative_item 3.11 component_item 3.8 protected_operation_declaration 9.4 protected_operation_item 9.4 task_item 9.1 aspect_definition 13.1.1 aspect_specification 13.1.1 aspect_mark 13.1.1 aspect_specification 13.1.1 pragma_argument_association 2.8 aspect_specification 13.1.1 abstract_subprogram_declaration 3.9.3 component_declaration 3.8 entry_declaration 9.5.2 exception_declaration 11.1 exception_renaming_declaration 8.5.2 expression_function_declaration 6.8 formal_abstract_subprogram_declaration 12.6 formal_complete_type_declaration 12.5 formal_concrete_subprogram_declaration 12.6 formal_object_declaration 12.4 formal_package_declaration 12.7 full_type_declaration 3.2.1 generic_instantiation 12.3 generic_renaming_declaration 8.5.5 generic_subprogram_declaration 12.1 null_procedure_declaration 6.7 object_declaration 3.3.1 object_renaming_declaration 8.5.1 package_body 7.2 package_body_stub 10.1.3 package_renaming_declaration 8.5.3 package_specification 7.1 private_extension_declaration 7.3 private_type_declaration 7.3 protected_body 9.4 protected_body_stub 10.1.3 protected_type_declaration 9.4 single_protected_declaration 9.4 single_task_declaration 9.1 subprogram_body 6.3 subprogram_body_stub 10.1.3 subprogram_declaration 6.1 subprogram_renaming_declaration 8.5.4 subtype_declaration 3.2.2 task_body 9.1 task_body_stub 10.1.3 task_type_declaration 9.1 assignment_statement 5.2 simple_statement 5.1 asynchronous_select 9.7.4 select_statement 9.7 at_clause J.7 aspect_clause 13.1 attribute_definition_clause 13.3 aspect_clause 13.1 attribute_designator 4.1.4 attribute_definition_clause 13.3 attribute_reference 4.1.4 local_name 13.1 attribute_reference 4.1.4 name 4.1 base 2.4.2 based_literal 2.4.2 based_literal 2.4.2 numeric_literal 2.4 based_numeral 2.4.2 based_literal 2.4.2 basic_declaration 3.1 basic_declarative_item 3.11 basic_declarative_item 3.11 declarative_item 3.11 package_specification 7.1 binary_adding_operator 4.5 simple_expression 4.4 block_statement 5.6 compound_statement 5.1 body 3.11 declarative_item 3.11 body_stub 10.1.3 body 3.11 case_expression 4.5.7 conditional_expression 4.5.7 case_expression_alternative 4.5.7 case_expression 4.5.7 case_statement 5.4 compound_statement 5.1 case_statement_alternative 5.4 case_statement 5.4 character 2.1 comment 2.7 character_literal 2.5 defining_character_literal 3.5.1 name 4.1 selector_name 4.1.3 choice_expression 4.4 discrete_choice 3.8.1 choice_parameter_specification 11.2 exception_handler 11.2 choice_relation 4.4 choice_expression 4.4 code_statement 13.8 simple_statement 5.1 compilation_unit 10.1.1 compilation 10.1.1 component_choice_list 4.3.1 record_component_association 4.3.1 component_clause 13.5.1 record_representation_clause 13.5.1 component_declaration 3.8 component_item 3.8 protected_element_declaration 9.4 component_definition 3.6 component_declaration 3.8 constrained_array_definition 3.6 unconstrained_array_definition 3.6 component_item 3.8 component_list 3.8 component_list 3.8 record_definition 3.8 variant 3.8.1 composite_constraint 3.2.2 constraint 3.2.2 compound_statement 5.1 statement 5.1 condition 4.5.7 entry_barrier 9.5.2 exit_statement 5.7 guard 9.7.1 if_expression 4.5.7 if_statement 5.3 iteration_scheme 5.5 conditional_entry_call 9.7.3 select_statement 9.7 conditional_expression 4.5.7 primary 4.4 constrained_array_definition 3.6 array_type_definition 3.6 constraint 3.2.2 subtype_indication 3.2.2 context_clause 10.1.2 compilation_unit 10.1.1 context_item 10.1.2 context_clause 10.1.2 decimal_fixed_point_definition 3.5.9 fixed_point_definition 3.5.9 decimal_literal 2.4.1 numeric_literal 2.4 declarative_item 3.11 declarative_part 3.11 declarative_part 3.11 block_statement 5.6 entry_body 9.5.2 package_body 7.2 subprogram_body 6.3 task_body 9.1 default_expression 3.7 component_declaration 3.8 discriminant_specification 3.7 formal_object_declaration 12.4 parameter_specification 6.1 default_name 12.6 subprogram_default 12.6 defining_character_literal 3.5.1 enumeration_literal_specification 3.5.1 defining_designator 6.1 function_specification 6.1 generic_instantiation 12.3 defining_identifier 3.1 choice_parameter_specification 11.2 defining_identifier_list 3.3.1 defining_program_unit_name 6.1 entry_body 9.5.2 entry_declaration 9.5.2 entry_index_specification 9.5.2 enumeration_literal_specification 3.5.1 exception_renaming_declaration 8.5.2 extended_return_object_declaration 6.5 formal_complete_type_declaration 12.5 formal_incomplete_type_declaration 12.5 formal_package_declaration 12.7 full_type_declaration 3.2.1 incomplete_type_declaration 3.10.1 iterator_specification 5.5.2 loop_parameter_specification 5.5 object_renaming_declaration 8.5.1 package_body_stub 10.1.3 private_extension_declaration 7.3 private_type_declaration 7.3 protected_body 9.4 protected_body_stub 10.1.3 protected_type_declaration 9.4 single_protected_declaration 9.4 single_task_declaration 9.1 subtype_declaration 3.2.2 task_body 9.1 task_body_stub 10.1.3 task_type_declaration 9.1 defining_identifier_list 3.3.1 component_declaration 3.8 discriminant_specification 3.7 exception_declaration 11.1 formal_object_declaration 12.4 number_declaration 3.3.2 object_declaration 3.3.1 parameter_specification 6.1 defining_operator_symbol 6.1 defining_designator 6.1 defining_program_unit_name 6.1 defining_designator 6.1 generic_instantiation 12.3 generic_renaming_declaration 8.5.5 package_body 7.2 package_renaming_declaration 8.5.3 package_specification 7.1 procedure_specification 6.1 delay_alternative 9.7.1 select_alternative 9.7.1 timed_entry_call 9.7.2 delay_relative_statement 9.6 delay_statement 9.6 delay_statement 9.6 delay_alternative 9.7.1 simple_statement 5.1 triggering_statement 9.7.4 delay_until_statement 9.6 delay_statement 9.6 delta_constraint J.3 scalar_constraint 3.2.2 derived_type_definition 3.4 type_definition 3.2.1 designator 6.1 subprogram_body 6.3 digit 2.4.1 extended_digit 2.4.2 numeral 2.4.1 digits_constraint 3.5.9 scalar_constraint 3.2.2 direct_name 4.1 accept_statement 9.5.2 at_clause J.7 local_name 13.1 name 4.1 statement_identifier 5.1 variant_part 3.8.1 discrete_choice 3.8.1 discrete_choice_list 3.8.1 discrete_choice_list 3.8.1 array_component_association 4.3.3 case_expression_alternative 4.5.7 case_statement_alternative 5.4 variant 3.8.1 discrete_range 3.6.1 index_constraint 3.6.1 slice 4.1.2 discrete_subtype_definition 3.6 constrained_array_definition 3.6 entry_declaration 9.5.2 entry_index_specification 9.5.2 loop_parameter_specification 5.5 discriminant_association 3.7.1 discriminant_constraint 3.7.1 discriminant_constraint 3.7.1 composite_constraint 3.2.2 discriminant_part 3.7 formal_complete_type_declaration 12.5 formal_incomplete_type_declaration 12.5 incomplete_type_declaration 3.10.1 private_extension_declaration 7.3 private_type_declaration 7.3 discriminant_specification 3.7 known_discriminant_part 3.7 entry_barrier 9.5.2 entry_body 9.5.2 entry_body 9.5.2 protected_operation_item 9.4 entry_body_formal_part 9.5.2 entry_body 9.5.2 entry_call_alternative 9.7.2 conditional_entry_call 9.7.3 timed_entry_call 9.7.2 entry_call_statement 9.5.3 procedure_or_entry_call 9.7.2 simple_statement 5.1 entry_declaration 9.5.2 protected_operation_declaration 9.4 task_item 9.1 entry_index 9.5.2 accept_statement 9.5.2 entry_index_specification 9.5.2 entry_body_formal_part 9.5.2 enumeration_aggregate 13.4 enumeration_representation_clause 13.4 enumeration_literal_specification 3.5.1 enumeration_type_definition 3.5.1 enumeration_representation_clause 13.4 aspect_clause 13.1 enumeration_type_definition 3.5.1 type_definition 3.2.1 exception_choice 11.2 exception_handler 11.2 exception_declaration 11.1 basic_declaration 3.1 exception_handler 11.2 handled_sequence_of_statements 11.2 exception_renaming_declaration 8.5.2 renaming_declaration 8.5 exit_statement 5.7 simple_statement 5.1 explicit_actual_parameter 6.4 parameter_association 6.4 explicit_dereference 4.1 name 4.1 explicit_generic_actual_parameter 12.3 generic_association 12.3 exponent 2.4.1 based_literal 2.4.2 decimal_literal 2.4.1 expression 4.4 ancestor_part 4.3.2 array_component_association 4.3.3 aspect_definition 13.1.1 assignment_statement 5.2 at_clause J.7 attribute_definition_clause 13.3 attribute_designator 4.1.4 case_expression 4.5.7 case_expression_alternative 4.5.7 case_statement 5.4 condition 4.5.7 decimal_fixed_point_definition 3.5.9 default_expression 3.7 delay_relative_statement 9.6 delay_until_statement 9.6 discriminant_association 3.7.1 entry_index 9.5.2 explicit_actual_parameter 6.4 explicit_generic_actual_parameter 12.3 expression_function_declaration 6.8 extended_return_object_declaration 6.5 floating_point_definition 3.5.7 if_expression 4.5.7 indexed_component 4.1.1 mod_clause J.8 modular_type_definition 3.5.4 number_declaration 3.3.2 object_declaration 3.3.1 ordinary_fixed_point_definition 3.5.9 position 13.5.1 positional_array_aggregate 4.3.3 pragma_argument_association 2.8 predicate 4.5.8 primary 4.4 qualified_expression 4.7 raise_statement 11.3 range_attribute_designator 4.1.4 record_component_association 4.3.1 restriction_parameter_argument 13.12 simple_return_statement 6.5 type_conversion 4.6 expression_function_declaration 6.8 basic_declaration 3.1 protected_operation_item 9.4 extended_digit 2.4.2 based_numeral 2.4.2 extended_return_object_declaration 6.5 extended_return_statement 6.5 extended_return_statement 6.5 compound_statement 5.1 extension_aggregate 4.3.2 aggregate 4.3 factor 4.4 term 4.4 first_bit 13.5.1 component_clause 13.5.1 fixed_point_definition 3.5.9 real_type_definition 3.5.6 floating_point_definition 3.5.7 real_type_definition 3.5.6 formal_abstract_subprogram_declaration 12.6 formal_subprogram_declaration 12.6 formal_access_type_definition 12.5.4 formal_type_definition 12.5 formal_array_type_definition 12.5.3 formal_type_definition 12.5 formal_complete_type_declaration 12.5 formal_type_declaration 12.5 formal_concrete_subprogram_declaration 12.6 formal_subprogram_declaration 12.6 formal_decimal_fixed_point_definition 12.5.2 formal_type_definition 12.5 formal_derived_type_definition 12.5.1 formal_type_definition 12.5 formal_discrete_type_definition 12.5.2 formal_type_definition 12.5 formal_floating_point_definition 12.5.2 formal_type_definition 12.5 formal_incomplete_type_declaration 12.5 formal_type_declaration 12.5 formal_interface_type_definition 12.5.5 formal_type_definition 12.5 formal_modular_type_definition 12.5.2 formal_type_definition 12.5 formal_object_declaration 12.4 generic_formal_parameter_declaration 12.1 formal_ordinary_fixed_point_definition 12.5.2 formal_type_definition 12.5 formal_package_actual_part 12.7 formal_package_declaration 12.7 formal_package_association 12.7 formal_package_actual_part 12.7 formal_package_declaration 12.7 generic_formal_parameter_declaration 12.1 formal_part 6.1 parameter_and_result_profile 6.1 parameter_profile 6.1 formal_private_type_definition 12.5.1 formal_type_definition 12.5 formal_signed_integer_type_definition 12.5.2 formal_type_definition 12.5 formal_subprogram_declaration 12.6 generic_formal_parameter_declaration 12.1 formal_type_declaration 12.5 generic_formal_parameter_declaration 12.1 formal_type_definition 12.5 formal_complete_type_declaration 12.5 full_type_declaration 3.2.1 type_declaration 3.2.1 function_call 6.4 name 4.1 function_specification 6.1 expression_function_declaration 6.8 subprogram_specification 6.1 general_access_modifier 3.10 access_to_object_definition 3.10 generalized_indexing 4.1.6 name 4.1 generalized_reference 4.1.5 name 4.1 generic_actual_part 12.3 formal_package_actual_part 12.7 generic_instantiation 12.3 generic_association 12.3 formal_package_association 12.7 generic_actual_part 12.3 generic_declaration 12.1 basic_declaration 3.1 library_unit_declaration 10.1.1 generic_formal_parameter_declaration 12.1 generic_formal_part 12.1 generic_formal_part 12.1 generic_package_declaration 12.1 generic_subprogram_declaration 12.1 generic_instantiation 12.3 basic_declaration 3.1 library_unit_declaration 10.1.1 generic_package_declaration 12.1 generic_declaration 12.1 generic_renaming_declaration 8.5.5 library_unit_renaming_declaration 10.1.1 renaming_declaration 8.5 generic_subprogram_declaration 12.1 generic_declaration 12.1 goto_statement 5.8 simple_statement 5.1 graphic_character 2.1 character_literal 2.5 string_element 2.6 guard 9.7.1 selective_accept 9.7.1 handled_sequence_of_statements 11.2 accept_statement 9.5.2 block_statement 5.6 entry_body 9.5.2 extended_return_statement 6.5 package_body 7.2 subprogram_body 6.3 task_body 9.1 identifier 2.3 accept_statement 9.5.2 aspect_definition 13.1.1 aspect_mark 13.1.1 attribute_designator 4.1.4 block_statement 5.6 defining_identifier 3.1 designator 6.1 direct_name 4.1 entry_body 9.5.2 loop_statement 5.5 package_body 7.2 package_specification 7.1 pragma 2.8 pragma_argument_association 2.8 protected_body 9.4 protected_definition 9.4 restriction 13.12 selector_name 4.1.3 task_body 9.1 task_definition 9.1 identifier_extend 2.3 identifier 2.3 identifier_start 2.3 identifier 2.3 if_expression 4.5.7 conditional_expression 4.5.7 if_statement 5.3 compound_statement 5.1 implicit_dereference 4.1 prefix 4.1 incomplete_type_declaration 3.10.1 type_declaration 3.2.1 index_constraint 3.6.1 composite_constraint 3.2.2 index_subtype_definition 3.6 unconstrained_array_definition 3.6 indexed_component 4.1.1 name 4.1 integer_type_definition 3.5.4 type_definition 3.2.1 interface_list 3.9.4 derived_type_definition 3.4 formal_derived_type_definition 12.5.1 interface_type_definition 3.9.4 private_extension_declaration 7.3 protected_type_declaration 9.4 single_protected_declaration 9.4 single_task_declaration 9.1 task_type_declaration 9.1 interface_type_definition 3.9.4 formal_interface_type_definition 12.5.5 type_definition 3.2.1 iteration_scheme 5.5 loop_statement 5.5 iterator_specification 5.5.2 iteration_scheme 5.5 quantified_expression 4.5.8 known_discriminant_part 3.7 discriminant_part 3.7 full_type_declaration 3.2.1 protected_type_declaration 9.4 task_type_declaration 9.1 label 5.1 sequence_of_statements 5.1 statement 5.1 last_bit 13.5.1 component_clause 13.5.1 letter_lowercase ... identifier_start 2.3 letter_modifier ... identifier_start 2.3 letter_other ... identifier_start 2.3 letter_titlecase ... identifier_start 2.3 letter_uppercase ... identifier_start 2.3 library_item 10.1.1 compilation_unit 10.1.1 library_unit_body 10.1.1 library_item 10.1.1 library_unit_declaration 10.1.1 library_item 10.1.1 library_unit_renaming_declaration 10.1.1 library_item 10.1.1 limited_with_clause 10.1.2 with_clause 10.1.2 local_name 13.1 attribute_definition_clause 13.3 component_clause 13.5.1 enumeration_representation_clause 13.4 record_representation_clause 13.5.1 loop_parameter_specification 5.5 iteration_scheme 5.5 quantified_expression 4.5.8 loop_statement 5.5 compound_statement 5.1 mark_non_spacing ... identifier_extend 2.3 mark_spacing_combining ... identifier_extend 2.3 membership_choice 4.4 membership_choice_list 4.4 membership_choice_list 4.4 relation 4.4 mod_clause J.8 record_representation_clause 13.5.1 mode 6.1 formal_object_declaration 12.4 parameter_specification 6.1 modular_type_definition 3.5.4 integer_type_definition 3.5.4 multiplying_operator 4.5 term 4.4 name 4.1 abort_statement 9.8 aspect_definition 13.1.1 assignment_statement 5.2 attribute_definition_clause 13.3 default_name 12.6 entry_call_statement 9.5.3 exception_choice 11.2 exception_renaming_declaration 8.5.2 exit_statement 5.7 explicit_actual_parameter 6.4 explicit_dereference 4.1 explicit_generic_actual_parameter 12.3 formal_package_declaration 12.7 function_call 6.4 generalized_reference 4.1.5 generic_instantiation 12.3 generic_renaming_declaration 8.5.5 goto_statement 5.8 implicit_dereference 4.1 iterator_specification 5.5.2 limited_with_clause 10.1.2 local_name 13.1 nonlimited_with_clause 10.1.2 object_renaming_declaration 8.5.1 package_renaming_declaration 8.5.3 parent_unit_name 10.1.1 pragma_argument_association 2.8 prefix 4.1 primary 4.4 procedure_call_statement 6.4 raise_expression 11.3 raise_statement 11.3 requeue_statement 9.5.4 restriction_parameter_argument 13.12 storage_pool_indicator 13.11.3 subpool_specification 4.8 subprogram_renaming_declaration 8.5.4 subtype_mark 3.2.2 type_conversion 4.6 use_package_clause 8.4 named_array_aggregate 4.3.3 array_aggregate 4.3.3 nonlimited_with_clause 10.1.2 with_clause 10.1.2 null_exclusion 3.10 access_definition 3.10 access_type_definition 3.10 discriminant_specification 3.7 formal_object_declaration 12.4 object_renaming_declaration 8.5.1 parameter_and_result_profile 6.1 parameter_specification 6.1 subtype_indication 3.2.2 null_procedure_declaration 6.7 basic_declaration 3.1 protected_operation_item 9.4 null_statement 5.1 simple_statement 5.1 number_decimal ... identifier_extend 2.3 number_declaration 3.3.2 basic_declaration 3.1 number_letter ... identifier_start 2.3 numeral 2.4.1 base 2.4.2 decimal_literal 2.4.1 exponent 2.4.1 numeric_literal 2.4 primary 4.4 object_declaration 3.3.1 basic_declaration 3.1 object_renaming_declaration 8.5.1 renaming_declaration 8.5 operator_symbol 6.1 defining_operator_symbol 6.1 designator 6.1 direct_name 4.1 selector_name 4.1.3 ordinary_fixed_point_definition 3.5.9 fixed_point_definition 3.5.9 overriding_indicator 8.3.1 abstract_subprogram_declaration 3.9.3 entry_declaration 9.5.2 expression_function_declaration 6.8 generic_instantiation 12.3 null_procedure_declaration 6.7 subprogram_body 6.3 subprogram_body_stub 10.1.3 subprogram_declaration 6.1 subprogram_renaming_declaration 8.5.4 package_body 7.2 library_unit_body 10.1.1 proper_body 3.11 package_body_stub 10.1.3 body_stub 10.1.3 package_declaration 7.1 basic_declaration 3.1 library_unit_declaration 10.1.1 package_renaming_declaration 8.5.3 library_unit_renaming_declaration 10.1.1 renaming_declaration 8.5 package_specification 7.1 generic_package_declaration 12.1 package_declaration 7.1 parameter_and_result_profile 6.1 access_definition 3.10 access_to_subprogram_definition 3.10 function_specification 6.1 parameter_association 6.4 actual_parameter_part 6.4 parameter_profile 6.1 accept_statement 9.5.2 access_definition 3.10 access_to_subprogram_definition 3.10 entry_body_formal_part 9.5.2 entry_declaration 9.5.2 procedure_specification 6.1 parameter_specification 6.1 formal_part 6.1 parent_unit_name 10.1.1 defining_program_unit_name 6.1 designator 6.1 package_body 7.2 package_specification 7.1 subunit 10.1.3 position 13.5.1 component_clause 13.5.1 positional_array_aggregate 4.3.3 array_aggregate 4.3.3 pragma_argument_association 2.8 pragma 2.8 predicate 4.5.8 quantified_expression 4.5.8 prefix 4.1 attribute_reference 4.1.4 function_call 6.4 generalized_indexing 4.1.6 indexed_component 4.1.1 procedure_call_statement 6.4 range_attribute_reference 4.1.4 selected_component 4.1.3 slice 4.1.2 primary 4.4 factor 4.4 private_extension_declaration 7.3 type_declaration 3.2.1 private_type_declaration 7.3 type_declaration 3.2.1 procedure_call_statement 6.4 procedure_or_entry_call 9.7.2 simple_statement 5.1 procedure_or_entry_call 9.7.2 entry_call_alternative 9.7.2 triggering_statement 9.7.4 procedure_specification 6.1 null_procedure_declaration 6.7 subprogram_specification 6.1 proper_body 3.11 body 3.11 subunit 10.1.3 protected_body 9.4 proper_body 3.11 protected_body_stub 10.1.3 body_stub 10.1.3 protected_definition 9.4 protected_type_declaration 9.4 single_protected_declaration 9.4 protected_element_declaration 9.4 protected_definition 9.4 protected_operation_declaration 9.4 protected_definition 9.4 protected_element_declaration 9.4 protected_operation_item 9.4 protected_body 9.4 protected_type_declaration 9.4 full_type_declaration 3.2.1 punctuation_connector ... identifier_extend 2.3 qualified_expression 4.7 allocator 4.8 code_statement 13.8 name 4.1 quantified_expression 4.5.8 primary 4.4 quantifier 4.5.8 quantified_expression 4.5.8 raise_expression 11.3 relation 4.4 raise_statement 11.3 simple_statement 5.1 range 3.5 discrete_choice 3.8.1 discrete_range 3.6.1 discrete_subtype_definition 3.6 membership_choice 4.4 range_constraint 3.5 range_attribute_designator 4.1.4 range_attribute_reference 4.1.4 range_attribute_reference 4.1.4 range 3.5 range_constraint 3.5 delta_constraint J.3 digits_constraint 3.5.9 scalar_constraint 3.2.2 real_range_specification 3.5.7 decimal_fixed_point_definition 3.5.9 floating_point_definition 3.5.7 ordinary_fixed_point_definition 3.5.9 real_type_definition 3.5.6 type_definition 3.2.1 record_aggregate 4.3.1 aggregate 4.3 record_component_association 4.3.1 record_component_association_list 4.3.1 record_component_association_list 4.3.1 extension_aggregate 4.3.2 record_aggregate 4.3.1 record_definition 3.8 record_extension_part 3.9.1 record_type_definition 3.8 record_extension_part 3.9.1 derived_type_definition 3.4 record_representation_clause 13.5.1 aspect_clause 13.1 record_type_definition 3.8 type_definition 3.2.1 relation 4.4 expression 4.4 relational_operator 4.5 choice_relation 4.4 relation 4.4 renaming_declaration 8.5 basic_declaration 3.1 requeue_statement 9.5.4 simple_statement 5.1 restriction_parameter_argument 13.12 restriction 13.12 return_subtype_indication 6.5 extended_return_object_declaration 6.5 scalar_constraint 3.2.2 constraint 3.2.2 select_alternative 9.7.1 selective_accept 9.7.1 select_statement 9.7 compound_statement 5.1 selected_component 4.1.3 name 4.1 selective_accept 9.7.1 select_statement 9.7 selector_name 4.1.3 component_choice_list 4.3.1 discriminant_association 3.7.1 formal_package_association 12.7 generic_association 12.3 parameter_association 6.4 selected_component 4.1.3 sequence_of_statements 5.1 abortable_part 9.7.4 accept_alternative 9.7.1 case_statement_alternative 5.4 conditional_entry_call 9.7.3 delay_alternative 9.7.1 entry_call_alternative 9.7.2 exception_handler 11.2 handled_sequence_of_statements 11.2 if_statement 5.3 loop_statement 5.5 selective_accept 9.7.1 triggering_alternative 9.7.4 signed_integer_type_definition 3.5.4 integer_type_definition 3.5.4 simple_expression 4.4 choice_relation 4.4 delta_constraint J.3 digits_constraint 3.5.9 first_bit 13.5.1 last_bit 13.5.1 membership_choice 4.4 raise_expression 11.3 range 3.5 real_range_specification 3.5.7 relation 4.4 signed_integer_type_definition 3.5.4 simple_return_statement 6.5 simple_statement 5.1 simple_statement 5.1 statement 5.1 single_protected_declaration 9.4 object_declaration 3.3.1 single_task_declaration 9.1 object_declaration 3.3.1 slice 4.1.2 name 4.1 statement 5.1 sequence_of_statements 5.1 statement_identifier 5.1 block_statement 5.6 label 5.1 loop_statement 5.5 string_element 2.6 string_literal 2.6 string_literal 2.6 operator_symbol 6.1 primary 4.4 subpool_specification 4.8 allocator 4.8 subprogram_body 6.3 library_unit_body 10.1.1 proper_body 3.11 protected_operation_item 9.4 subprogram_body_stub 10.1.3 body_stub 10.1.3 subprogram_declaration 6.1 basic_declaration 3.1 library_unit_declaration 10.1.1 protected_operation_declaration 9.4 protected_operation_item 9.4 subprogram_default 12.6 formal_abstract_subprogram_declaration 12.6 formal_concrete_subprogram_declaration 12.6 subprogram_renaming_declaration 8.5.4 library_unit_renaming_declaration 10.1.1 renaming_declaration 8.5 subprogram_specification 6.1 abstract_subprogram_declaration 3.9.3 formal_abstract_subprogram_declaration 12.6 formal_concrete_subprogram_declaration 12.6 generic_subprogram_declaration 12.1 subprogram_body 6.3 subprogram_body_stub 10.1.3 subprogram_declaration 6.1 subprogram_renaming_declaration 8.5.4 subtype_declaration 3.2.2 basic_declaration 3.1 subtype_indication 3.2.2 access_to_object_definition 3.10 allocator 4.8 component_definition 3.6 derived_type_definition 3.4 discrete_choice 3.8.1 discrete_range 3.6.1 discrete_subtype_definition 3.6 iterator_specification 5.5.2 object_declaration 3.3.1 private_extension_declaration 7.3 return_subtype_indication 6.5 subtype_declaration 3.2.2 subtype_mark 3.2.2 access_definition 3.10 ancestor_part 4.3.2 discriminant_specification 3.7 explicit_generic_actual_parameter 12.3 formal_derived_type_definition 12.5.1 formal_object_declaration 12.4 index_subtype_definition 3.6 interface_list 3.9.4 membership_choice 4.4 object_renaming_declaration 8.5.1 parameter_and_result_profile 6.1 parameter_specification 6.1 qualified_expression 4.7 subtype_indication 3.2.2 type_conversion 4.6 use_type_clause 8.4 subunit 10.1.3 compilation_unit 10.1.1 task_body 9.1 proper_body 3.11 task_body_stub 10.1.3 body_stub 10.1.3 task_definition 9.1 single_task_declaration 9.1 task_type_declaration 9.1 task_item 9.1 task_definition 9.1 task_type_declaration 9.1 full_type_declaration 3.2.1 term 4.4 simple_expression 4.4 terminate_alternative 9.7.1 select_alternative 9.7.1 timed_entry_call 9.7.2 select_statement 9.7 triggering_alternative 9.7.4 asynchronous_select 9.7.4 triggering_statement 9.7.4 triggering_alternative 9.7.4 type_conversion 4.6 name 4.1 type_declaration 3.2.1 basic_declaration 3.1 type_definition 3.2.1 full_type_declaration 3.2.1 unary_adding_operator 4.5 simple_expression 4.4 unconstrained_array_definition 3.6 array_type_definition 3.6 underline ... based_numeral 2.4.2 numeral 2.4.1 unknown_discriminant_part 3.7 discriminant_part 3.7 use_clause 8.4 basic_declarative_item 3.11 context_item 10.1.2 generic_formal_part 12.1 use_package_clause 8.4 use_clause 8.4 use_type_clause 8.4 use_clause 8.4 variant 3.8.1 variant_part 3.8.1 variant_part 3.8.1 component_list 3.8 with_clause 10.1.2 context_item 10.1.2