/Tools/compiler/demo.py
http://unladen-swallow.googlecode.com/ · Python · 38 lines · 19 code · 8 blank · 11 comment · 3 complexity · d948791d5a83bd9ce530ed87b7358720 MD5 · raw file
- #! /usr/bin/env python
- """Print names of all methods defined in module
- This script demonstrates use of the visitor interface of the compiler
- package.
- """
- import compiler
- class MethodFinder:
- """Print the names of all the methods
- Each visit method takes two arguments, the node and its current
- scope. The scope is the name of the current class or None.
- """
- def visitClass(self, node, scope=None):
- self.visit(node.code, node.name)
- def visitFunction(self, node, scope=None):
- if scope is not None:
- print "%s.%s" % (scope, node.name)
- self.visit(node.code, None)
- def main(files):
- mf = MethodFinder()
- for file in files:
- f = open(file)
- buf = f.read()
- f.close()
- ast = compiler.parse(buf)
- compiler.walk(ast, mf)
- if __name__ == "__main__":
- import sys
- main(sys.argv[1:])