[Libre-soc-bugs] [Bug 980] Implement C-based Power ISA pseudocode compiler
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Wed Dec 6 17:20:29 GMT 2023
https://bugs.libre-soc.org/show_bug.cgi?id=980
--- Comment #29 from Dmitry Selyutin <ghostmansd at gmail.com> ---
I need the pseudocode printing for both the debugging and ensuring the overall
approach are fine. The code goes like this (example handlers for particular
node types):
@Hook(If)
def If(self, node):
yield node
stmt = " ".join(["if", str(self[node.test]), "then"])
self[node].emit(stmt=stmt)
for (level, stmt) in self[node.body]:
self[node].emit(stmt=stmt, level=level)
if node.orelse:
self[node].emit("else")
stmt = str(self[node.orelse])
self[node].emit(stmt=stmt)
@Hook(Symbol)
def Symbol(self, node):
yield node
self[node].emit(stmt=str(node))
As you see, each node gets some code object associated with it. The code object
has an emit method, which feeds yet another statement considering the current
indentation level for it.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list