mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			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:]) |