Here's a trivial little Python session which attempts to use compiler.walk (mostly unsuccessfully):
% python Python 2.4.2 (#1, Feb 23 2006, 12:48:31) [GCC 3.4.1] on sunos5 Type "help", "copyright", "credits" or "license" for more information. >>> import compiler >>> ast = compiler.parse(open("a.py").read()) >>> ast Module(None, Stmt([Assign([AssName('RED', 'OP_ASSIGN')], Const('red')), Assign([AssName('BLUE', 'OP_ASSIGN')], Const('blue'))])) >>> compiler.walk(ast, compiler.visitor.ExampleASTVisitor, verbose=10) >>> <class compiler.visitor.ExampleASTVisitor at 0x831ce3c> >>> compiler.walk(ast, compiler.visitor.ExampleASTVisitor(), verbose=10) <compiler.visitor.ExampleASTVisitor instance at 0x81f0eac> I did manage to get a verbose print the first time I executed this: >>> compiler.walk(ast, compiler.visitor.ExampleASTVisitor(), walker=compiler.visitor.ExampleASTVisitor(), verbose=10) which emitted nice verbose stuff like dispatch Module <compiler.visitor.ExampleASTVisitor instance at 0x835074c> compiler.ast.Module asList <bound method Module.asList of Module(None, Stmt([Assign([AssName('RED', 'OP_ASSIGN')], Const('red')), Assign([AssName('BLUE', 'OP_ASSIGN')], Const('blue'))]))> doc None getChildNode <bound method Module.getChildNodes of Module(None, Stmt([Assign([AssName('RED', 'OP_ASSIGN')], Const('red')), Assign([AssName('BLUE', 'OP_ASSIGN')], Const('blue'))]))> getChildren <bound method Module.getChildren of Module(None, Stmt([Assign([AssName('RED', 'OP_ASSIGN')], Const('red')), Assign([AssName('BLUE', 'OP_ASSIGN')], Const('blue'))]))> lineno None ... but successive calls just yielded the more electron-conserving: dispatch Module dispatch Stmt dispatch Assign dispatch AssName dispatch Const dispatch Assign dispatch AssName dispatch Const What am I doing wrong? Thanks, Skip -- http://mail.python.org/mailman/listinfo/python-list