Double parenthesis in array incomplete type syntax
The LRM 2019 syntax for array incomplete type with index constraint requires double parenthesis like:
package p is
generic(
constant c : type is array ( (1 to 2) ) of bit; --generic constant
);
end package;
array_incomplete_type_definition ::= [§ 5.8.1] array ( array_index_incomplete_type_list ) of element_incomplete_subtype_indication array_index_incomplete_type_list ::= [§ 5.8.1] array_index_incomplete_type { , array_index_incomplete_type } array_index_incomplete_type ::= [§ 5.8.1] index_subtype_definition | index_constraint | unspecified_type_indication index_constraint ::= ( discrete_range { , discrete_range } ) [§ 5.3.2.1]
This doesn't seem correct to me. "index_constraint" should be replaced or maybe syntax should be divided like for "regular" arrays:
array_type_definition ::= [§ 5.3.2.1] unbounded_array_definition | constrained_array_definition unbounded_array_definition ::= [§ 5.3.2.1] array ( index_subtype_definition { , index_subtype_definition } ) of element_subtype_indication constrained_array_definition ::= [§ 5.3.2.1] array index_constraint of element_subtype_indication
Edited by Krzysztof Żyła