2016-08-01 72 views
1

Ich möchte alle Projektdateien in einem Python-Projekt scannen, alle Instanzen von Objekten, die Unterklasse eines bestimmten Typs sind, und dann identifizieren: 1. Fügen Sie das Schlüsselwort "yield" hinzu Objektinstanzierung 2. Identifizieren Sie alle Aufruflisten für die Erstellung dieses Objekts, und fügen Sie allen Funktionen in diesem Aufrufstapel einen Dekorator hinzu.Python Quelldatei Analyse und Transformation mit Rascal

ist das mit Rascal machbar?

Antwort

1

Wenn Sie eine Darstellung Ihres Python-Quellcodes als Baum haben (Parsebaum oder abstrakte Syntaxbaumstruktur), können Sie diesen in einen Rascal-Datentyp konvertieren und Rascal für weiterverarbeiten. Dies kann erreicht werden, indem ein vorhandener Python-Parser verwendet und verbunden wird, um die Rascal Darstellung Ihres Python-Programms zu erzeugen. Dies könnte einfach durch Dumping der Parse-Baum in einem Format, das von Rascal gelesen werden kann getan werden.

Warum diese komplexe Lösung: weil der eingebaute Parser Generator von Rascal ist (noch) nicht gut ausgestattet Einbuchtung empfindlichen Sprachen wie Python zu analysieren.