Besuch von Knoten in einem Syntaxbaum mit Python ast-Modul

9

Ich spiele mit Python ast (abstrakter Syntaxbaum).

Ich schrieb folgendes und es besuchte alle Knoten des AST.

%Vor%

Dann wurden der Py2Neko-Klasse einige Methoden hinzugefügt

%Vor%

Aber wenn es dann auf eine "print" -Aussage oder eine Zuweisung oder einen Ausdruck trifft, scheint es, dass es aufhört und nicht weiter geht.

Es gibt aus:

%Vor%

Kann mir jemand sagen, was ich falsch gemacht habe?

Ich benutze Python 2.6.6

    
narke 09.02.2011, 16:38
quelle

2 Antworten

10

Da Ihre Methode visit_Assign die untergeordneten Knoten des Knotens Assign nicht explizit verarbeitet, wird die Traversierung des Syntaxbaums dort angehalten.

Wenn Sie sich die Methode NodeVisitor.generic_visit in der Implementierung von ast.py ansehen, werden Sie feststellen, dass die untergeordneten Elemente des aktuellen Knotens durchlaufen werden. So können Sie die Basisklasse generic_visit-Methode explizit von jeder Ihrer Methoden aufrufen, die untergeordnete Elemente verarbeiten müssen:

%Vor%     
Luke Moore 09.02.2011, 17:11
quelle
4

Für Nicht-Endknoten muss Ihre Besuchsfunktion die Kinder besuchen. Siehe Ein einfaches Beispiel, wie man ast.NodeVisitor verwendet? für einige weitere Informationen.

    
Ned Batchelder 09.02.2011 16:56
quelle