Синтаксис языка VHDL-2008
Материал из Wiki
Версия от 00:19, 14 сентября 2013; ANA (обсуждение | вклад)
Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Syntax summary
This annex provides a summary of the syntax for VHDL. Productions are ordered alphabetically by lefthand nonterminal name. The number listed to the right indicates the clause or subclause where the production is given.
A | B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | U | V | W |
---|
A
absolute_pathname ::= . partial_pathname [§ 8.7]
abstract_literal ::= decimal_literal | based_literal [§ 15.5.1]
access_type_definition ::= access subtype_indication [§ 5.4.1]
actual_designator ::= [§ 6.5.7.1] [ inertial ] expression | signal_name | variable_name | file_name | subtype_indication | subprogram_name | instantiated_package_name | open
actual_parameter_part ::= parameter_association_list [§ 9.3.4]
actual_part ::= [§ 6.5.7.1] actual_designator | function_name ( actual_designator ) | type_mark ( actual_designator )
adding_operator ::= + | – | & [§ 9.2]
aggregate ::= [§ 9.3.3.1] ( element_association { , element_association } )
alias_declaration ::= [§ 6.6.1] alias alias_designator [ : subtype_indication ] is name [ signature ] ;
alias_designator ::= identifier | character_literal | operator_symbol [§ 6.6.1]
allocator ::= [§ 9.3.7] new subtype_indication | new qualified_expression
architecture_body ::= [§ 3.3.1] architecture identifier of entity_name is architecture_declarative_part begin architecture_statement_part end [ architecture ] [ architecture_simple_name ] ;
architecture_declarative_part ::= [§ 3.3.2] { block_declarative_item }
architecture_statement_part ::= [§ 3.3.3] { concurrent_statement }
array_constraint ::= [§ 5.3.2.1] index_constraint [ array_element_constraint ] | ( open ) [ array_element_constraint ]
array_element_constraint ::= element_constraint [§ 5.3.2.1]
array_element_resolution ::= resolution_indication [§ 6.3]
array_type_definition ::= [§ 5.3.2.1] unbounded_array_definition | constrained_array_definition
assertion ::= [§ 10.3] assert condition [ report expression ] [ severity expression ]
assertion_statement ::= [ label : ] assertion ; [§ 10.3]
association_element ::= [§ 6.5.7.1] [ formal_part => ] actual_part
association_list ::= [§ 6.5.7.1] association_element { , association_element }
attribute_declaration ::= [§ 6.7] attribute identifier : type_mark ;
attribute_designator ::= attribute_simple_name [§ 8.6]
attribute_name ::= [§ 8.6] prefix [ signature ] ' attribute_designator [ ( expression ) ]
attribute_specification ::= [§ 7.2] attribute attribute_designator of entity_specification is expression ;
B
base ::= integer [§ 15.5.3]
base_specifier ::= B | O | X | UB | UO | UX | SB | SO | SX | D [§ 15.8]
based_integer ::= [§ 15.5.3] extended_digit { [ underline ] extended_digit }
based_literal ::= [§ 15.5.3] base # based_integer [ . based_integer ] # [ exponent ]
basic_character ::= [§ 15.2] basic_graphic_character | format_effector
basic_graphic_character ::= [§ 15.2] upper_case_letter | digit | special_character| space_character
basic_identifier ::= letter { [ underline ] letter_or_digit } [§ 15.4.2]
binding_indication ::= [§ 7.3.2.1] [ use entity_aspect ] [ generic_map_aspect ] [ port_map_aspect ]
bit_string_literal ::= [ integer ] base_specifier " [ bit_value ] " [§ 15.8]
bit_value ::= graphic_character { [ underline ] graphic_character } [§ 15.8]
block_configuration ::= [§ 3.4.2] for block_specification { use_clause } { configuration_item } end for ;
block_declarative_item ::= [§ 3.3.2] subprogram_declaration | subprogram_body | subprogram_instantiation_declaration | package_declaration | package_body | package_instantiation_declaration | type_declaration | subtype_declaration | constant_declaration | signal_declaration | 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
block_declarative_part ::= [§ 11.2] { block_declarative_item }
block_header ::= [§ 11.2] [ generic_clause [ generic_map_aspect ; ] ] [ port_clause [ port_map_aspect ; ] ]
block_specification ::= [§ 3.4.2] architecture_name | block_statement_label | generate_statement_label [ ( generate_specification ) ]
block_statement ::= [§ 11.2] block_label : block [ ( guard_condition ) ] [ is ] block_header block_declarative_part begin block_statement_part end block [ block_label ] ;
block_statement_part ::= [§ 11.2] { concurrent_statement }
C
case_generate_alternative ::= [§ 11.8] when [ alternative_label : ] choices => generate_statement_body
case_generate_statement ::= [§ 11.8] generate_label : case expression generate case_generate_alternative { case_generate_alternative } end generate [ generate_label ] ;
case_statement ::= [§ 10.9] [ case_label : ] case [ ? ] expression is case_statement_alternative { case_statement_alternative } end case [ ? ] [ case_label ] ;
case_statement_alternative ::= [§ 10.9] when choices => sequence_of_statements
character_literal ::= ' graphic_character ' [§ 15.6]
choice ::= [§ 9.3.3.1] simple_expression | discrete_range | element_simple_name | others
choices ::= choice { | choice } [§ 9.3.3.1]
component_configuration ::= [§ 3.4.3] for component_specification [ binding_indication ; ] { verification_unit_binding_indication ; } [ block_configuration ] end for ;
component_declaration ::= [§ 6.8] component identifier [ is ] [ local_generic_clause ] [ local_port_clause ] end component [ component_simple_name ] ;
component_instantiation_statement ::= [§ 11.7.1] instantiation_label : instantiated_unit [ generic_map_aspect ] [ port_map_aspect ] ;
component_specification ::= [§ 7.3.1] instantiation_list : component_name
composite_type_definition ::= [§ 5.3.1] array_type_definition | record_type_definition
compound_configuration_specification ::= [§ 7.3.1] for component_specification binding_indication ; verification_unit_binding_indication ; { verification_unit_binding_indication ; } end for ;
concurrent_assertion_statement ::= [§ 11.5] [ label : ] [ postponed ] assertion ;
concurrent_conditional_signal_assignment ::= [§ 11.6] target <= [ guarded ] [ delay_mechanism ] conditional_waveforms ;
concurrent_procedure_call_statement ::= [§ 11.4] [ label : ] [ postponed ] procedure_call ;
concurrent_selected_signal_assignment ::= [§ 11.6] with expression select [ ? ] target <= [ guarded ] [ delay_mechanism ] selected_waveforms ;
concurrent_signal_assignment_statement ::= [§ 11.6] [ label : ] [ postponed ] concurrent_simple_signal_assignment | [ label : ] [ postponed ] concurrent_conditional_signal_assignment | [ label : ] [ postponed ] concurrent_selected_signal_assignment
concurrent_simple_signal_assignment ::= [§ 11.6] target <= [ guarded ] [ delay_mechanism ] waveform ;
concurrent_statement ::= [§ 11.1] block_statement | process_statement | concurrent_procedure_call_statement | concurrent_assertion_statement | concurrent_signal_assignment_statement | component_instantiation_statement | generate_statement | PSL_PSL_Directive
condition ::= expression [§ 10.2]
condition_clause ::= until condition [§ 10.2]
condition_operator ::= ?? [§ 9.2.1]
conditional_expressions ::= [§ 10.5.3] expression when condition { else expression when condition } [ else expression ]
conditional_force_assignment ::= [§ 10.5.3] target <= force [ force_mode ] conditional_expressions ;
conditional_signal_assignment ::= [§ 10.5.3] conditional_waveform_assignment | conditional_force_assignment
conditional_variable_assignment ::= [§ 10.6.3] target := conditional_expressions ;
conditional_waveform_assignment ::= [§ 10.5.3] target <= [ delay_mechanism ] conditional_waveforms ;
conditional_waveforms ::= [§ 10.5.3] waveform when condition { else waveform when condition } [ else waveform ]
configuration_declaration ::= [§ 3.4.1] configuration identifier of entity_name is configuration_declarative_part { verification_unit_binding_indication ; } block_configuration end [ configuration ] [ configuration_simple_name ] ;
configuration_declarative_item ::= [§ 3.4.1] use_clause | attribute_specification | group_declaration
configuration_declarative_part ::= [§ 3.4.1] { configuration_declarative_item }
configuration_item ::= [§ 3.4.2] block_configuration | component_configuration
configuration_specification ::= [§ 7.3.1] simple_configuration_specification | compound_configuration_specification
constant_declaration ::= [§ 6.4.2.2] constant identifier_list : subtype_indication [ := expression ] ;
constrained_array_definition ::= [§ 5.3.2.1] array index_constraint of element_subtype_indication
constraint ::= [§ 6.3] range_constraint | array_constraint | record_constraint
context_clause ::= { context_item } [§ 13.4]
context_declaration ::= [§ 13.3] context identifier is context_clause end [ context ] [ context_simple_name ] ;
context_item ::= [§ 13.4] library_clause | use_clause | context_reference
context_reference ::= [§ 13.4] context selected_name { , selected_name } ;
D
decimal_literal ::= integer [ . integer ] [ exponent ] [§ 15.5.2]
delay_mechanism ::= [§ 10.5.2.1] transport | [ reject time_expression ] inertial
design_file ::= design_unit { design_unit } [§ 13.1]
design_unit ::= context_clause library_unit [§ 13.1]
designator ::= identifier | operator_symbol [§ 4.2.1]
direction ::= to | downto [§ 5.2.1]
disconnection_specification ::= [§ 7.4] disconnect guarded_signal_specification after time_expression ;
discrete_range ::= discrete_subtype_indication | range [§ 5.3.2.1]
E
element_association ::= [§ 9.3.3.1] [ choices => ] expression
element_constraint ::= [§ 6.3] array_constraint | record_constraint
element_declaration ::= [§ 5.3.3] identifier_list : element_subtype_definition ;
element_resolution ::= array_element_resolution | record_resolution [§ 6.3]
element_subtype_definition ::= subtype_indication [§ 5.3.3]
entity_aspect ::= [§ 7.3.2.2] entity entity_name [ ( architecture_identifier ) ] | configuration configuration_name | open
entity_class ::= [§ 7.2] entity | architecture | configuration | procedure | function | package | type | subtype | constant | signal | variable | component | label | literal | units | group | file | property | sequence
entity_class_entry ::= entity_class [ <> ] [§ 6.9]
entity_class_entry_list ::= [§ 6.9] entity_class_entry { , entity_class_entry }
entity_declaration ::= [§ 3.2.1] entity identifier is entity_header entity_declarative_part [ begin entity_statement_part ] end [ entity ] [ entity_simple_name ] ;
entity_declarative_item ::= [§ 3.2.3] subprogram_declaration | subprogram_body | subprogram_instantiation_declaration | package_declaration | package_body | package_instantiation_declaration | type_declaration | subtype_declaration | constant_declaration | signal_declaration | 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
entity_declarative_part ::= [§ 3.2.3] { entity_declarative_item }
entity_designator ::= entity_tag [ signature ] [§ 7.2]
entity_header ::= [§ 3.2.3] [ formal_generic_clause ] [ formal_port_clause ]
entity_name_list ::= [§ 7.2] entity_designator { , entity_designator } | others | all
entity_specification ::= [§ 7.2] entity_name_list : entity_class
entity_statement ::= [§ 3.2.4] concurrent_assertion_statement | passive_concurrent_procedure_call_statement | passive_process_statement | PSL_PSL_Directive
entity_statement_part ::= [§ 3.2.4] { entity_statement }
entity_tag ::= simple_name | character_literal | operator_symbol [§ 7.2]
enumeration_literal ::= identifier | character_literal [§ 5.2.2.1]
enumeration_type_definition ::= [§ 5.2.2.1] ( enumeration_literal { , enumeration_literal } )
exit_statement ::= [§ 10.2] [ label : ] exit [ loop_label ] [ when condition ] ;
exponent ::= E [ + ] integer | E – integer [§ 15.5.2]
expression ::= [§ 9.1] condition_operator primary | logical_expression
extended_digit ::= digit | letter [§ 15.5.3]
extended_identifier ::= \ graphic_character { graphic_character } \ [§ 15.4.3]
external_name ::= [§ 8.7] external_constant_name | external_signal_name | external_variable_name
external_constant_name ::= [§ 8.7] << constant external_pathname : subtype_indication >>
external_signal_name ::= [§ 8.7] << signal external_pathname : subtype_indication >>
external_variable_name ::= [§ 8.7] << variable external_pathname : subtype_indication >>
external_pathname ::= [§ 8.7] package_pathname | absolute_pathname | relative_pathname
F
factor ::= [§ 9.1] primary [ ** primary ] | abs primary | not primary | logical_operator primary
file_declaration ::= [§ 6.4.2.5] file identifier_list : subtype_indication [ file_open_information ] ;
file_logical_name ::= string_expression [§ 6.4.2.5]
file_open_information ::= [§ 6.4.2.5] [ open file_open_kind_expression ] is file_logical_name
file_type_definition ::= [§ 5.5.1] file of type_mark
floating_type_definition ::= range_constraint [§ 5.2.5.1]
for_generate_statement ::= [§ 11.8] generate_label : for generate_parameter_specification generate generate_statement_body end generate [ generate_label ] ;
force_mode ::= in | out [§ 10.5.2.1]
formal_designator ::= [§ 6.5.7.1] generic_name | port_name | parameter_name
formal_parameter_list ::= parameter_interface_list [§ 4.2.2.1]
formal_part ::= [§ 6.5.7.1] formal_designator | function_name ( formal_designator ) | type_mark ( formal_designator )
full_type_declaration ::= [§ 6.2] type identifier is type_definition ;
function_call ::= [§ 9.3.4] function_name [ ( actual_parameter_part ) ]
function_specification ::= [§ 4.2.1] [ pure | impure ] function designator subprogram_header [ [ parameter ] ( formal_parameter_list ) ] return type_mark
G
generate_specification ::= [§ 3.4.2] static_discrete_range | static_expression | alternative_label
generate_statement ::= [§ 11.8] for_generate_statement | if_generate_statement | case_generate_statement
generate_statement_body ::= [§ 11.8] [ block_declarative_part begin ] { concurrent_statement } [ end [ alternative_label ] ; ]
generic_clause ::= [§ 6.5.6.2] generic ( generic_list ) ;
generic_list ::= generic_interface_list [§ 6.5.6.2]
generic_map_aspect ::= [§ 6.5.6.2] generic map ( generic_association_list )
graphic_character ::= [§ 15.2] basic_graphic_character | lower_case_letter | other_special_character
group_constituent ::= name | character_literal [§ 6.10]
group_constituent_list ::= group_constituent { , group_constituent } [§ 6.10]
group_declaration ::= [§ 6.10] group identifier : group_template_name ( group_constituent_list ) ;
group_template_declaration ::= [§ 6.9] group identifier is ( entity_class_entry_list ) ;
guarded_signal_specification ::= [§ 7.4] guarded_signal_list : type_mark
I
identifier ::= basic_identifier | extended_identifier [§ 15.4.1]
identifier_list ::= identifier { , identifier } [§ 5.3.3]
if_generate_statement ::= [§ 11.8] generate_label : if [ alternative_label : ] condition generate generate_statement_body { elsif [ alternative_label : ] condition generate generate_statement_body } [ else [ alternative_label : ] generate generate_statement_body ] end generate [ generate_label ] ;
if_statement ::= [§ 10.8] [ if_label : ] if condition then sequence_of_statements { elsif condition then sequence_of_statements } [ else sequence_of_statements ] end if [ if_label ] ;
incomplete_type_declaration ::= type identifier ; [§ 5.4.2]
index_constraint ::= ( discrete_range { , discrete_range } ) [§ 5.3.2.1]
index_subtype_definition ::= type_mark range <> [§ 5.3.2.1]
indexed_name ::= prefix ( expression { , expression } ) [§ 8.4]
instantiated_unit ::= [§ 11.7.1] [ component ] component_name | entity entity_name [ ( architecture_identifier ) ] | configuration configuration_name
instantiation_list ::= [§ 7.3.1] instantiation_label { , instantiation_label } | others | all
integer ::= digit { [ underline ] digit } [§ 15.5.2]
integer_type_definition ::= range_constraint [§ 5.2.3.1]
interface_constant_declaration ::= [§ 6.5.2] [ constant ] identifier_list : [ in ] subtype_indication [ := static_expression ]
interface_declaration ::= [§ 6.5.1] interface_object_declaration | interface_type_declaration | interface_subprogram_declaration | interface_package_declaration
interface_element ::= interface_declaration [§ 6.5.6.1]
interface_file_declaration ::= [§ 6.5.2] file identifier_list : subtype_indication
interface_function_specification ::= [§ 6.5.4] [ pure | impure ] function designator [ [ parameter ] ( formal_parameter_list ) ] return type_mark
interface_incomplete_type_declaration ::= type identifier [§ 6.5.3]
interface_list ::= [§ 6.5.6.1] interface_element { ; interface_element }
interface_object_declaration ::= [§ 6.5.2] interface_constant_declaration | interface_signal_declaration | interface_variable_declaration | interface_file_declaration
interface_package_declaration ::= [§ 6.5.5] package identifier is new uninstantiated_package_name interface_package_generic_map_aspect
interface_package_generic_map_aspect ::= [§ 6.5.5] generic_map_aspect | generic map ( <> ) | generic map ( default )
interface_procedure_specification ::= [§ 6.5.4] procedure designator [ [ parameter ] ( formal_parameter_list ) ]
interface_signal_declaration ::= [§ 6.5.2] [ signal ] identifier_list : [ mode ] subtype_indication [ bus ] [ := static_expression ]
interface_subprogram_declaration ::= [§ 6.5.4] interface_subprogram_specification [ is interface_subprogram_default ]
interface_subprogram_default ::= subprogram_name | <> [§ 6.5.4]
interface_subprogram_specification ::= [§ 6.5.4] interface_procedure_specification | interface_function_specification
interface_type_declaration ::= [§ 6.5.3] interface_incomplete_type_declaration
interface_variable_declaration ::= [§ 6.5.2] [ variable ] identifier_list : [ mode ] subtype_indication [ := static_expression ]
iteration_scheme ::= [§ 10.10] while condition | for loop_parameter_specification
L
label ::= identifier [§ 11.8]
letter ::= upper_case_letter | lower_case_letter [§ 15.4.2]
letter_or_digit ::= letter | digit [§ 15.4.2]
library_clause ::= library logical_name_list ; [§ 13.2]
library_unit ::= [§ 13.1] primary_unit | secondary_unit
literal ::= [§ 9.3.2] numeric_literal | enumeration_literal | string_literal | bit_string_literal | null
logical_expression ::= [§ 9.1] relation { and relation } | relation { or relation } | relation { xor relation } | relation [ nand relation ] | relation [ nor relation ] | relation { xnor relation }
logical_name ::= identifier [§ 13.2]
logical_name_list ::= logical_name { , logical_name } [§ 13.2]
logical_operator ::= and | or | nand | nor | xor | xnor [§ 9.2.1]
loop_statement ::= [§ 10.10] [ loop_label : ] [ iteration_scheme ] loop sequence_of_statements end loop [ loop_label ] ;
M
miscellaneous_operator ::= ** | abs | not [§ 9.2.1]
mode ::= in | out | inout | buffer | linkage [§ 6.5.2]
multiplying_operator ::= * | / | mod | rem [§ 9.2.1]
N
name ::= [§ 8.1] simple_name | operator_symbol | character_literal | selected_name | indexed_name | slice_name | attribute_name | external_name
next_statement ::= [§ 10.11] [ label : ] next [ loop_label ] [ when condition ] ;
null_statement ::= [ label : ] null ; [§ 10.14]
numeric_literal ::= [§ 9.3.2] abstract_literal | physical_literal
O
object_declaration ::= [§ 6.4.2.1] constant_declaration | signal_declaration | variable_declaration | file_declaration
operator_symbol ::= string_literal [§ 4.2.1]
P
package_body ::= [§ 4.8] package body package_simple_name is package_body_declarative_part end [ package body ] [ package_simple_name ] ;
package_body_declarative_item ::= [§ 4.8] subprogram_declaration | subprogram_body | subprogram_instantiation_declaration | package_declaration | package_body | package_instantiation_declaration | type_declaration | subtype_declaration | constant_declaration | variable_declaration | file_declaration | alias_declaration | attribute_declaration | attribute_specification | use_clause | group_template_declaration | group_declaration
package_body_declarative_part ::= [§ 4.8] { package_body_declarative_item }
package_declaration ::= [§ 4.7] package identifier is package_header package_declarative_part end [ package ] [ package_simple_name ] ;
package_declarative_item ::= [§ 4.7] subprogram_declaration | subprogram_instantiation_declaration | package_declaration | package_instantiation_declaration | type_declaration | subtype_declaration | constant_declaration | signal_declaration | variable_declaration | file_declaration | alias_declaration | component_declaration | attribute_declaration | attribute_specification | disconnection_specification | use_clause | group_template_declaration | group_declaration | PSL_Property_Declaration | PSL_Sequence_Declaration
package_declarative_part ::= [§ 4.7] { package_declarative_item }
package_header ::= [§ 4.7] [ generic_clause [ generic_map_aspect ; ] ]
package_instantiation_declaration ::= [§ 4.9] package identifier is new uninstantiated_package_name [ generic_map_aspect ] ;
package_pathname ::= @ library_logical_name . { package_simple_name . } object_simple_name [§ 8.7]
parameter_specification ::= [§ 10.10] identifier in discrete_range
partial_pathname ::= { pathname_element . } object_simple_name [§ 8.7]
pathname_element ::= [§ 8.7] entity_simple_name | component_instantiation_label | block_label | generate_statement_label [ ( static_expression ) ] | package_simple_name
physical_literal ::= [ abstract_literal ] unit_name [§ 5.2.4.1]
physical_type_definition ::= [§ 5.2.4.1] range_constraint units primary_unit_declaration { secondary_unit_declaration } end units [ physical_type_simple_name ]
port_clause ::= [§ 6.5.6.3] port ( port_list ) ;
port_list ::= port_interface_list [§ 6.5.6.3]
port_map_aspect ::= [§ 6.5.7.3] port map ( port_association_list )
prefix ::= [§ 8.1] name | function_call
primary ::= [§ 9.1] name | literal | aggregate | function_call | qualified_expression | type_conversion | allocator | ( expression )
primary_unit ::= [§ 13.1] entity_declaration | configuration_declaration | package_declaration | package_instantiation_declaration | context_declaration | PSL_Verification_Unit
primary_unit_declaration ::= identifier ; [§ 5.2.4.1]
procedure_call ::= procedure_name [ ( actual_parameter_part ) ] [§ 10.7]
procedure_call_statement ::= [ label : ] procedure_call ; [§ 10.7]
procedure_specification ::= [§ 4.2.1] procedure designator subprogram_header [ [ parameter ] ( formal_parameter_list ) ]
process_declarative_item ::= [§ 11.3] subprogram_declaration | subprogram_body | subprogram_instantiation_declaration | package_declaration | package_body | package instantiation_declaration | type_declaration | subtype_declaration | constant_declaration | variable_declaration | file_declaration | alias_declaration | attribute_declaration | attribute_specification | use_clause | group_template_declaration | group_declaration
process_declarative_part ::= [§ 11.3] { process_declarative_item }
process_sensitivity_list ::= all | sensitivity_list [§ 11.3]
process_statement ::= [§ 11.3] [ process_label : ] [ postponed ] process [ ( process_sensitivity_list ) ] [ is ] process_declarative_part begin process_statement_part end [ postponed ] process [ process_label ] ;
process_statement_part ::= [§ 11.3] { sequential_statement }
protected_type_body ::= [§ 5.6.3] protected body protected_type_body_declarative_part end protected body [ protected_type_simple name ]
protected_type_body_declarative_item ::= [§ 5.6.3] subprogram_declaration | subprogram_body | subprogram_instantiation_declaration | package_declaration | package_body | package_instantiation_declaration | type_declaration | subtype_declaration | constant_declaration | variable_declaration | file_declaration | alias_declaration | attribute_declaration | attribute_specification | use_clause | group_template_declaration | group_declaration
protected_type_body_declarative_part ::= [§ 5.6.3] { protected_type_body_declarative_item }
protected_type_declaration ::= [§ 5.6.2] protected protected_type_declarative_part end protected [ protected_type_simple_name ]
protected_type_declarative_item ::= [§ 5.6.2] subprogram_declaration | subprogram_instantiation_declaration | attribute_specification | use_clause
protected_type_declarative_part ::= [§ 5.6.2] { protected_type_declarative_item }
protected_type_definition ::= [§ 5.6.1] protected_type_declaration | protected_type_body
Q
qualified_expression ::= [§ 9.3.5] type_mark ' ( expression ) | type_mark ' aggregate
R
range ::= [§ 5.2.1] range_attribute_name | simple_expression direction simple_expression
range_constraint ::= range range [§ 5.2.1]
record_constraint ::= [§ 5.3.3] ( record_element_constraint { , record_element_constraint } )
record_element_constraint ::= record_element_simple_name element_constraint [§ 5.3.3]
record_element_resolution ::= record_element_simple_name resolution_indication [§ 6.3]
record_resolution ::= record_element_resolution { , record_element_resolution } [§ 6.3]
record_type_definition ::= [§ 5.3.3] record element_declaration { element_declaration } end record [ record_type_simple_name ]
relation ::= [§ 9.1] shift_expression [ relational_operator shift_expression ]
relational_operator ::= = | /= | < | <= | > | >= | ?= | ?/= | ?< | ?<= | ?> | ?>= [§ 9.2.1]
relative_pathname ::= { ^ . } partial_pathname [§ 8.7]
report_statement ::= [§ 10.4] [ label : ] report expression [ severity expression ] ;
resolution_indication ::= [§ 6.3] resolution_function_name | ( element_resolution )
return_statement ::= [§ 10.13] [ label : ] return [ expression ] ;
S
scalar_type_definition ::= [§ 5.2.1] enumeration_type_definition | integer_type_definition | floating_type_definition | physical_type_definition
secondary_unit ::= [§ 13.1] architecture_body | package_body
secondary_unit_declaration ::= identifier = physical_literal ; [§ 5.2.4.1]
selected_expressions ::= [§ 10.5.4] { expression when choices , } expression when choices
selected_force_assignment ::= [§ 10.5.4] with expression select [ ? ] target <= force [ force_mode ] selected_expressions ;
selected_name ::= prefix . suffix [§ 8.3]
selected_signal_assignment ::= [§ 10.5.4] selected_waveform_assignment | selected_force_assignment
selected_variable_assignment ::= [§ 10.6.4] with expression select [ ? ] target := selected_expressions ;
selected_waveform_assignment ::= [§ 10.5.4] with expression select [ ? ] target <= [ delay_mechanism ] selected_waveforms ;
selected_waveforms ::= [§ 10.5.4] { waveform when choices , } waveform when choices
sensitivity_clause ::= on sensitivity_list [§ 10.2]
sensitivity_list ::= signal_name { , signal_name } [§ 10.2]
sequence_of_statements ::= [§ 10.1] { sequential_statement }
sequential_statement ::= [§ 10.1] wait_statement | assertion_statement | report_statement | signal_assignment_statement | variable_assignment_statement | procedure_call_statement | if_statement | case_statement | loop_statement | next_statement | exit_statement | return_statement | null_statement
shift_expression ::= [§ 9.1] simple_expression [ shift_operator simple_expression ]
shift_operator ::= sll | srl | sla | sra | rol | ror [§ 9.2.1]
sign ::= + | – [§ 9.2.1]
signal_assignment_statement ::= [§ 10.5.1] [ label : ] simple_signal_assignment | [ label : ] conditional_signal_assignment | [ label : ] selected_signal_assignment
signal_declaration ::= [§ 6.4.2.3] signal identifier_list : subtype_indication [ signal_kind ] [ := expression ] ;
signal_kind ::= register | bus [§ 6.4.2.3]
signal_list ::= [§ 7.4] signal_name { , signal_name } | others | all
signature ::= [ [ type_mark { , type_mark } ] [ return type_mark ] ] [§ 4.5.3]
simple_configuration_specification ::= [§ 7.3.1] for component_specification binding_indication ; [ end for ; ]
simple_expression ::= [§ 9.1] [ sign ] term { adding_operator term }
simple_force_assignment ::= [§ 10.5.2.1] target <= force [ force_mode ] expression ;
simple_name ::= identifier [§ 8.2]
simple_release_assignment ::= [§ 10.5.2.1] target <= release [ force_mode ] ;
simple_signal_assignment ::= [§ 10.5.2.1] simple_waveform_assignment | simple_force_assignment | simple_release_assignment
simple_waveform_assignment ::= [§ 10.5.2.1] target <= [ delay_mechanism ] waveform ;
simple_variable_assignment ::= [§ 10.6.2.1] target := expression ;
slice_name ::= prefix ( discrete_range ) [§ 8.5]
string_literal ::= " { graphic_character } " [§ 15.7]
subprogram_body ::= [§ 4.3] subprogram_specification is subprogram_declarative_part begin subprogram_statement_part end [ subprogram_kind ] [ designator ] ;
subprogram_declaration ::= [§ 4.2.1] subprogram_specification ;
subprogram_declarative_item ::= [§ 4.3] subprogram_declaration | subprogram_body | subprogram_instantiation_declaration | package_declaration | package_body | package_instantiation_declaration | type_declaration | subtype_declaration | constant_declaration | variable_declaration | file_declaration | alias_declaration | attribute_declaration | attribute_specification | use_clause | group_template_declaration | group_declaration
subprogram_declarative_part ::= [§ 4.3] { subprogram_declarative_item }
subprogram_header ::= [§ 4.2.1] [ generic ( generic_list ) [ generic_map_aspect ] ]
subprogram_instantiation_declaration ::= [§ 4.4] subprogram_kind identifier is new uninstantiated_subprogram_name [ signature ] [ generic_map_aspect ] ;
subprogram_kind ::= procedure | function [§ 4.3]
subprogram_specification ::= [§ 4.2.1] procedure_specification | function_specification
subprogram_statement_part ::= [§ 4.3] { sequential_statement }
subtype_declaration ::= [§ 6.3] subtype identifier is subtype_indication ;
subtype_indication ::= [§ 6.3] [ resolution_indication ] type_mark [ constraint ]
suffix ::= [§ 8.3] simple_name | character_literal | operator_symbol | all
T
target ::= [§ 10.5.2.1] name | aggregate
term ::= [§ 9.1] factor { multiplying_operator factor }
timeout_clause ::= for time_expression [§ 10.2]
tool_directive ::= ` identifier { graphic_character } [§ 15.11]
type_conversion ::= type_mark ( expression ) [§ 9.3.6]
type_declaration ::= [§ 6.2] full_type_declaration | incomplete_type_declaration
type_definition ::= [§ 6.2] scalar_type_definition | composite_type_definition | access_type_definition | file_type_definition | protected_type_definition
type_mark ::= [§ 6.3] type_name | subtype_name
U
unbounded_array_definition ::= [§ 5.3.2.1] array ( index_subtype_definition { , index_subtype_definition } ) of element_subtype_indication
use_clause ::= [§ 12.4] use selected_name { , selected_name } ;
V
variable_assignment_statement ::= [§ 10.6.1] [ label : ] simple_variable_assignment | [ label : ] conditional_variable_assignment | [ label : ] selected_variable_assignment
variable_declaration ::= [§ 6.4.2.4] [ shared ] variable identifier_list : subtype_indication [ := expression ] ;
verification_unit_binding_indication ::= [§ 7.3.4] use vunit verification_unit_list
verification_unit_list ::= verification_unit_name { , verification_unit_name } [§ 7.3.4]
W
wait_statement ::= [§ 10.2] [ label : ] wait [ sensitivity_clause ] [ condition_clause ] [ timeout_clause ] ;
waveform ::= [§ 10.5.2.1] waveform_element { , waveform_element } | unaffected
waveform_element ::= [§ 10.5.2.2] value_expression [ after time_expression ] | null [ after time_expression ]
A | B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | U | V | W |
---|