diff options
author | Patrick Lehmann <Patrick.Lehmann@plc2.de> | 2021-08-12 13:06:11 +0200 |
---|---|---|
committer | umarcor <unai.martinezcorral@ehu.eus> | 2021-08-23 16:35:35 +0200 |
commit | 357cb9746c53e3f32fc9c2f28686c25e388918c3 (patch) | |
tree | 2547b64fc43c58a62e1f01fb8dddbe80b5160993 /pyGHDL/dom/_Translate.py | |
parent | bc09bbf10599436e1efdb0432886b2bb8b4bf890 (diff) | |
download | ghdl-357cb9746c53e3f32fc9c2f28686c25e388918c3.tar.gz ghdl-357cb9746c53e3f32fc9c2f28686c25e388918c3.tar.bz2 ghdl-357cb9746c53e3f32fc9c2f28686c25e388918c3.zip |
Preparations for sequential statements.
Diffstat (limited to 'pyGHDL/dom/_Translate.py')
-rw-r--r-- | pyGHDL/dom/_Translate.py | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py index c8b34ba8c..2103064a4 100644 --- a/pyGHDL/dom/_Translate.py +++ b/pyGHDL/dom/_Translate.py @@ -45,7 +45,7 @@ from pyVHDLModel.SyntaxModel import ( ParameterInterfaceItem, ModelEntity, Name, - ConcurrentStatement, + ConcurrentStatement, SequentialStatement, ) from pyGHDL.libghdl import utils, name_table @@ -784,13 +784,12 @@ def GetDeclaredItemsFromChainedNodes( yield obj -def GetStatementsFromChainedNodes( +def GetConcurrentStatementsFromChainedNodes( nodeChain: Iir, entity: str, name: str ) -> Generator[ConcurrentStatement, None, None]: for statement in utils.chain_iter(nodeChain): label = nodes.Get_Label(statement) - if label != nodes.Null_Iir: - label = name_table.Get_Name_Ptr(label) + label = name_table.Get_Name_Ptr(label) if label != nodes.Null_Iir else None pos = Position.parse(statement) @@ -865,6 +864,49 @@ def GetStatementsFromChainedNodes( ) +def GetSequentialStatementsFromChainedNodes( + nodeChain: Iir, entity: str, name: str +) -> Generator[SequentialStatement, None, None]: + for statement in utils.chain_iter(nodeChain): + label = nodes.Get_Label(statement) + label = name_table.Get_Name_Ptr(label) if label != nodes.Null_Iir else None + + pos = Position.parse(statement) + + kind = GetIirKindOfNode(statement) +# if kind == nodes.Iir_Kind.Sensitized_Process_Statement: +# yield ProcessStatement.parse(statement, label, True) + if kind == nodes.Iir_Kind.If_Statement: + print( + "[NOT IMPLEMENTED] If statement (label: '{label}') at line {line}".format( + label=label, line=pos.Line + ) + ) + elif kind == nodes.Iir_Kind.For_Loop_Statement: + print( + "[NOT IMPLEMENTED] For-loop statement (label: '{label}') at line {line}".format( + label=label, line=pos.Line + ) + ) + elif kind == nodes.Iir_Kind.Case_Statement: + print( + "[NOT IMPLEMENTED] For-loop statement (label: '{label}') at line {line}".format( + label=label, line=pos.Line + ) + ) + else: + raise DOMException( + "Unknown statement of kind '{kind}' in {entity} '{name}' at {file}:{line}:{column}.".format( + kind=kind.name, + entity=entity, + name=name, + file=pos.Filename, + line=pos.Line, + column=pos.Column, + ) + ) + + def GetAliasFromNode(aliasNode: Iir): aliasName = GetNameOfNode(aliasNode) |