aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/_Translate.py
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-06-21 15:48:35 +0200
committerPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-06-22 12:26:59 +0200
commited99fae7f13db8d5c3e95e935e32db825313b56a (patch)
tree2e58bf9b63f3e3214fc00cda3e8368697539b56b /pyGHDL/dom/_Translate.py
parentec37f2b5efe56d442ea51d3e10d16742f3cd4bce (diff)
downloadghdl-ed99fae7f13db8d5c3e95e935e32db825313b56a.tar.gz
ghdl-ed99fae7f13db8d5c3e95e935e32db825313b56a.tar.bz2
ghdl-ed99fae7f13db8d5c3e95e935e32db825313b56a.zip
Prepared handling of functions, types, subtypes and aliases.
Diffstat (limited to 'pyGHDL/dom/_Translate.py')
-rw-r--r--pyGHDL/dom/_Translate.py25
1 files changed, 19 insertions, 6 deletions
diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py
index cd2a3e53e..e1770672d 100644
--- a/pyGHDL/dom/_Translate.py
+++ b/pyGHDL/dom/_Translate.py
@@ -34,7 +34,7 @@ from typing import List
from pydecor import export
-from pyGHDL.dom.Type import IntegerType, SubType
+from pyGHDL.dom.Misc import Alias
from pyVHDLModel.VHDLModel import (
Constraint,
Direction,
@@ -49,13 +49,14 @@ from pyGHDL.libghdl.utils import flist_iter
from pyGHDL.libghdl.vhdl import nodes
from pyGHDL.dom._Utils import GetNameOfNode, GetIirKindOfNode
from pyGHDL.dom.Common import DOMException
-from pyGHDL.dom.Range import Range, RangeExpression
from pyGHDL.dom.Symbol import (
SimpleObjectOrFunctionCallSymbol,
SimpleSubTypeSymbol,
ConstrainedSubTypeSymbol,
IndexedObjectOrFunctionCallSymbol,
)
+from pyGHDL.dom.Type import IntegerType, SubType
+from pyGHDL.dom.Range import Range, RangeExpression
from pyGHDL.dom.Literal import (
IntegerLiteral,
CharacterLiteral,
@@ -95,6 +96,8 @@ from pyGHDL.dom.Expression import (
RotateLeftExpression,
RotateRightExpression,
)
+from pyGHDL.dom.Subprogram import Function
+
__all__ = []
@@ -304,14 +307,12 @@ def GetDeclaredItemsFromChainedNodes(nodeChain: Iir, entity: str, name: str):
elif kind == nodes.Iir_Kind.Subtype_Declaration:
result.append(GetSubTypeFromNode(item))
elif kind == nodes.Iir_Kind.Function_Declaration:
- functionName = GetNameOfNode(item)
- print("found function '{name}'".format(name=functionName))
+ result.append(GetFunctionFromNode(item))
elif kind == nodes.Iir_Kind.Function_Body:
# functionName = NodeToName(item)
print("found function body '{name}'".format(name="????"))
elif kind == nodes.Iir_Kind.Object_Alias_Declaration:
- aliasName = GetNameOfNode(item)
- print("found alias '{name}'".format(name=aliasName))
+ result.append(GetAliasFromNode(item))
else:
raise DOMException(
"Unknown declared item kind '{kindName}'({kind}) in {entity} '{name}'.".format(
@@ -320,3 +321,15 @@ def GetDeclaredItemsFromChainedNodes(nodeChain: Iir, entity: str, name: str):
)
return result
+
+
+def GetFunctionFromNode(node: Iir):
+ functionName = GetNameOfNode(node)
+
+ return Function(functionName)
+
+
+def GetAliasFromNode(node: Iir):
+ aliasName = GetNameOfNode(node)
+
+ return Alias(aliasName)