Mercurial > cpython-lru_cache-weakref
annotate Tools/compiler/demo.py @ 54294:dba767bc3155 legacy-trunk
remove mention of old ctypes version
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 23 May 2009 20:59:09 +0000 |
| parents | c3a096bfbd6b |
| children |
| rev | line source |
|---|---|
|
13712
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
2 |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
3 """Print names of all methods defined in module |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
4 |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
5 This script demonstrates use of the visitor interface of the compiler |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
6 package. |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
7 """ |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
8 |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
9 import compiler |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
10 |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
11 class MethodFinder: |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
12 """Print the names of all the methods |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
13 |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
14 Each visit method takes two arguments, the node and its current |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
15 scope. The scope is the name of the current class or None. |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
16 """ |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
13712
diff
changeset
|
17 |
|
13712
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
18 def visitClass(self, node, scope=None): |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
19 self.visit(node.code, node.name) |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
20 |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
21 def visitFunction(self, node, scope=None): |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
22 if scope is not None: |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
23 print "%s.%s" % (scope, node.name) |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
24 self.visit(node.code, None) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
13712
diff
changeset
|
25 |
|
13712
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
26 def main(files): |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
27 mf = MethodFinder() |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
28 for file in files: |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
29 f = open(file) |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
30 buf = f.read() |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
31 f.close() |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
32 ast = compiler.parse(buf) |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
33 compiler.walk(ast, mf) |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
34 |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
35 if __name__ == "__main__": |
|
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
36 import sys |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
13712
diff
changeset
|
37 |
|
13712
00030eb88131
This script demonstrates use of the visitor interface of the compiler
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
38 main(sys.argv[1:]) |
