mirror of
				https://github.com/python/cpython.git
				synced 2025-10-29 20:51:26 +00:00 
			
		
		
		
	This script demonstrates use of the visitor interface of the compiler
package.
This commit is contained in:
		
							parent
							
								
									9f2550f581
								
							
						
					
					
						commit
						ffe968b8fe
					
				
					 1 changed files with 38 additions and 0 deletions
				
			
		
							
								
								
									
										38
									
								
								Tools/compiler/demo.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								Tools/compiler/demo.py
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,38 @@ | |||
| #! /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:]) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jeremy Hylton
						Jeremy Hylton