Ich arbeite mit ANTLR, um einige Sprache in diesen Tagen zu analysieren. Ich entschied mich, mit Python zu arbeiten. Die Parser-Klasse, die ANTLR erzeugt, viele Methoden, mit ähnlichen Namen enthält:Generieren Sie Python-Methoden aus einer Vorlage, die nur Suchen/Ersetzen der Zeichenfolge erfordert
class autogeneratedparser(xxx):
def something_enter(self,ctx):
pass
def something_exit(self,ctx)
pass
I dieses außer Kraft setzen, indem eine Klasse definieren inheriting
class myclass(autogeneratedparser)
particularthing = False
def particularthing_enter(self,ctx):
print(ctx.name)
myclass.particularthing = true
def particularthing_exit(self,ctx):
print(ctx.name)
myclass.particularthing = false
Ich mag würde, um dynamisch und automatisch all diese Methoden zu erzeugen, Ändern ihr jeweiliger Variablenname ist enthalten. In Pseudo-Code:
generate for particularthing in anything:
$(particularthing) = False
def $(particularthing)_enter(self,ctx):
print(ctx.name)
myclass.$(particularthing) = true
def $(particularthing)_exit(self,ctx):
print(ctx.name)
myclass.$(particularthing) = false
Ich kann natürlich nur vim sagen, es zu tun, aber ich bin sicher, dass Python eine Art und Weise zu hat, weiß nur nicht, wie :-)
Vielen Dank für Ihre wertvollen Eingang :)