update escapedidentifier
This commit is contained in:
parent
aaf0ff373b
commit
03d6039783
|
@ -51,14 +51,14 @@ impl Expression {
|
|||
Tag::REFERENCE,
|
||||
Tag::LOCAL_ROOT,
|
||||
Tag::UNQUALIFIED_ID,
|
||||
Tag::SYMBOL_IDENTIFIER,
|
||||
Tag::ESCAPEDIDENTIFIER,
|
||||
],
|
||||
vec![
|
||||
Tag::REFERENCE_CALL_BASE,
|
||||
Tag::REFERENCE,
|
||||
Tag::LOCAL_ROOT,
|
||||
Tag::UNQUALIFIED_ID,
|
||||
Tag::ESCAPEDIDENTIFIER,
|
||||
Tag::SYMBOL_IDENTIFIER,
|
||||
],
|
||||
];
|
||||
|
||||
|
@ -66,7 +66,7 @@ impl Expression {
|
|||
.iter()
|
||||
.flat_map(|x|Tools::match_tags(vec![json], x.to_vec()))
|
||||
.collect();
|
||||
assert_eq!(json_symbol_identifier.len(), 1,);
|
||||
assert_eq!(json_symbol_identifier.len(), 1);
|
||||
|
||||
let json_scalar = Tools::match_tags(
|
||||
vec![json],
|
||||
|
@ -133,7 +133,9 @@ impl Expression {
|
|||
None => builder.ins().prb(symbol_value),
|
||||
Some(s) => builder.ins().ld(s),
|
||||
}
|
||||
} else if context.symbol.contains_key(&symbol) {
|
||||
}
|
||||
else if context.symbol.contains_key(&symbol)
|
||||
{
|
||||
let symbol_info = &context.symbol[&symbol];
|
||||
assert_eq!(symbol_info.kind, SymbolKind::Param);
|
||||
builder.ins().const_int(symbol_info.value.clone())
|
||||
|
|
|
@ -30,6 +30,7 @@ impl<'a> ModuleDeclaration {
|
|||
SymbolDeclaration::declare_port(json, context);
|
||||
SymbolDeclaration::declare_reg(json, context);
|
||||
SymbolDeclaration::declare_wire(json, context);
|
||||
SymbolDeclaration::declare_wire1(json, context);
|
||||
SymbolDeclaration::declare_param(json, context);
|
||||
|
||||
Self::gen_entity_data(json, context);
|
||||
|
|
|
@ -290,6 +290,47 @@ impl<'a> SymbolDeclaration {
|
|||
);
|
||||
}
|
||||
|
||||
pub fn declare_wire1(json: &'a JsonValue, context: &mut ModuleContext<'a>) {
|
||||
let base_path = [
|
||||
Tag::MODULE_DECLARATION,
|
||||
Tag::MODULE_ITEM_LIST,
|
||||
Tag::NET_DECLARATION,
|
||||
];
|
||||
|
||||
let name_path = [
|
||||
Tag::NET_DECLARATION,
|
||||
Tag::NET_VARIABLE_DECLARATION_ASSIGN,
|
||||
Tag::NET_VARIABLE,
|
||||
Tag::ESCAPEDIDENTIFIER,
|
||||
];
|
||||
|
||||
let dim_path = [
|
||||
Tag::NET_DECLARATION,
|
||||
Tag::DATA_TYPE_IMPLICIT_ID_DIMENSIONS,
|
||||
Tag::DATA_TYPE,
|
||||
Tag::PACKED_DIMENSIONS,
|
||||
Tag::DECLARATION_DIMENSIONS,
|
||||
Tag::DIMENSION_RANGE,
|
||||
Tag::EXPRESSION,
|
||||
Tag::NUMBER,
|
||||
Tag::DEC_NUMBER,
|
||||
];
|
||||
|
||||
let json_wires: Vec<&JsonValue> = Tools::match_tags(vec![json], base_path.to_vec())
|
||||
.iter()
|
||||
.filter(|&x| x["children"][0]["tag"] == Tag::WIRE)
|
||||
.map(|&x| x)
|
||||
.collect();
|
||||
|
||||
Self::gen_var_info(
|
||||
json_wires,
|
||||
name_path.to_vec(),
|
||||
dim_path.to_vec(),
|
||||
SymbolKind::Wire,
|
||||
context,
|
||||
);
|
||||
}
|
||||
|
||||
fn gen_var_info(
|
||||
json_vec: Vec<&'a JsonValue>,
|
||||
name_path: Vec<&str>,
|
||||
|
|
Loading…
Reference in New Issue