update vhdl_parser
This commit is contained in:
parent
d90d92f635
commit
621dea1819
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user