================================================================================ Range attribute ================================================================================ procedure P is A : MyArray (B'Range (1)); begin for E in Arr'Range loop null; end loop; for E in Arr'Range (1) loop null; end loop; end; -------------------------------------------------------------------------------- (compilation (compilation_unit (proper_body (subprogram_body (subprogram_specification (procedure_specification (identifier))) (non_empty_declarative_part (declarative_item_pragma (object_declaration (defining_identifier_list (identifier)) (subtype_indication (identifier) (constraint (index_constraint (discrete_range (range_g (identifier) (tick) (range_attribute_designator (expression (relation (simple_expression (term (factor (primary (numeric_literal)))))))))))))))) (handled_sequence_of_statements (sequence_of_statements (statement (compound_statement (loop_statement (iteration_scheme (loop_parameter_specification (identifier) (discrete_subtype_definition (range_g (identifier) (tick) (range_attribute_designator))))) (sequence_of_statements (statement (simple_statement (null_statement))))))) (statement (compound_statement (loop_statement (iteration_scheme (loop_parameter_specification (identifier) (discrete_subtype_definition (range_g (identifier) (tick) (range_attribute_designator (expression (relation (simple_expression (term (factor (primary (numeric_literal)))))))))))) (sequence_of_statements (statement (simple_statement (null_statement))))))))))))) ================================================================================ Reduction ================================================================================ procedure P is X : Integer := [parallel for Val of M when Val > 100.0 => (Val, 1)] 'Reduce("+", 0); begin null; end; -------------------------------------------------------------------------------- (compilation (compilation_unit (proper_body (subprogram_body (subprogram_specification (procedure_specification (identifier))) (non_empty_declarative_part (declarative_item_pragma (object_declaration (defining_identifier_list (identifier)) (subtype_indication (identifier)) (assign_value (expression (relation (simple_expression (term (factor (primary (attribute_reference (reduction_attribute_reference (value_sequence (iterated_element_association (iterator_specification (identifier) (identifier) (iterator_filter (expression (relation (simple_expression (term (factor (primary (identifier))))) (relational_operator) (simple_expression (term (factor (primary (numeric_literal))))))))) (expression (relation (simple_expression (term (factor (primary (aggregate (array_aggregate (positional_array_aggregate (expression (relation (simple_expression (term (factor (primary (identifier))))))) (expression (relation (simple_expression (term (factor (primary (numeric_literal)))))))))))))))))) (tick) (reduction_attribute_designator (identifier) (reduction_specification (string_literal) (expression (relation (simple_expression (term (factor (primary (numeric_literal))))))))))))))))))))) (handled_sequence_of_statements (sequence_of_statements (statement (simple_statement (null_statement)))))))))