aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/_Utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyGHDL/dom/_Utils.py')
-rw-r--r--pyGHDL/dom/_Utils.py44
1 files changed, 36 insertions, 8 deletions
diff --git a/pyGHDL/dom/_Utils.py b/pyGHDL/dom/_Utils.py
index 3803374f3..20171b45c 100644
--- a/pyGHDL/dom/_Utils.py
+++ b/pyGHDL/dom/_Utils.py
@@ -39,7 +39,7 @@ from pyGHDL.dom.Symbol import (
PackageReferenceSymbol,
PackageMembersReferenceSymbol,
AllPackageMembersReferenceSymbol,
- ContextReferenceSymbol,
+ ContextReferenceSymbol, EntityInstantiationSymbol, ComponentInstantiationSymbol, ConfigurationInstantiationSymbol,
)
from pyVHDLModel.SyntaxModel import Mode
@@ -145,6 +145,25 @@ def GetModeOfNode(node: Iir) -> Mode:
raise DOMException(f"Unknown mode '{ex.args[0]}'.") from ex
+def GetLibrarySymbol(node: Iir) -> LibraryReferenceSymbol:
+ kind = GetIirKindOfNode(node)
+ if kind == nodes.Iir_Kind.Simple_Name:
+ name = GetNameOfNode(node)
+ return LibraryReferenceSymbol(node, name)
+ else:
+ raise DOMException(f"{kind} at {Position.parse(node)}")
+
+
+def GetPackageSymbol(node: Iir) -> PackageReferenceSymbol:
+ kind = GetIirKindOfNode(node)
+ if kind == nodes.Iir_Kind.Selected_Name:
+ name = GetNameOfNode(node)
+ prefixName = GetLibrarySymbol(nodes.Get_Prefix(node))
+ return PackageReferenceSymbol(node, name, prefixName)
+ else:
+ raise DOMException(f"{kind.name} at {Position.parse(node)}")
+
+
def GetPackageMemberSymbol(node: Iir) -> Union[PackageMembersReferenceSymbol, AllPackageMembersReferenceSymbol]:
kind = GetIirKindOfNode(node)
prefixName = GetPackageSymbol(nodes.Get_Prefix(node))
@@ -157,30 +176,39 @@ def GetPackageMemberSymbol(node: Iir) -> Union[PackageMembersReferenceSymbol, Al
raise DOMException(f"{kind.name} at {Position.parse(node)}")
-def GetPackageSymbol(node: Iir) -> PackageReferenceSymbol:
+def GetContextSymbol(node: Iir) -> ContextReferenceSymbol:
kind = GetIirKindOfNode(node)
if kind == nodes.Iir_Kind.Selected_Name:
name = GetNameOfNode(node)
prefixName = GetLibrarySymbol(nodes.Get_Prefix(node))
- return PackageReferenceSymbol(node, name, prefixName)
+ return ContextReferenceSymbol(node, name, prefixName)
else:
raise DOMException(f"{kind.name} at {Position.parse(node)}")
-def GetContextSymbol(node: Iir) -> ContextReferenceSymbol:
+def GetEntityInstantiationSymbol(node: Iir) -> EntityInstantiationSymbol:
kind = GetIirKindOfNode(node)
if kind == nodes.Iir_Kind.Selected_Name:
name = GetNameOfNode(node)
prefixName = GetLibrarySymbol(nodes.Get_Prefix(node))
- return ContextReferenceSymbol(node, name, prefixName)
+ return EntityInstantiationSymbol(node, name, prefixName)
else:
raise DOMException(f"{kind.name} at {Position.parse(node)}")
-def GetLibrarySymbol(node: Iir) -> LibraryReferenceSymbol:
+def GetComponentInstantiationSymbol(node: Iir) -> ComponentInstantiationSymbol:
kind = GetIirKindOfNode(node)
if kind == nodes.Iir_Kind.Simple_Name:
name = GetNameOfNode(node)
- return LibraryReferenceSymbol(node, name)
+ return ComponentInstantiationSymbol(node, name)
else:
- raise DOMException(f"{kind} at {Position.parse(node)}")
+ raise DOMException(f"{kind.name} at {Position.parse(node)}")
+
+
+def GetConfigurationInstantiationSymbol(node: Iir) -> ConfigurationInstantiationSymbol:
+ kind = GetIirKindOfNode(node)
+ if kind == nodes.Iir_Kind.Simple_Name:
+ name = GetNameOfNode(node)
+ return ConfigurationInstantiationSymbol(node, name)
+ else:
+ raise DOMException(f"{kind.name} at {Position.parse(node)}")