mirror of https://github.com/python/cpython.git
39 lines
905 B
Python
39 lines
905 B
Python
|
#! /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:])
|