|
LCS-2016-080b |
|
2 |
|
18-Dec-16 |
|
Ballot |
|
Brent Hayhoe |
|
|
|
Deferred Shared Variables |
|
Clarification of semantics in BNF productions relating to 'subtype indications' and 'package declarative items' |
|
LCS-2016-80a |
entity_declarative_part ::=
{ entity_declarative_item }
entity_declarative_item ::=
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonsequential_package_declaration
| nonsequential_package_body
| nonsequential_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_signal_declaration
| shared_normal_shared_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration
| PSL_Property_Declaration
| PSL_Sequence_Declaration
| PSL_Clock_Declaration
architecture_declarative_part ::=
{ block_declarative_item }
block_declarative_item ::=
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonsequential_package_declaration
| nonsequential_package_body
| nonsequential_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_signal_declaration
| shared_normal_shared_variable_declaration
| file_declaration
| alias_declaration
| component_declaration
| attribute_declaration
| attribute_specification
| configuration_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration
| PSL_Property_Declaration
| PSL_Sequence_Declaration
| PSL_Clock_Declaration
subprogram_body ::=
subprogram_specification is
subprogram_declarative_part
begin
subprogram_statement_part
end [ subprogram_kind ] [ designator ] ;
subprogram_declarative_part ::=
{ subprogram_declarative_item }
subprogram_declarative_item ::=
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonconcurrent_package_declaration
| nonconcurrent_package_body
| nonconcurrent_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| use_clause
| group_template_declaration
| group_declaration
subprogram_statement_part ::=
{ sequential_statement }
subprogram_kind ::= procedure | function
array_type_definition ::=
unbounded_array_definition | constrained_array_definition
unbounded_array_definition ::=
array ( index_subtype_definition { , index_subtype_definition } )
of array_element_subtype_indication
constrained_array_definition ::=
array index_constraint of array_element_subtype_indication
index_subtype_definition ::= type_mark range <>
record_type_definition ::=
record
element_declaration
{ element_declaration }
end record [ record_type_simple_name ]
element_declaration ::=
identifier_list : element_subtype_definition ;
identifier_list ::= identifier { , identifier }
element_subtype_definition ::= record_element_subtype_indication
record_constraint ::=
( record_element_constraint { , record_element_constraint } )
record_element_constraint ::= record_element_simple_name element_constraint
protected_type_body ::=
protected body
protected_type_body_declarative_part
end protected body [ protected_type_simple name ]
protected_type_body_declarative_part ::=
{ protected_type_body_declarative_item }
protected_type_body_declarative_item ::=
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonconcurrent_package_declaration
| nonconcurrent_package_body
| nonconcurrent_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| use_clause
| group_template_declaration
| group_declaration
file_declaration ::=
file identifier_list : file_subtype_indication [ file_open_information ] ;
file_open_information ::= [ open file_open_kind_expression ] is file_logical_name
file_logical_name ::= string_expression
external_name ::=
external_constant_name
| external_signal_name
| external_variable_name
external_constant_name ::=
<< constant external_pathname : constant_subtype_indication >>
external_signal_name ::=
<< signal external_pathname : signal_subtype_indication >>
external_variable_name ::=
<< variable external_pathname : protected_subtype_indication >>
external_pathname ::=
package_pathname
| absolute_pathname
| relative_pathname
package_pathname ::=
@ library_logical_name . package_simple_name . { package_simple_name . } object_simple_name
absolute_pathname ::= . partial_pathname
relative_pathname ::= { ^ . } partial_pathname
partial_pathname ::= { pathname_element . } object_simple_name
process_statement ::=
[ process_label : ]
[ postponed ] process [ ( process_sensitivity_list ) ] [ is ]
process_declarative_part
begin
process_statement_part
end [ postponed ] process [ process_label ] ;
process_sensitivity_list ::= all | sensitivity_list
process_declarative_part ::=
{ process_declarative_item }
process_declarative_item ::=
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonconcurrent_package_declaration
| nonconcurrent_package_body
| nonconcurrent_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| use_clause
| group_template_declaration
| group_declaration
process_statement_part ::=
{ sequential_statement }
design_file ::= design_unit { design_unit }
design_unit ::= context_clause library_unit
library_unit ::=
primary_unit
| secondary_unit
primary_unit ::=
entity_declaration
| configuration_declaration
| nonsequential_package_declaration
| nonsequential_package_instantiation_declaration
| context_declaration
| PSL_Verification_Unit
secondary_unit ::=
architecture_body
| nonsequential_package_body
block_declarative_item ::= [§ 3.3.2]
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonsequential_package_declaration
| nonsequential_package_body
| nonsequential_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_signal_declaration
| shared_normal_shared_variable_declaration
| file_declaration
| alias_declaration
| component_declaration
| attribute_declaration
| attribute_specification
| configuration_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration
| PSL_Property_Declaration
| PSL_Sequence_Declaration
| PSL_Clock_Declaration
constrained_array_definition ::= [§ 5.3.2.1]
array index_constraint of array_element_subtype_indication
element_subtype_definition ::= record_element_subtype_indication [§ 5.3.3]
entity_declarative_item ::= [§ 3.2.3]
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonsequential_package_declaration
| nonsequential_package_body
| nonsequential_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_signal_declaration
| shared_normal_shared_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| disconnection_specification
| use_clause
| group_template_declaration
| group_declaration
| PSL_Property_Declaration
| PSL_Sequence_Declaration
| PSL_Clock_Declaration
external_constant_name ::= [§ 8.7]
<< constant external_pathname : constant_subtype_indication >>
external_signal_name ::= [§ 8.7]
<< signal external_pathname : signal_subtype_indication >>
external_variable_name ::= [§ 8.7]
<< variable external_pathname : protected_subtype_indication >>
file_declaration ::= [§ 6.4.2.5]
file identifier_list : file_subtype_indication [ file_open_information ] ;
interface_file_declaration ::= [§ 6.5.2]
file identifier_list : file_subtype_indication
primary_unit ::= [§ 13.1]
entity_declaration
| configuration_declaration
| nonsequential_package_declaration
| nonsequential_package_instantiation_declaration
| context_declaration
| PSL_Verification_Unit
process_declarative_item ::= [§ 11.3]
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonconcurrent_package_declaration
| nonconcurrent_package_body
| nonconcurrent_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| use_clause
| group_template_declaration
| group_declaration
protected_type_body_declarative_item ::= [§ 5.6.3]
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonconcurrent_package_declaration
| nonconcurrent_package_body
| nonconcurrent_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| use_clause
| group_template_declaration
| group_declaration
secondary_unit ::= [§ 13.1]
architecture_body
| nonsequential_package_body
subprogram_declarative_item ::= [§ 4.3]
subprogram_declaration
| subprogram_body
| subprogram_instantiation_declaration
| nonconcurrent_package_declaration
| nonconcurrent_package_body
| nonconcurrent_package_instantiation_declaration
| type_declaration
| subtype_declaration
| normal_constant_declaration
| normal_variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| use_clause
| group_template_declaration
| group_declaration
unbounded_array_definition ::= [§ 5.3.2.1]
array ( index_subtype_definition { , index_subtype_definition } )
of array_element_subtype_indication