Skip to content

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
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information