update vhdl_parser

This commit is contained in:
light-ly 2024-12-25 21:38:47 +08:00
parent d90d92f635
commit 621dea1819

View File

@ -34,11 +34,7 @@ pub fn make_fast_from_units(
arch_and_entity.iter().for_each(|units| {
match units {
(Some((arch, arch_tokens)), entity_units) => {
let name = if let Some((entity, _)) = entity_units {
entity.ident.tree.item.name_utf8()
} else {
"".to_string()
};
let name = arch.entity_name.item.item.name_utf8();
let arch_name = arch.ident.tree.item.name_utf8();
let range = get_range_from_token(
arch_tokens.get_token(arch.span().get_start_token()),
@ -47,6 +43,20 @@ pub fn make_fast_from_units(
hdlparam.new_vhdl_module(name, arch_name, range);
if let Some((entity, entity_tokens)) = entity_units {
if let Some(param_list) = &entity.generic_clause {
parse_interface_list(param_list, &entity_tokens).iter().for_each(|(name, _, net_type, _, init, range)| {
hdlparam.add_entity_parameter(name, net_type, init, range.clone());
});
}
if let Some(port_list) = &entity.port_clause {
parse_interface_list(port_list, &entity_tokens).iter().for_each(|(name, dir_type, net_type, width, init, range)| {
hdlparam.add_entity_port(name, dir_type, net_type, width, range.clone());
});
}
}
let instances = arch.statements.iter().filter(|statement| {
match statement.statement.item {
ConcurrentStatement::Instance(_) => true,