[Libre-soc-bugs] [Bug 1094] insndb instruction database visitor-walker is needed

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sat Jun 10 15:13:31 BST 2023


--- Comment #98 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Dmitry Selyutin from comment #91)
> Luke, you again contradict to your own words. Please *re-read* what you
> wrote before. Passing *visitors* is not part of walking.

that was me trying to say "when the visitor function was itself
performing the walk" rather than it being the separate function
it is now (not very well but we got there)

a "well-defined collaboration with default behaviour" between Visitor
and walker-function (def visit()) is perfectly fine.... but... ha!
don't need it!

love this:

    @visitor(StubVisitor, str)
    def coco(self, node):
        print("BY GOD IT'S A STRING!!!", node)
        yield node

oo does that.... oo it separates the thing from the thing, oooo.
does this work?

    class StubVisitor(Visitor):
        def __init__(self):
             self.stuff = "something"
        @visitor(StubVisitor, str)
        def coco(self, node):
            print(self.stuff, "BY GOD IT'S A STRING!!!", node)
            yield node

can this be made to work without needing the 1st argument?

registry as a global variable will break things, it needs to be
part of Visitor itself?

class Visitor:
     registry = defaultdict()
     def visitor(cls, nodecls):

but for inheritance, sigh, the registry dict should be separate?
ohhhh you made it double-nested, a dict-of-dicts, niiice

more later, need food.

You are receiving this mail because:
You are on the CC list for the bug.

More information about the libre-soc-bugs mailing list