[−][src]Module moore_vhdl_syntax::parser::rules
This module implements a first stage recursive descent parser for VHDL. It
can process a stream of input tokens into the coarse, generalized abstract
syntax tree defined in ast
. The grammar productions/rules outlined in
the VHDL standard are collapsed into more general rules as outlined in the
following table.
VHDL Standard | Generalized to |
---|---|
aggregate | paren_expr |
array_constraint | name |
attribute_declaration | attr_decl |
attribute_name | name |
attribute_specification | attr_decl |
block_specification | name |
configuration_item | decl_item |
constraint | primary_expr |
enumeration_type_definition | paren_expr |
external_name | ignored |
function_call | name |
generate_specification | expr |
generic_clause | generic_clause |
generic_map_aspect | map_aspect |
group_declaration | group_decl |
group_template_declaration | group_decl |
indexed_name | name |
interface_subprogram_declaration | subprog_spec |
name | name |
name/character_literal | primary_name |
name/operator_symbol | primary_name |
name/simple_name | primary_name |
port_clause | port_clause |
port_map_aspect | map_aspect |
range_constraint | name |
record_constraint | name, paren_expr |
resolution_indication | primary_expr |
selected_name | name |
slice_name | name |
subprogram_body | subprog_spec |
subprogram_declaration | subprog_spec |
subprogram_instantiation_declaration | subprog_spec |
subtype_indication | name, primary_expr |
target | primary_expr |
time_expression | expr |
type_mark | name |
Structs
Recovered | |
Reported |
Enums
ExprPrec | The precedence of an expression. |
Traits
Parser |
Functions
parse_alias_decl | Parse an alias declaration. See IEEE 1076-2008 section 6.6. |
parse_arch_body | Parse an architecture body. See IEEE 1076-2008 section 3.3. |
parse_assert_stmt | Parse an assertion statement. See IEEE 1076-2008 section 10.3. |
parse_assign_dst_tail | |
parse_assign_tail | Parse the tail of an assign statement. This function assumes that the name of the signal to be assigned has already been parsed. See IEEE 1076-2008 section 10.5. |
parse_attr_decl | Parse an attribute declaration or specification. See IEEE 1076-2008 sections 6.7 and 7.2. |
parse_binding_ind | Parse a binding indication. See IEEE 1076-2008 section 7.3.2.1. The trailing semicolon is required only if at least one of the aspect has been parsed. |
parse_block_comp_config | Parse a block or component configuration. See IEEE 1076-2008 sections 3.4.2 and 3.4.3. |
parse_block_comp_decl_item | Parse a block or component configuration declarative item. |
parse_block_comp_spec | Parse a block or component specification. See IEEE 1067-2008 section 7.3.1. |
parse_block_stmt | Parse a block statement. See IEEE 1076-2008 section 11.2. |
parse_case_generate_stmt | Parse a generate case statement. See IEEE 1076-2008 section 11.8. |
parse_case_stmt | Parse a case statement. See IEEE 1076-2008 section 10.9. |
parse_component_decl | Parse a component declaration. See IEEE 1076-2008 section 6.8. |
parse_cond_waves | Parse a list of conditional waveforms. See IEEE 1076-2008 section 10.5. |
parse_config_decl | Parse a configuration declaration. See IEEE 1076-2008 section 3.4. |
parse_config_spec | Parse a configuration specification. See IEEE 1076-2008 section 7.3.1. |
parse_context_decl | Parse a context declaration. IEEE 1076-2008 section 13.3. |
parse_context_ref | |
parse_design_file | Parse an entire design file. IEEE 1076-2008 section 13.1. |
parse_design_unit | Parse a single design unit. IEEE 1076-2008 section 13.1. |
parse_discon_spec | Parse a disconnection specification. See IEEE 1076-2008 section 7.4. |
parse_entity_class | Parse an entity class. See IEEE 1076-2008 section 7.2. |
parse_entity_decl | Parse an entity declaration. See IEEE 1076-2008 section 3.2. |
parse_expr | |
parse_expr_prec | Parse an expression with a precedence higher than |
parse_expr_suffix | Parse an expression suffix. Given an already parsed expression and its precedence, try to parse additional tokens that extend the already parsed expression. This is currently limited to binary operations. |
parse_for_generate_stmt | Parse a generate for statement. See IEEE 1076-2008 section 11.8. |
parse_generate_body | Parse a generate body. See IEEE 1076-2008 section 11.8. |
parse_group_decl | Parse a group declaration or group template declaration. See IEEE 1076-2008 sections 6.9 and 6.10. |
parse_if_generate_stmt | Parse a generate if statement. See IEEE 1076-2008 section 11.8. |
parse_if_stmt | Parse an if statement. See IEEE 1076-2008 section 10.8. |
parse_inst_or_call_tail | Parse the tail of an instantiation or procedure call statement. See IEEE 1076-2008 sections 10.7, 11.4, and 11.7. |
parse_intf_decl | Parse an interface declaration. These are generally part of an interface list as they appear in generic and port clauses within for example entity declarations. See IEEE 1076-2008 section 6.5.1. |
parse_library_clause | Parse a library clause. IEEE 1076-2008 section 13.2. |
parse_loop_stmt | Parse a loop statement. See IEEE 1076-2008 section 10.10. |
parse_name | Parse a name. IEEE 1076-2008 section 8. |
parse_name_suffix | Parse the suffix to a name. IEEE 1076-2008 section 8. |
parse_nexit_stmt | Parse a next or exit statement. See IEEE 1076-2008 sections 10.11 and 10.12. |
parse_null_stmt | Parse a null statement. See IEEE 1076-2008 section 10.14. |
parse_object_decl | Parse a constant, signal, variable, or file declaration. See IEEE 1076-2008 section 6.4.2. |
parse_package_body | Parse a package body. See IEEE 1076-2008 section 4.8. |
parse_package_decl | Parse a package declaration. See IEEE 1076-2008 section 4.7. |
parse_package_inst | Parse a package instantiation declaration. See IEEE 1076-2008 section 4.9. |
parse_paren_elem_vec | |
parse_paren_expr | Try to parse a parenthesized expression. This is a combination of a variety of rules from the VHDL grammar. Most notably, it combines the following: |
parse_primary_expr | |
parse_proc_stmt | Parse a process statement. See IEEE 1076-2008 section 11.3. |
parse_report_stmt | Parse a report statement. See IEEE 1076-2008 section 10.4. |
parse_return_stmt | Parse a return statement. See IEEE 1076-2008 section 10.13. |
parse_select_assign | Parse a select assign statement. See IEEE 1076-2008 section 10.5. |
parse_selected_waves | Parse a list of selected waveforms. See IEEE 1076-2008 section 10.5. |
parse_signature | |
parse_stmt | Parse a sequential or concurrent statement. |
parse_subprog_decl_item | Parse a subprogram declarative item, which is either a subprogram declaration, body, or instantiation. See IEEE 1076-2008 section 4.2. |
parse_subprog_spec | Parse a subprogram specification. This covers the initial part of a subprogram declaration, body, instantiation, or interface declaration. See IEEE 1076-2008 sections 4.2 and 6.5.4. Note that not all combinations of keywords and qualifiers that this parser accepts are actually valid. |
parse_subtype_decl | Parse a subtype declaration. See IEEE 1076-2008 section 6.3. |
parse_subtype_ind | Parse a subtype indication. See IEEE 1076-2008 section 6.3. |
parse_type_decl | Parse a type declaration. See IEEE 1076-2008 section 6.2. |
parse_use_clause | Parse a use clause. IEEE 1076-2008 section 12.4. |
parse_vunit_binding_ind | |
parse_wait_stmt | Parse a wait statement. See IEEE 1076-2008 section 10.2. |
parse_wave | Parse a waveform. See IEEE 1076-2008 section 10.5. |
try_context_item | Parse a context item. IEEE 1076-2008 section 13.4. |
try_decl_item | Try to parse a declarative item. See IEEE 1076-2008 section 3.2.3. |
try_delay_mech | Try to parse a delay mechanism. |
try_force_mode | |
try_generic_clause | Try to parse a generic clause. See IEEE 1076-2008 section 6.5.6.2. |
try_label | Parse an optional label, which basically is just an identifier followed by a colon. This is interesting for statement parsing. See IEEE 1076-2008 section 10. |
try_map_aspect | Try to parse a generic or port map aspect. See IEEE 1076-2008 sections 6.5.7.2 and 6.5.7.3. |
try_name | Try to parse a name. IEEE 1076-2008 section 8. |
try_name_or_qualified_primary_expr | |
try_paren_expr | |
try_port_clause | Try to parse a port clause. See IEEE 1076-2008 section 6.5.6.3. |
try_primary_name | Try to parse a primary name. IEEE 1076-2008 section 8. |
Type Definitions
RecoveredResult | |
ReportedResult |