| abstract_literal |
::= |
<decimal_literal> |
|
| |
<based_literal> |
| access_type_definition |
::= |
<ACCESS> subtype_indication |
| actual_designator |
::= |
expression |
|
| |
signal_name |
|
| |
variable_name |
|
| |
file_name |
|
| |
<OPEN> |
|
| |
terminal_name |
|
| |
quantity_name |
| actual_parameter_part |
::= |
parameter_association_list |
| actual_part |
::= |
( function_name "(" actual_designator ")" | type_mark "(" actual_designator ")" | actual_designator ) |
| adding_operator |
::= |
<ADD> |
|
| |
<SUB> |
|
| |
<CONCAT> |
| aggregate |
::= |
"(" element_association ( "," element_association )* ")" |
| alias_declaration |
::= |
<ALIAS> alias_designator ( ":" subtype_indication )? <IS> name signature ";" |
| alias_designator |
::= |
( identifier | <character_literal> | operator_symbol ) |
| allocator |
::= |
<NEW> ( qualified_expression | subtype_indication ) |
| architecture_body |
::= |
<ARCHITECTURE> identifier <OF> entity_name <IS> architecture_declarative_part <BEGIN> architecture_statement_part <END> ( <ARCHITECTURE> )? ( architecture_simple_name )? ";" |
| architecture_declarative_part |
::= |
( block_declarative_item )* |
| architecture_statement_part |
::= |
( architecture_statement )* |
| architecture_statement |
::= |
( block_statement | process_statement | concurrent_procedure_call_statement | concurrent_assertion_statement | concurrent_signal_assignment_statement | component_instantiation_statement | generate_statement | concurrent_break_statement | simultaneous_statement ) |
| array_nature_definition |
::= |
unconstrained_nature_definition |
|
| |
constrained_nature_definition |
| unconstrained_nature_definition |
::= |
<ARRAY> "(" index_subtype_definition ( "," index_subtype_definition )* ")" <OF> subnature_indication |
| constrained_nature_definition |
::= |
<ARRAY> index_constraint <OF> subnature_indication |
| array_type_definition |
::= |
unconstrained_array_definition |
|
| |
constrained_array_definition |
| assertion |
::= |
<ASSERT> condition ( <REPORT> expression )? ( <SEVERITY> expression )? |
| assertion_statement |
::= |
( label ":" )? assertion ";" |
| association_element |
::= |
( formal_part "=>" )? actual_part |
| association_list |
::= |
association_element ( "," association_element )* |
| attribute_declaration |
::= |
<ATTRIBUTE> identifier ":" type_mark ";" |
| attribute_designator |
::= |
attribute_simple_name |
| attribute_name |
::= |
prefix signature "\'" attribute_designator ( "(" expression ( "," expression )* ")" )? |
| attribute_specification |
::= |
<ATTRIBUTE> attribute_designator <OF> entity_specification <IS> expression ";" |
| base_unit_declaration |
::= |
identifier ";" |
| binding_indication |
::= |
( <USE> entity_aspect )? ( generic_map_aspect )? ( port_map_aspect )? |
| block_configuration |
::= |
<FOR> block_specification ( use_clause )* ( configuration_item )* <END> <FOR> ";" |
| block_declarative_item |
::= |
( subprogram_declaration | subprogram_body | 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 | nature_declaration | subnature_declaration | quantity_declaration | terminal_declaration ) |
| block_declarative_part |
::= |
( block_declarative_item )* |
| block_header |
::= |
( generic_clause ( generic_map_aspect ";" )? )? ( port_clause ( port_map_aspect ";" )? )? |
| block_specification |
::= |
( architecture_name | block_statement_label | generate_statement_label ( "(" index_specification ")" )? ) |
| block_statement |
::= |
block_label ":" <BLOCK> ( "(" guard_expression ")" )? ( <IS> )? block_header block_declarative_part <BEGIN> block_statement_part <END> <BLOCK> ( block_label )? ";" |
| block_statement_part |
::= |
( architecture_statement )* |
| break_statement |
::= |
( label ":" )? <BREAK> ( break_list )? ( <WHEN> condition )? ";" |
| break_list |
::= |
break_element ( "," break_element )* |
| break_element |
::= |
( selector_clause )? quantity_name "=>" expression |
| selector_clause |
::= |
<FOR> quantity_name <USE> |
| case_statement |
::= |
( case_label ":" )? <CASE> expression <IS> case_statement_alternative ( case_statement_alternative )* <END> <CASE> ( case_label )? ";" |
| case_statement_alternative |
::= |
<WHEN> choices "=>" sequence_of_statements |
| choice |
::= |
( simple_expression | discrete_range | element_simple_name | <OTHERS> ) |
| choices |
::= |
choice ( "|" choice )* |
| component_configuration |
::= |
<FOR> component_specification ( binding_indication ";" )? ( block_configuration )? <END> <FOR> ";" |
| component_declaration |
::= |
<COMPONENT> identifier ( <IS> )? ( local_generic_clause )? ( local_port_clause )? <END> <COMPONENT> ( component_simple_name )? ";" |
| component_instantiation_statement |
::= |
instantiation_label ":" instantiated_unit ( generic_map_aspect )? ( port_map_aspect )? ";" |
| composite_nature_definition |
::= |
array_nature_definition |
|
| |
record_nature_definition |
| component_specification |
::= |
instantiation_list ":" component_name |
| composite_type_definition |
::= |
( array_type_definition | record_type_definition ) |
| concurrent_assertion_statement |
::= |
( label ":" )? ( <POSTPONED> )? assertion ";" |
| concurrent_procedure_call_statement |
::= |
( label ":" )? ( <POSTPONED> )? procedure_call ";" |
| concurrent_signal_assignment_statement |
::= |
( label ":" )? ( <POSTPONED> )? ( conditional_signal_assignment | selected_signal_assignment ) |
| condition |
::= |
boolean_expression |
| condition_clause |
::= |
<UNTIL> condition |
| conditional_signal_assignment |
::= |
target "<=" options_ conditional_waveforms ";" |
| conditional_waveforms |
::= |
waveform ( <WHEN> condition <ELSE> waveform )* ( <WHEN> condition )? |
| configuration_declaration |
::= |
<CONFIGURATION> identifier <OF> entity_name <IS> configuration_declarative_part block_configuration <END> ( <CONFIGURATION> )? ( configuration_simple_name )? ";" |
| configuration_declarative_item |
::= |
( use_clause | attribute_specification | group_declaration ) |
| configuration_declarative_part |
::= |
( configuration_declarative_item )* |
| configuration_item |
::= |
block_configuration |
|
| |
component_configuration |
| configuration_specification |
::= |
<FOR> component_specification binding_indication ";" |
| constant_declaration |
::= |
<CONSTANT> identifier_list ":" subtype_indication ( ":=" expression )? ";" |
| constrained_array_definition |
::= |
<ARRAY> index_constraint <OF> element_subtype_indication |
| constraint |
::= |
range_constraint |
|
| |
index_constraint |
| context_clause |
::= |
( context_item )* |
| context_item |
::= |
library_clause |
|
| |
use_clause |
| terminal_declaration |
::= |
<TERMINAL> identifier_list ":" subnature_indication ";" |
| terminal_aspect |
::= |
plus_terminal_name ( <TO> minus_terminal_name )? |
| delay_mechanism |
::= |
( <TRANSPORT> | ( <REJECT> time_expression )? <INERTIAL> ) |
| design_file |
::= |
( design_unit )+ <EOF> |
| design_unit |
::= |
context_clause library_unit |
| designator |
::= |
identifier |
|
| |
operator_symbol |
| direction |
::= |
( <TO> | <DOWNTO> ) |
| disconnection_specification |
::= |
<DISCONNECT> guarded_signal_specification <AFTER> time_expression ";" |
| discrete_range |
::= |
range |
|
| |
discrete_subtype_indication |
|
| |
range |
| element_association |
::= |
( choices "=>" )? expression |
| element_declaration |
::= |
identifier_list ":" element_subtype_definition ";" |
| element_subtype_definition |
::= |
subtype_indication |
| entity_aspect |
::= |
( <ENTITY> entity_name ( "(" architecture_identifier ")" )? | <CONFIGURATION> configuration_name | <OPEN> ) |
| entity_class |
::= |
<ENTITY> |
|
| |
<ARCHITECTURE> |
|
| |
<CONFIGURATION> |
|
| |
<PROCEDURE> |
|
| |
<FUNCTION> |
|
| |
<PACKAGE> |
|
| |
<TYPE> |
|
| |
<SUBTYPE> |
|
| |
<CONSTANT> |
|
| |
<SIGNAL> |
|
| |
<VARIABLE> |
|
| |
<COMPONENT> |
|
| |
<LABEL> |
|
| |
<LITERAL> |
|
| |
<UNITS> |
|
| |
<GROUP> |
|
| |
<FILE> |
|
| |
<SUBNATURE> |
|
| |
<NATURE> |
|
| |
<TERMINAL> |
| entity_class_entry |
::= |
entity_class ( "<>" )? |
| entity_class_entry_list |
::= |
entity_class_entry ( "," entity_class_entry )* |
| entity_declaration |
::= |
<ENTITY> identifier <IS> entity_header entity_declarative_part ( <BEGIN> entity_statement_part )? <END> ( <ENTITY> )? ( entity_simple_name )? ";" |
| entity_declarative_item |
::= |
( subprogram_declaration | subprogram_body | 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 | nature_declaration | subnature_declaration | terminal_declaration ) |
| nature_declaration |
::= |
<NATURE> identifier <IS> nature_definition ";" |
| nature_definition |
::= |
scalar_nature_definition |
|
| |
composite_nature_definition |
| subnature_declaration |
::= |
<SUBNATURE> identifier <IS> subnature_indication ";" |
| subnature_indication |
::= |
nature_mark ( index_constraint )? ( <TOLERANCE> string_expression <ACROSS> string_expression <THROUGH> )? |
| nature_mark |
::= |
nature_name |
|
| |
subnature_name |
| entity_declarative_part |
::= |
( entity_declarative_item )* |
| entity_designator |
::= |
entity_tag signature |
| entity_header |
::= |
( formal_generic_clause )? ( formal_port_clause )? |
| entity_name_list |
::= |
( entity_designator ( "," entity_designator )* | <OTHERS> | <ALL> ) |
| entity_specification |
::= |
entity_name_list ":" entity_class |
| entity_statement |
::= |
concurrent_assertion_statement |
|
| |
passive_process_statement |
|
| |
passive_concurrent_procedure_call_statement |
| entity_statement_part |
::= |
( entity_statement )* |
| entity_tag |
::= |
( simple_name | <character_literal> | operator_symbol ) |
| enumeration_literal |
::= |
( <character_literal> | identifier ) |
| enumeration_type_definition |
::= |
"(" enumeration_literal ( "," enumeration_literal )* ")" |
| exit_statement |
::= |
( label ":" )? <EXIT> ( loop_label )? ( <WHEN> condition )? ";" |
| expression |
::= |
relation ( logical_operator relation )* |
| factor |
::= |
<ABS> primary |
|
| |
<NOT> primary |
|
| |
primary ( <EXP> primary )? |
| file_declaration |
::= |
<FILE> identifier_list ":" subtype_indication ( file_open_information )? ";" |
| file_logical_name |
::= |
string_expression |
| file_open_information |
::= |
( <OPEN> file_open_kind_expression )? <IS> file_logical_name |
| file_type_definition |
::= |
<FILE> <OF> type_mark |
| floating_type_definition |
::= |
range_constraint |
| formal_designator |
::= |
generic_name |
|
| |
port_name |
|
| |
parameter_name |
| formal_parameter_list |
::= |
parameter_interface_list |
| formal_part |
::= |
function_name "(" formal_designator ")" |
|
| |
type_mark "(" formal_designator ")" |
|
| |
formal_designator |
| full_type_declaration |
::= |
<TYPE> identifier <IS> type_definition ";" |
| function_call |
::= |
function_name ( "(" actual_parameter_part ")" )? |
| generate_statement |
::= |
generate_label ":" generation_scheme <GENERATE> ( ( block_declarative_item )* <BEGIN> )? ( architecture_statement )* <END> <GENERATE> ( generate_label )? ";" |
| concurrent_break_statement |
::= |
( label ":" )? <BREAK> ( break_list )? ( sensitivity_clause )? ( <WHEN> condition )? ";" |
| generation_scheme |
::= |
( <FOR> generate_parameter_specification | <IF> condition ) |
| generic_clause |
::= |
<GENERIC> "(" generic_list ")" ";" |
| generic_list |
::= |
generic_interface_list |
| generic_map_aspect |
::= |
<GENERIC> <MAP> "(" generic_association_list ")" |
| group_constituent |
::= |
( name | <character_literal> ) |
| group_constituent_list |
::= |
group_constituent ( "," group_constituent )* |
| group_template_declaration |
::= |
<GROUP> identifier <IS> "(" entity_class_entry_list ")" ";" |
| group_declaration |
::= |
<GROUP> identifier ":" group_template_name "(" group_constituent_list ")" ";" |
| guarded_signal_specification |
::= |
guarded_signal_list ":" type_mark |
| identifier |
::= |
( <basic_identifier> | <extended_identifier> ) |
| identifier_list |
::= |
identifier ( "," identifier )* |
| if_statement |
::= |
( 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 ";" |
| index_constraint |
::= |
"(" discrete_range ( "," discrete_range )* ")" |
| index_specification |
::= |
( discrete_range | static_expression ) |
| index_subtype_definition |
::= |
type_mark <RANGE> "<>" |
| indexed_name |
::= |
prefix "(" expression ( "," expression )* ")" |
| instantiated_unit |
::= |
( ( <COMPONENT> )? component_name | <ENTITY> entity_name ( "(" architecture_identifier ")" )? | <CONFIGURATION> configuration_name ) |
| instantiation_list |
::= |
( instantiation_label ( "," instantiation_label )* | <OTHERS> | <ALL> ) |
| integer_type_definition |
::= |
range_constraint |
| interface_constant_declaration |
::= |
( <CONSTANT> )? identifier_list ":" ( <IN> )? subtype_indication ( ":=" static_expression )? |
| interface_declaration |
::= |
interface_constant_declaration |
|
| |
interface_signal_declaration |
|
| |
interface_variable_declaration |
|
| |
interface_file_declaration |
|
| |
interface_terminal_declaration |
|
| |
interface_quantity_declaration |
| interface_terminal_declaration |
::= |
<TERMINAL> identifier_list ":" subnature_indication |
| interface_quantity_declaration |
::= |
<QUANTITY> identifier_list ":" ( <IN> | <OUT> )? subtype_indication ( ":=" static_expression )? |
| interface_element |
::= |
interface_declaration |
| interface_file_declaration |
::= |
<FILE> identifier_list ":" subtype_indication |
| interface_list |
::= |
interface_element ( ";" interface_element )* |
| interface_signal_declaration |
::= |
( <SIGNAL> )? identifier_list ":" ( mode )? subtype_indication ( <BUS> )? ( ":=" static_expression )? |
| interface_variable_declaration |
::= |
( <VARIABLE> )? identifier_list ":" ( mode )? subtype_indication ( ":=" static_expression )? |
| iteration_scheme |
::= |
( <WHILE> condition | <FOR> loop_parameter_specification ) |
| label |
::= |
identifier |
| library_clause |
::= |
<LIBRARY> logical_name_list ";" |
| library_unit |
::= |
primary_unit |
|
| |
secondary_unit |
| literal |
::= |
( numeric_literal | enumeration_literal | <string_literal> | <bit_string_literal> | <NULL> ) |
| logical_name |
::= |
identifier |
| logical_name_list |
::= |
logical_name ( "," logical_name )* |
| logical_operator |
::= |
<AND> |
|
| |
<OR> |
|
| |
<NAND> |
|
| |
<NOR> |
|
| |
<XOR> |
|
| |
<XNOR> |
| loop_statement |
::= |
( loop_label ":" )? ( iteration_scheme )? <LOOP> sequence_of_statements <END> <LOOP> ( loop_label )? ";" |
| miscellaneous_operator |
::= |
<EXP> |
|
| |
<ABS> |
|
| |
<NOT> |
| mode |
::= |
( <IN> | <OUT> | <INOUT> | <BUFFER> | <LINKAGE> ) |
| multiplying_operator |
::= |
"*" |
|
| |
"/" |
|
| |
<MOD> |
|
| |
<REM> |
| name |
::= |
( simple_name | operator_symbol ) ( name_extension )? |
| name_extension |
::= |
( signature "\'" attribute_designator ( "(" expression ")" )? | "." suffix | "(" discrete_range ")" | "(" expression ( "," expression )* ")" ) ( name_extension )? |
| nature_element_declaration |
::= |
identifier_list ":" element_subnature_definition |
| element_subnature_definition |
::= |
subnature_indication |
| next_statement |
::= |
( label ":" )? <NEXT> ( loop_label )? ( <WHEN> condition )? ";" |
| null_statement |
::= |
( label ":" )? <NULL> ";" |
| numeric_literal |
::= |
physical_literal |
|
| |
abstract_literal |
| object_declaration |
::= |
( constant_declaration | signal_declaration | variable_declaration | file_declaration | terminal_declaration | quantity_declaration ) |
| operator_symbol |
::= |
<string_literal> |
| options_ |
::= |
( <GUARDED> )? ( delay_mechanism )? |
| package_body |
::= |
<PACKAGE> <BODY> package_simple_name <IS> package_body_declarative_part <END> ( <PACKAGE> <BODY> )? ( package_simple_name )? ";" |
| package_body_declarative_item |
::= |
( subprogram_declaration | subprogram_body | type_declaration | subtype_declaration | constant_declaration | shared_variable_declaration | file_declaration | alias_declaration | use_clause | group_template_declaration | group_declaration ) |
| package_body_declarative_part |
::= |
( package_body_declarative_item )* |
| package_declaration |
::= |
<PACKAGE> identifier <IS> package_declarative_part <END> ( <PACKAGE> )? ( package_simple_name )? ";" |
| package_declarative_item |
::= |
( subprogram_declaration | type_declaration | subtype_declaration | constant_declaration | signal_declaration | shared_variable_declaration | file_declaration | alias_declaration | component_declaration | attribute_declaration | attribute_specification | disconnection_specification | use_clause | group_template_declaration | group_declaration | nature_declaration | subnature_declaration | terminal_declaration ) |
| package_declarative_part |
::= |
( package_declarative_item )* |
| parameter_specification |
::= |
identifier <IN> discrete_range |
| physical_literal |
::= |
( abstract_literal )? unit_name |
| physical_type_definition |
::= |
range_constraint <UNITS> base_unit_declaration ( secondary_unit_declaration )* <END> <UNITS> ( physical_type_simple_name )? |
| port_clause |
::= |
<PORT> "(" port_list ")" ";" |
| port_list |
::= |
port_interface_list |
| port_map_aspect |
::= |
<PORT> <MAP> "(" port_association_list ")" |
| prefix |
::= |
( function_call | name ) |
| primary |
::= |
qualified_expression |
|
| |
function_call |
|
| |
name |
|
| |
literal |
|
| |
aggregate |
|
| |
"(" expression ")" |
|
| |
type_conversion |
|
| |
allocator |
| primary_unit |
::= |
entity_declaration |
|
| |
configuration_declaration |
|
| |
package_declaration |
| procedure_call |
::= |
procedure_name ( "(" actual_parameter_part ")" )? |
| procedure_call_statement |
::= |
( label ":" )? procedure_call ";" |
| process_declarative_item |
::= |
subprogram_declaration |
|
| |
subprogram_body |
|
| |
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 |
::= |
( process_declarative_item )* |
| process_statement |
::= |
( process_label ":" )? ( <POSTPONED> )? <PROCESS> ( "(" sensitivity_list ")" )? ( <IS> )? process_declarative_part <BEGIN> process_statement_part <END> ( <POSTPONED> )? <PROCESS> ( process_label )? ";" |
| process_statement_part |
::= |
( sequential_statement )* |
| qualified_expression |
::= |
type_mark "\'" ( aggregate | "(" expression ")" ) |
| range |
::= |
( simple_expression direction simple_expression | range_attribute_name ) |
| range_constraint |
::= |
<RANGE> range |
| record_nature_definition |
::= |
<RECORD> ( nature_element_declaration )+ <END> <RECORD> ( record_nature_simple_name )? |
| record_type_definition |
::= |
<RECORD> ( element_declaration )+ <END> <RECORD> ( record_type_simple_name )? |
| relation |
::= |
shift_expression ( relational_operator shift_expression )? |
| relational_operator |
::= |
<EQ> |
|
| |
<NEQ> |
|
| |
<LO> |
|
| |
<LE> |
|
| |
<GT> |
|
| |
<GE> |
| report_statement |
::= |
( label ":" )? <REPORT> expression ( <SEVERITY> expression )? ";" |
| return_statement |
::= |
( label ":" )? <RETURN> ( expression )? ";" |
| scalar_nature_definition |
::= |
type_mark <ACROSS> type_mark <THROUGH> |
| scalar_type_definition |
::= |
physical_type_definition |
|
| |
enumeration_type_definition |
|
| |
range_constraint |
| secondary_unit |
::= |
architecture_body |
|
| |
package_body |
| secondary_unit_declaration |
::= |
identifier "=" physical_literal ";" |
| selected_name |
::= |
( simple_name | operator_symbol ) ( name_extension )? |
| selected_signal_assignment |
::= |
<WITH> expression <SELECT> target "<=" options_ selected_waveforms ";" |
| selected_waveforms |
::= |
waveform <WHEN> choices ( "," waveform <WHEN> choices )* |
| sensitivity_clause |
::= |
<ON> sensitivity_list |
| sensitivity_list |
::= |
signal_name ( "," signal_name )* |
| sequence_of_statements |
::= |
( sequential_statement )* |
| sequential_statement |
::= |
( 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 | break_statement ) |
| shift_expression |
::= |
simple_expression ( shift_operator simple_expression )? |
| shift_operator |
::= |
<SLL> |
|
| |
<SRL> |
|
| |
<SLA> |
|
| |
<SRA> |
|
| |
<ROL> |
|
| |
<ROR> |
| sign |
::= |
( "+" | "-" ) |
| signal_assignment_statement |
::= |
( label ":" )? target "<=" ( delay_mechanism )? waveform ";" |
| signal_declaration |
::= |
<SIGNAL> identifier_list ":" subtype_indication ( signal_kind )? ( ":=" expression )? ";" |
| signal_kind |
::= |
( <REGISTER> | <BUS> ) |
| signal_list |
::= |
( signal_name ( "," signal_name )* | <OTHERS> | <ALL> ) |
| signature |
::= |
( type_mark ( "," type_mark )* )? ( <RETURN> type_mark )? |
| simple_expression |
::= |
( sign )? term ( adding_operator term )* |
| simple_name |
::= |
identifier |
| slice_name |
::= |
prefix "(" discrete_range ")" |
| subprogram_body |
::= |
subprogram_specification <IS> subprogram_declarative_part <BEGIN> subprogram_statement_part <END> ( subprogram_kind )? ( designator )? ";" |
| subprogram_declaration |
::= |
subprogram_specification ";" |
| subprogram_declarative_item |
::= |
subprogram_declaration |
|
| |
subprogram_body |
|
| |
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 |
::= |
( subprogram_declarative_item )* |
| subprogram_kind |
::= |
<PROCEDURE> |
|
| |
<FUNCTION> |
| subprogram_specification |
::= |
( <PROCEDURE> designator ( "(" formal_parameter_list ")" )? | ( <PURE> | <IMPURE> )? <FUNCTION> designator ( "(" formal_parameter_list ")" )? <RETURN> type_mark ) |
| subprogram_statement_part |
::= |
( sequential_statement )* |
| subtype_declaration |
::= |
<SUBTYPE> identifier <IS> subtype_indication ";" |
| subtype_indication |
::= |
( resolution_function_name type_mark constraint ( tolerance_aspect )? | type_mark constraint ( tolerance_aspect )? | resolution_function_name type_mark ( tolerance_aspect )? | type_mark ( tolerance_aspect )? ) |
| tolerance_aspect |
::= |
<TOLERANCE> string_expression |
| quantity_declaration |
::= |
free_quantity_declaration |
|
| |
branch_quantity_declaration |
|
| |
source_quantity_declaration |
| free_quantity_declaration |
::= |
<QUANTITY> identifier_list ":" subtype_indication ( ":=" expression )? ";" |
| branch_quantity_declaration |
::= |
<QUANTITY> ( across_aspect )? ( through_aspect )? terminal_aspect ";" |
| source_quantity_declaration |
::= |
<QUANTITY> identifier_list ":" subtype_indication source_aspect ";" |
| across_aspect |
::= |
identifier_list ( tolerance_aspect )? ( ":=" expression )? <ACROSS> |
| through_aspect |
::= |
identifier_list ( tolerance_aspect )? ( ":=" expression )? <THROUGH> |
| source_aspect |
::= |
( <SPECTRUM> magnitude_simple_expression "," phase_simple_expression | <NOISE> magnitude_simple_expression ) |
| suffix |
::= |
simple_name |
|
| |
<character_literal> |
|
| |
operator_symbol |
|
| |
<ALL> |
| target |
::= |
name |
|
| |
aggregate |
| term |
::= |
factor ( multiplying_operator factor )* |
| timeout_clause |
::= |
<FOR> time_or_real_expression |
| type_conversion |
::= |
type_mark "(" expression ")" |
| type_declaration |
::= |
full_type_declaration |
|
| |
incomplete_type_declaration |
| type_definition |
::= |
scalar_type_definition |
|
| |
composite_type_definition |
|
| |
access_type_definition |
|
| |
file_type_definition |
| type_mark |
::= |
type_name |
|
| |
subtype_name |
| unconstrained_array_definition |
::= |
<ARRAY> "(" index_subtype_definition ( "," index_subtype_definition )* ")" <OF> element_subtype_indication |
| use_clause |
::= |
<USE> selected_name ( "," selected_name )* ";" |
| variable_assignment_statement |
::= |
( label ":" )? target ":=" expression ";" |
| variable_declaration |
::= |
( <SHARED> )? <VARIABLE> identifier_list ":" subtype_indication ( ":=" expression )? ";" |
| wait_statement |
::= |
( ":" label ":" )? <WAIT> ( sensitivity_clause )? ( condition_clause )? ( timeout_clause )? ";" |
| waveform |
::= |
( waveform_element ( "," waveform_element )* | <UNAFFECTED> ) |
| waveform_element |
::= |
( <NULL> ( <AFTER> time_expression )? | value_expression ( <AFTER> time_expression )? ) |
| simultaneous_statement_part |
::= |
( simultaneous_statement )* |
| simultaneous_statement |
::= |
simple_simultaneous_statement |
|
| |
simultaneous_if_statement |
|
| |
simultaneous_case_statement |
|
| |
simultaneous_procedural_statement |
|
| |
simultaneous_null_statement |
| simple_simultaneous_statement |
::= |
( label ":" )? ( <PURE> | <IMPURE> )? simple_expression "==" simple_expression ( tolerance_aspect )? ";" |
| simultaneous_if_statement |
::= |
( if_label ":" )? <IF> condition <USE> simultaneous_statement_part ( <ELSIF> condition <USE> simultaneous_statement_part )* ( <ELSE> simultaneous_statement_part )? <END> <USE> ( if_label )? ";" |
| simultaneous_case_statement |
::= |
( case_label ":" )? <CASE> expression <USE> ( simultaneous_alternative )* <END> <CASE> ( case_label )? ";" |
| simultaneous_alternative |
::= |
<WHEN> choices <USE> simultaneous_statement_part |
| simultaneous_procedural_statement |
::= |
( procedural_label ":" )? ( <PURE> | <IMPURE> )? <PROCEDURAL> ( <IS> )? procedural_declarative_part <BEGIN> procedural_statement_part <END> <PROCEDURAL> ( procedural_label )? ";" |
| procedural_label |
::= |
label |
| procedural_declarative_part |
::= |
( procedural_declarative_item )* |
| procedural_declarative_item |
::= |
subprogram_declaration |
|
| |
subprogram_body |
|
| |
type_declaration |
|
| |
subtype_declaration |
|
| |
constant_declaration |
|
| |
variable_declaration |
|
| |
alias_declaration |
|
| |
attribute_declaration |
|
| |
attribute_specification |
|
| |
use_clause |
|
| |
group_template_declaration |
|
| |
group_declaration |
| procedural_statement_part |
::= |
( sequential_statement )* |
| simultaneous_null_statement |
::= |
( label ":" )? <NULL> ";" |
| block_label |
::= |
label |
| block_statement_label |
::= |
label |
| case_label |
::= |
label |
| generate_label |
::= |
label |
| generate_statement_label |
::= |
label |
| if_label |
::= |
label |
| instantiation_label |
::= |
label |
| loop_label |
::= |
label |
| process_label |
::= |
label |
| architecture_simple_name |
::= |
simple_name |
| attribute_simple_name |
::= |
simple_name |
|
| |
<RANGE> |
| component_simple_name |
::= |
simple_name |
| configuration_simple_name |
::= |
simple_name |
| element_simple_name |
::= |
simple_name |
| entity_simple_name |
::= |
simple_name |
| package_simple_name |
::= |
simple_name |
| architecture_name |
::= |
name |
| entity_name |
::= |
name |
| file_name |
::= |
name |
| function_name |
::= |
name |
| configuration_name |
::= |
name |
| component_name |
::= |
name |
| generic_name |
::= |
name |
| group_template_name |
::= |
name |
| parameter_name |
::= |
name |
| physical_type_simple_name |
::= |
simple_name |
| port_name |
::= |
name |
| procedure_name |
::= |
name |
| range_attribute_name |
::= |
name |
| signal_name |
::= |
name |
| type_name |
::= |
name |
| record_nature_simple_name |
::= |
simple_name |
| record_type_simple_name |
::= |
simple_name |
| resolution_function_name |
::= |
name |
| subtype_name |
::= |
name |
| unit_name |
::= |
name |
| variable_name |
::= |
name |
| architecture_identifier |
::= |
identifier |
| static_expression |
::= |
expression |
| boolean_expression |
::= |
expression |
| file_open_kind_expression |
::= |
expression |
| guard_expression |
::= |
expression |
| time_expression |
::= |
expression |
| time_or_real_expression |
::= |
expression |
| value_expression |
::= |
expression |
| string_expression |
::= |
expression |
| guarded_signal_list |
::= |
signal_list |
| parameter_association_list |
::= |
association_list |
| port_association_list |
::= |
association_list |
| generic_association_list |
::= |
association_list |
| generic_interface_list |
::= |
interface_list |
| parameter_interface_list |
::= |
interface_list |
| port_interface_list |
::= |
interface_list |
| formal_port_clause |
::= |
port_clause |
| local_port_clause |
::= |
port_clause |
| formal_generic_clause |
::= |
generic_clause |
| local_generic_clause |
::= |
generic_clause |
| element_subtype_indication |
::= |
subtype_indication |
| discrete_subtype_indication |
::= |
subtype_indication |
| loop_parameter_specification |
::= |
parameter_specification |
| generate_parameter_specification |
::= |
parameter_specification |
| passive_concurrent_procedure_call_statement |
::= |
concurrent_procedure_call_statement |
| passive_process_statement |
::= |
process_statement |
| magnitude_simple_expression |
::= |
simple_expression |
| phase_simple_expression |
::= |
simple_expression |
| nature_name |
::= |
name |
| subnature_name |
::= |
name |
| terminal_name |
::= |
name |
| quantity_name |
::= |
name |
| plus_terminal_name |
::= |
name |
| minus_terminal_name |
::= |
name |
| shared_variable_declaration |
::= |
( <SHARED> )? <VARIABLE> identifier_list ":" subtype_indication ( ":=" expression )? ";" |
| error_skipto |
::= |
java code |