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