diff options
author | Unai Martinez-Corral <38422348+umarcor@users.noreply.github.com> | 2023-04-19 20:27:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-19 20:27:33 +0200 |
commit | cc5cf36c2d2e87eaf01b608c7391abdba8f9fff7 (patch) | |
tree | 49769a8bc72fd1d950074a74f38475016df2b11b /pyGHDL/dom/_Translate.py | |
parent | 6544b839fe6dceb56cb544bc4f69f0ab28100172 (diff) | |
parent | 989ec4ce0d43b90a5ada0a582c5b1ec6e610cb06 (diff) | |
download | ghdl-cc5cf36c2d2e87eaf01b608c7391abdba8f9fff7.tar.gz ghdl-cc5cf36c2d2e87eaf01b608c7391abdba8f9fff7.tar.bz2 ghdl-cc5cf36c2d2e87eaf01b608c7391abdba8f9fff7.zip |
pyGHDL: Reworked Symbols and Names (#2412)
Diffstat (limited to 'pyGHDL/dom/_Translate.py')
-rw-r--r-- | pyGHDL/dom/_Translate.py | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py index 9ccc05158..97c33cf7c 100644 --- a/pyGHDL/dom/_Translate.py +++ b/pyGHDL/dom/_Translate.py @@ -166,26 +166,25 @@ from pyGHDL.dom.PSL import DefaultClock @export -def GetNameFromNode(node: Iir) -> Name: +def GetName(node: Iir) -> Name: kind = GetIirKindOfNode(node) if kind == nodes.Iir_Kind.Simple_Name: name = GetNameOfNode(node) return SimpleName(node, name) elif kind == nodes.Iir_Kind.Selected_Name: name = GetNameOfNode(node) - prefixName = GetNameFromNode(nodes.Get_Prefix(node)) + prefixName = GetName(nodes.Get_Prefix(node)) return SelectedName(node, name, prefixName) - elif kind == nodes.Iir_Kind.Attribute_Name: - name = GetNameOfNode(node) - prefixName = GetNameFromNode(nodes.Get_Prefix(node)) - return AttributeName(node, name, prefixName) elif kind == nodes.Iir_Kind.Parenthesis_Name: - prefixName = GetNameFromNode(nodes.Get_Prefix(node)) + prefixName = GetName(nodes.Get_Prefix(node)) associations = GetAssociations(node) - return ParenthesisName(node, prefixName, associations) + elif kind == nodes.Iir_Kind.Attribute_Name: + name = GetNameOfNode(node) + prefixName = GetName(nodes.Get_Prefix(node)) + return AttributeName(node, name, prefixName) elif kind == nodes.Iir_Kind.Selected_By_All_Name: - prefixName = GetNameFromNode(nodes.Get_Prefix(node)) + prefixName = GetName(nodes.Get_Prefix(node)) return AllName(node, prefixName) else: raise DOMException(f"Unknown name kind '{kind.name}'") @@ -227,7 +226,7 @@ def GetArrayConstraintsFromSubtypeIndication( nodes.Iir_Kind.Selected_Name, nodes.Iir_Kind.Attribute_Name, ): - constraints.append(GetNameFromNode(constraint)) + constraints.append(GetName(constraint)) else: position = Position.parse(constraint) raise DOMException( @@ -277,7 +276,7 @@ def GetAnonymousTypeFromNode(node: Iir) -> BaseType: return IntegerType(node, typeName, r) elif kind in (nodes.Iir_Kind.Attribute_Name, nodes.Iir_Kind.Parenthesis_Name): - n = GetNameFromNode(typeDefinition) + n = GetName(typeDefinition) return IntegerType(node, typeName, n) elif kind == nodes.Iir_Kind.Physical_Type_Definition: @@ -322,8 +321,8 @@ def GetSubtypeIndicationFromIndicationNode(subtypeIndicationNode: Iir, entity: s @export def GetSimpleTypeFromNode(subtypeIndicationNode: Iir) -> SimpleSubtypeSymbol: - subtypeName = GetNameFromNode(subtypeIndicationNode) - return SimpleSubtypeSymbol(subtypeIndicationNode, str(subtypeName)) # XXX: hacked + subtypeName = GetName(subtypeIndicationNode) + return SimpleSubtypeSymbol(subtypeIndicationNode, subtypeName) @export @@ -341,7 +340,7 @@ def GetScalarConstrainedSubtypeFromNode( r = GetRangeFromNode(rangeConstraint) # todo: Get actual range from AttributeName node? - return ConstrainedScalarSubtypeSymbol(subtypeIndicationNode, str(simpleTypeMark), r) # XXX: hacked + return ConstrainedScalarSubtypeSymbol(subtypeIndicationNode, simpleTypeMark, r) @export @@ -353,7 +352,7 @@ def GetCompositeConstrainedSubtypeFromNode( simpleTypeMark = SimpleName(typeMark, typeMarkName) constraints = GetArrayConstraintsFromSubtypeIndication(subtypeIndicationNode) - return ConstrainedCompositeSubtypeSymbol(subtypeIndicationNode, str(simpleTypeMark), constraints) # XXX: hacked + return ConstrainedCompositeSubtypeSymbol(subtypeIndicationNode, simpleTypeMark, constraints) @export @@ -609,7 +608,7 @@ def GetMapAspect(mapAspect: Iir, cls: Type, entity: str) -> Generator[Associatio if formalNode is nodes.Null_Iir: formal = None else: - formal = GetNameFromNode(formalNode) + formal = GetName(formalNode) actual = GetExpressionFromNode(nodes.Get_Actual(generic)) @@ -619,7 +618,7 @@ def GetMapAspect(mapAspect: Iir, cls: Type, entity: str) -> Generator[Associatio if formalNode is nodes.Null_Iir: formal = None else: - formal = GetNameFromNode(formalNode) + formal = GetName(formalNode) yield cls(generic, OpenName(generic), formal) else: |