Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ffe968b

Browse files
committed
This script demonstrates use of the visitor interface of the compiler
package.
1 parent 9f2550f commit ffe968b

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

Tools/compiler/demo.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#! /usr/bin/env python
2+
3+
"""Print names of all methods defined in module
4+
5+
This script demonstrates use of the visitor interface of the compiler
6+
package.
7+
"""
8+
9+
import compiler
10+
11+
class MethodFinder:
12+
"""Print the names of all the methods
13+
14+
Each visit method takes two arguments, the node and its current
15+
scope. The scope is the name of the current class or None.
16+
"""
17+
18+
def visitClass(self, node, scope=None):
19+
self.visit(node.code, node.name)
20+
21+
def visitFunction(self, node, scope=None):
22+
if scope is not None:
23+
print "%s.%s" % (scope, node.name)
24+
self.visit(node.code, None)
25+
26+
def main(files):
27+
mf = MethodFinder()
28+
for file in files:
29+
f = open(file)
30+
buf = f.read()
31+
f.close()
32+
ast = compiler.parse(buf)
33+
compiler.walk(ast, mf)
34+
35+
if __name__ == "__main__":
36+
import sys
37+
38+
main(sys.argv[1:])

0 commit comments

Comments
 (0)