Mercurial > cpython-lru_cache-weakref
annotate Tools/parser/unparse.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 7c5c678e4164 |
| children |
| rev | line source |
|---|---|
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
1 "Usage: unparse.py <path to source file>" |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
2 import sys |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
3 import ast |
|
62621
a4e1c56be532
unparse.py: respect coding cookie in input files
Mark Dickinson <dickinsm@gmail.com>
parents:
62614
diff
changeset
|
4 import tokenize |
|
42304
7d16b42fcdbd
Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
5 import io |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
6 import os |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
7 |
|
62651
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
8 # Large float and imaginary literals get turned into infinities in the AST. |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
9 # We unparse those infinities to INFSTR. |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
10 INFSTR = "1e" + repr(sys.float_info.max_10_exp + 1) |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
11 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
12 def interleave(inter, f, seq): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
13 """Call f on each item in seq, calling inter() in between. |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
14 """ |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
15 seq = iter(seq) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
16 try: |
|
42304
7d16b42fcdbd
Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
17 f(next(seq)) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
18 except StopIteration: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
19 pass |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
20 else: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
21 for x in seq: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
22 inter() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
23 f(x) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
24 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
25 class Unparser: |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
26 """Methods in this class recursively traverse an AST and |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
27 output source code for the abstract syntax; original formatting |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
28 is disregarded. """ |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
29 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
30 def __init__(self, tree, file = sys.stdout): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
31 """Unparser(tree, file=sys.stdout) -> None. |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
32 Print the source for tree to file.""" |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
33 self.f = file |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
34 self._indent = 0 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
35 self.dispatch(tree) |
|
42304
7d16b42fcdbd
Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
36 print("", file=self.f) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
37 self.f.flush() |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
38 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
39 def fill(self, text = ""): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
40 "Indent a piece of text, according to the current indentation level" |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
41 self.f.write("\n"+" "*self._indent + text) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
42 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
43 def write(self, text): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
44 "Append a piece of text to the current line." |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
45 self.f.write(text) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
46 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
47 def enter(self): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
48 "Print ':', and increase the indentation." |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
49 self.write(":") |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
50 self._indent += 1 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
51 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
52 def leave(self): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
53 "Decrease the indentation level." |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
54 self._indent -= 1 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
55 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
56 def dispatch(self, tree): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
57 "Dispatcher function, dispatching tree type T to method _T." |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
58 if isinstance(tree, list): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
59 for t in tree: |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
60 self.dispatch(t) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
61 return |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
62 meth = getattr(self, "_"+tree.__class__.__name__) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
63 meth(tree) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
64 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
65 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
66 ############### Unparsing methods ###################### |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
67 # There should be one method per concrete grammar type # |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
68 # Constructors should be grouped by sum type. Ideally, # |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
69 # this would follow the order in the grammar, but # |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
70 # currently doesn't. # |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
71 ######################################################## |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
72 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
73 def _Module(self, tree): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
74 for stmt in tree.body: |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
75 self.dispatch(stmt) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
76 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
77 # stmt |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
78 def _Expr(self, tree): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
79 self.fill() |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
80 self.dispatch(tree.value) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
81 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
82 def _Import(self, t): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
83 self.fill("import ") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
84 interleave(lambda: self.write(", "), self.dispatch, t.names) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
85 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
86 def _ImportFrom(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
87 self.fill("from ") |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
88 self.write("." * t.level) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
89 if t.module: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
90 self.write(t.module) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
91 self.write(" import ") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
92 interleave(lambda: self.write(", "), self.dispatch, t.names) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
93 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
94 def _Assign(self, t): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
95 self.fill() |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
96 for target in t.targets: |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
97 self.dispatch(target) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
98 self.write(" = ") |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
99 self.dispatch(t.value) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
100 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
101 def _AugAssign(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
102 self.fill() |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
103 self.dispatch(t.target) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
104 self.write(" "+self.binop[t.op.__class__.__name__]+"= ") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
105 self.dispatch(t.value) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
106 |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
107 def _Return(self, t): |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
108 self.fill("return") |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
109 if t.value: |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
110 self.write(" ") |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
111 self.dispatch(t.value) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
112 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
113 def _Pass(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
114 self.fill("pass") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
115 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
116 def _Break(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
117 self.fill("break") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
118 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
119 def _Continue(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
120 self.fill("continue") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
121 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
122 def _Delete(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
123 self.fill("del ") |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48771
diff
changeset
|
124 interleave(lambda: self.write(", "), self.dispatch, t.targets) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
125 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
126 def _Assert(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
127 self.fill("assert ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
128 self.dispatch(t.test) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
129 if t.msg: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
130 self.write(", ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
131 self.dispatch(t.msg) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
132 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
133 def _Global(self, t): |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
134 self.fill("global ") |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
135 interleave(lambda: self.write(", "), self.write, t.names) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
136 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
137 def _Nonlocal(self, t): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
138 self.fill("nonlocal ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
139 interleave(lambda: self.write(", "), self.write, t.names) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
140 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
141 def _Yield(self, t): |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
142 self.write("(") |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
143 self.write("yield") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
144 if t.value: |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
145 self.write(" ") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
146 self.dispatch(t.value) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
147 self.write(")") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
148 |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
149 def _YieldFrom(self, t): |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
150 self.write("(") |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
151 self.write("yield from") |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
152 if t.value: |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
153 self.write(" ") |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
154 self.dispatch(t.value) |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
155 self.write(")") |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
156 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
157 def _Raise(self, t): |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
158 self.fill("raise") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
159 if not t.exc: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
160 assert not t.cause |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
161 return |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
162 self.write(" ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
163 self.dispatch(t.exc) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
164 if t.cause: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
165 self.write(" from ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
166 self.dispatch(t.cause) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
167 |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
168 def _Try(self, t): |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
169 self.fill("try") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
170 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
171 self.dispatch(t.body) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
172 self.leave() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
173 for ex in t.handlers: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
174 self.dispatch(ex) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
175 if t.orelse: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
176 self.fill("else") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
177 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
178 self.dispatch(t.orelse) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
179 self.leave() |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
180 if t.finalbody: |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
181 self.fill("finally") |
|
62644
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
182 self.enter() |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
183 self.dispatch(t.finalbody) |
|
62644
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
184 self.leave() |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
185 |
|
48771
ea3d13cd7c1e
Merged revisions 65780,65782,65785,65809,65812,65834,65846,65859,65861 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42304
diff
changeset
|
186 def _ExceptHandler(self, t): |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
187 self.fill("except") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
188 if t.type: |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
189 self.write(" ") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
190 self.dispatch(t.type) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
191 if t.name: |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
192 self.write(" as ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
193 self.write(t.name) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
194 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
195 self.dispatch(t.body) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
196 self.leave() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
197 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
198 def _ClassDef(self, t): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
199 self.write("\n") |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
200 for deco in t.decorator_list: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
201 self.fill("@") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
202 self.dispatch(deco) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
203 self.fill("class "+t.name) |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
204 self.write("(") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
205 comma = False |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
206 for e in t.bases: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
207 if comma: self.write(", ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
208 else: comma = True |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
209 self.dispatch(e) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
210 for e in t.keywords: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
211 if comma: self.write(", ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
212 else: comma = True |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
213 self.dispatch(e) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
214 if t.starargs: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
215 if comma: self.write(", ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
216 else: comma = True |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
217 self.write("*") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
218 self.dispatch(t.starargs) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
219 if t.kwargs: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
220 if comma: self.write(", ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
221 else: comma = True |
|
62637
158166ef6f06
Fix typo in unparsing of a class definition.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
222 self.write("**") |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
223 self.dispatch(t.kwargs) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
224 self.write(")") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
225 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
226 self.enter() |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
227 self.dispatch(t.body) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
228 self.leave() |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
229 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
230 def _FunctionDef(self, t): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
231 self.write("\n") |
|
48771
ea3d13cd7c1e
Merged revisions 65780,65782,65785,65809,65812,65834,65846,65859,65861 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
42304
diff
changeset
|
232 for deco in t.decorator_list: |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39782
diff
changeset
|
233 self.fill("@") |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39782
diff
changeset
|
234 self.dispatch(deco) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
235 self.fill("def "+t.name + "(") |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
236 self.dispatch(t.args) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
237 self.write(")") |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
238 if t.returns: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
239 self.write(" -> ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
240 self.dispatch(t.returns) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
241 self.enter() |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
242 self.dispatch(t.body) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
243 self.leave() |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
244 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
245 def _For(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
246 self.fill("for ") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
247 self.dispatch(t.target) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
248 self.write(" in ") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
249 self.dispatch(t.iter) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
250 self.enter() |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
251 self.dispatch(t.body) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
252 self.leave() |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
253 if t.orelse: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
254 self.fill("else") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
255 self.enter() |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
256 self.dispatch(t.orelse) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48771
diff
changeset
|
257 self.leave() |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
258 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
259 def _If(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
260 self.fill("if ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
261 self.dispatch(t.test) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
262 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
263 self.dispatch(t.body) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
264 self.leave() |
|
62643
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
265 # collapse nested ifs into equivalent elifs. |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
266 while (t.orelse and len(t.orelse) == 1 and |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
267 isinstance(t.orelse[0], ast.If)): |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
268 t = t.orelse[0] |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
269 self.fill("elif ") |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
270 self.dispatch(t.test) |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
271 self.enter() |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
272 self.dispatch(t.body) |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
273 self.leave() |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
274 # final else |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
275 if t.orelse: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
276 self.fill("else") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
277 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
278 self.dispatch(t.orelse) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
279 self.leave() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
280 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
281 def _While(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
282 self.fill("while ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
283 self.dispatch(t.test) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
284 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
285 self.dispatch(t.body) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
286 self.leave() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
287 if t.orelse: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
288 self.fill("else") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
289 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
290 self.dispatch(t.orelse) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48771
diff
changeset
|
291 self.leave() |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
292 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
293 def _With(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
294 self.fill("with ") |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
295 interleave(lambda: self.write(", "), self.dispatch, t.items) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
296 self.enter() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
297 self.dispatch(t.body) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
298 self.leave() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
299 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
300 # expr |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
301 def _Bytes(self, t): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
302 self.write(repr(t.s)) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
303 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
304 def _Str(self, tree): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
305 self.write(repr(tree.s)) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
306 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
307 def _Name(self, t): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
308 self.write(t.id) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
309 |
|
80738
03f92a9f0875
create NameConstant AST class for None, True, and False literals (closes #16619)
Benjamin Peterson <benjamin@python.org>
parents:
77976
diff
changeset
|
310 def _NameConstant(self, t): |
|
03f92a9f0875
create NameConstant AST class for None, True, and False literals (closes #16619)
Benjamin Peterson <benjamin@python.org>
parents:
77976
diff
changeset
|
311 self.write(repr(t.value)) |
|
03f92a9f0875
create NameConstant AST class for None, True, and False literals (closes #16619)
Benjamin Peterson <benjamin@python.org>
parents:
77976
diff
changeset
|
312 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
313 def _Num(self, t): |
|
62651
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
314 # Substitute overflowing decimal literal for AST infinities. |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
315 self.write(repr(t.n).replace("inf", INFSTR)) |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
316 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
317 def _List(self, t): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
318 self.write("[") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
319 interleave(lambda: self.write(", "), self.dispatch, t.elts) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
320 self.write("]") |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
321 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
322 def _ListComp(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
323 self.write("[") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
324 self.dispatch(t.elt) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
325 for gen in t.generators: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
326 self.dispatch(gen) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
327 self.write("]") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
328 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
329 def _GeneratorExp(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
330 self.write("(") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
331 self.dispatch(t.elt) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
332 for gen in t.generators: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
333 self.dispatch(gen) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
334 self.write(")") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
335 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
336 def _SetComp(self, t): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
337 self.write("{") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
338 self.dispatch(t.elt) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
339 for gen in t.generators: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
340 self.dispatch(gen) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
341 self.write("}") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
342 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
343 def _DictComp(self, t): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
344 self.write("{") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
345 self.dispatch(t.key) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
346 self.write(": ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
347 self.dispatch(t.value) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
348 for gen in t.generators: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
349 self.dispatch(gen) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
350 self.write("}") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
351 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
352 def _comprehension(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
353 self.write(" for ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
354 self.dispatch(t.target) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
355 self.write(" in ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
356 self.dispatch(t.iter) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
357 for if_clause in t.ifs: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
358 self.write(" if ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
359 self.dispatch(if_clause) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
360 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
361 def _IfExp(self, t): |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
362 self.write("(") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
363 self.dispatch(t.body) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
364 self.write(" if ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
365 self.dispatch(t.test) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
366 self.write(" else ") |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
367 self.dispatch(t.orelse) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
368 self.write(")") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
369 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
370 def _Set(self, t): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
371 assert(t.elts) # should be at least one element |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
372 self.write("{") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
373 interleave(lambda: self.write(", "), self.dispatch, t.elts) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
374 self.write("}") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
375 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
376 def _Dict(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
377 self.write("{") |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
378 def write_pair(pair): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
379 (k, v) = pair |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
380 self.dispatch(k) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
381 self.write(": ") |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
382 self.dispatch(v) |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
383 interleave(lambda: self.write(", "), write_pair, zip(t.keys, t.values)) |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
384 self.write("}") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
385 |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
386 def _Tuple(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
387 self.write("(") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
388 if len(t.elts) == 1: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
389 (elt,) = t.elts |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
390 self.dispatch(elt) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
391 self.write(",") |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
392 else: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
393 interleave(lambda: self.write(", "), self.dispatch, t.elts) |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
394 self.write(")") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
395 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
396 unop = {"Invert":"~", "Not": "not", "UAdd":"+", "USub":"-"} |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
397 def _UnaryOp(self, t): |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48771
diff
changeset
|
398 self.write("(") |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
399 self.write(self.unop[t.op.__class__.__name__]) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48771
diff
changeset
|
400 self.write(" ") |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
401 self.dispatch(t.operand) |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
402 self.write(")") |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
403 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
404 binop = { "Add":"+", "Sub":"-", "Mult":"*", "Div":"/", "Mod":"%", |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48771
diff
changeset
|
405 "LShift":"<<", "RShift":">>", "BitOr":"|", "BitXor":"^", "BitAnd":"&", |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
406 "FloorDiv":"//", "Pow": "**"} |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
407 def _BinOp(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
408 self.write("(") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
409 self.dispatch(t.left) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
410 self.write(" " + self.binop[t.op.__class__.__name__] + " ") |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
411 self.dispatch(t.right) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
412 self.write(")") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
413 |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
414 cmpops = {"Eq":"==", "NotEq":"!=", "Lt":"<", "LtE":"<=", "Gt":">", "GtE":">=", |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
415 "Is":"is", "IsNot":"is not", "In":"in", "NotIn":"not in"} |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
416 def _Compare(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
417 self.write("(") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
418 self.dispatch(t.left) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
419 for o, e in zip(t.ops, t.comparators): |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
420 self.write(" " + self.cmpops[o.__class__.__name__] + " ") |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
421 self.dispatch(e) |
|
62612
69f6d2130281
Merged revisions 82345 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62609
diff
changeset
|
422 self.write(")") |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
423 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
424 boolops = {ast.And: 'and', ast.Or: 'or'} |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
425 def _BoolOp(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
426 self.write("(") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
427 s = " %s " % self.boolops[t.op.__class__] |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
428 interleave(lambda: self.write(s), self.dispatch, t.values) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
429 self.write(")") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
430 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
431 def _Attribute(self,t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
432 self.dispatch(t.value) |
|
62645
4fce25abfdd8
Better solution for attribute access on integer literals.
Mark Dickinson <dickinsm@gmail.com>
parents:
62644
diff
changeset
|
433 # Special case: 3.__abs__() is a syntax error, so if t.value |
|
4fce25abfdd8
Better solution for attribute access on integer literals.
Mark Dickinson <dickinsm@gmail.com>
parents:
62644
diff
changeset
|
434 # is an integer literal then we need to either parenthesize |
|
4fce25abfdd8
Better solution for attribute access on integer literals.
Mark Dickinson <dickinsm@gmail.com>
parents:
62644
diff
changeset
|
435 # it or add an extra space to get 3 .__abs__(). |
|
4fce25abfdd8
Better solution for attribute access on integer literals.
Mark Dickinson <dickinsm@gmail.com>
parents:
62644
diff
changeset
|
436 if isinstance(t.value, ast.Num) and isinstance(t.value.n, int): |
|
4fce25abfdd8
Better solution for attribute access on integer literals.
Mark Dickinson <dickinsm@gmail.com>
parents:
62644
diff
changeset
|
437 self.write(" ") |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
438 self.write(".") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
439 self.write(t.attr) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
440 |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
441 def _Call(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
442 self.dispatch(t.func) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
443 self.write("(") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
444 comma = False |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
445 for e in t.args: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
446 if comma: self.write(", ") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
447 else: comma = True |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
448 self.dispatch(e) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
449 for e in t.keywords: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
450 if comma: self.write(", ") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
451 else: comma = True |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
452 self.dispatch(e) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
453 if t.starargs: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
454 if comma: self.write(", ") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
455 else: comma = True |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
456 self.write("*") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
457 self.dispatch(t.starargs) |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
458 if t.kwargs: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
459 if comma: self.write(", ") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
460 else: comma = True |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
461 self.write("**") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
462 self.dispatch(t.kwargs) |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
463 self.write(")") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
464 |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
465 def _Subscript(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
466 self.dispatch(t.value) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
467 self.write("[") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
468 self.dispatch(t.slice) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
469 self.write("]") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
470 |
|
76802
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
471 def _Starred(self, t): |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
472 self.write("*") |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
473 self.dispatch(t.value) |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
474 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
475 # slice |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
476 def _Ellipsis(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
477 self.write("...") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
478 |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
479 def _Index(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
480 self.dispatch(t.value) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
481 |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
482 def _Slice(self, t): |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
483 if t.lower: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
484 self.dispatch(t.lower) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
485 self.write(":") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
486 if t.upper: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
487 self.dispatch(t.upper) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
488 if t.step: |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
489 self.write(":") |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
490 self.dispatch(t.step) |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
491 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
492 def _ExtSlice(self, t): |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
493 interleave(lambda: self.write(', '), self.dispatch, t.dims) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
494 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
495 # argument |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
496 def _arg(self, t): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
497 self.write(t.arg) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
498 if t.annotation: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
499 self.write(": ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
500 self.dispatch(t.annotation) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
501 |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
502 # others |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
503 def _arguments(self, t): |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
504 first = True |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
505 # normal arguments |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
506 defaults = [None] * (len(t.args) - len(t.defaults)) + t.defaults |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
507 for a, d in zip(t.args, defaults): |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
508 if first:first = False |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
509 else: self.write(", ") |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
510 self.dispatch(a) |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
511 if d: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
512 self.write("=") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
513 self.dispatch(d) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
514 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
515 # varargs, or bare '*' if no varargs but keyword-only arguments present |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
516 if t.vararg or t.kwonlyargs: |
|
36736
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
517 if first:first = False |
|
bbce8ec2ff81
unparse.py can now unparse itself.
Martin v. Löwis <martin@v.loewis.de>
parents:
36723
diff
changeset
|
518 else: self.write(", ") |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
519 self.write("*") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
520 if t.vararg: |
|
82732
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
521 self.write(t.vararg.arg) |
|
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
522 if t.vararg.annotation: |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
523 self.write(": ") |
|
82732
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
524 self.dispatch(t.vararg.annotation) |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
525 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
526 # keyword-only arguments |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
527 if t.kwonlyargs: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
528 for a, d in zip(t.kwonlyargs, t.kw_defaults): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
529 if first:first = False |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
530 else: self.write(", ") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
531 self.dispatch(a), |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
532 if d: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
533 self.write("=") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
534 self.dispatch(d) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
535 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
536 # kwargs |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
537 if t.kwarg: |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
538 if first:first = False |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
539 else: self.write(", ") |
|
82732
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
540 self.write("**"+t.kwarg.arg) |
|
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
541 if t.kwarg.annotation: |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
542 self.write(": ") |
|
82732
7c5c678e4164
unify some ast.argument's attrs; change Attribute column offset (closes #16795)
Benjamin Peterson <benjamin@python.org>
parents:
80738
diff
changeset
|
543 self.dispatch(t.kwarg.annotation) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
544 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
545 def _keyword(self, t): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
546 self.write(t.arg) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
547 self.write("=") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
548 self.dispatch(t.value) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
549 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
550 def _Lambda(self, t): |
|
62623
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
551 self.write("(") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
552 self.write("lambda ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
553 self.dispatch(t.args) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
554 self.write(": ") |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
555 self.dispatch(t.body) |
|
62623
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
556 self.write(")") |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
557 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
558 def _alias(self, t): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
559 self.write(t.name) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
560 if t.asname: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
561 self.write(" as "+t.asname) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
562 |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
563 def _withitem(self, t): |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
564 self.dispatch(t.context_expr) |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
565 if t.optional_vars: |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
566 self.write(" as ") |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
567 self.dispatch(t.optional_vars) |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
568 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
569 def roundtrip(filename, output=sys.stdout): |
|
62621
a4e1c56be532
unparse.py: respect coding cookie in input files
Mark Dickinson <dickinsm@gmail.com>
parents:
62614
diff
changeset
|
570 with open(filename, "rb") as pyfile: |
|
a4e1c56be532
unparse.py: respect coding cookie in input files
Mark Dickinson <dickinsm@gmail.com>
parents:
62614
diff
changeset
|
571 encoding = tokenize.detect_encoding(pyfile.readline)[0] |
|
a4e1c56be532
unparse.py: respect coding cookie in input files
Mark Dickinson <dickinsm@gmail.com>
parents:
62614
diff
changeset
|
572 with open(filename, "r", encoding=encoding) as pyfile: |
|
a4e1c56be532
unparse.py: respect coding cookie in input files
Mark Dickinson <dickinsm@gmail.com>
parents:
62614
diff
changeset
|
573 source = pyfile.read() |
|
62614
95f8b25e53ce
unparse.py: Typo fix.
Mark Dickinson <dickinsm@gmail.com>
parents:
62613
diff
changeset
|
574 tree = compile(source, filename, "exec", ast.PyCF_ONLY_AST) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
575 Unparser(tree, output) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
576 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
577 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
578 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
579 def testdir(a): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
580 try: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
581 names = [n for n in os.listdir(a) if n.endswith('.py')] |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
582 except OSError: |
|
42304
7d16b42fcdbd
Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
583 print("Directory not readable: %s" % a, file=sys.stderr) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
584 else: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
585 for n in names: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
586 fullname = os.path.join(a, n) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
587 if os.path.isfile(fullname): |
|
42304
7d16b42fcdbd
Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
588 output = io.StringIO() |
|
7d16b42fcdbd
Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
589 print('Testing %s' % fullname) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
590 try: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
591 roundtrip(fullname, output) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
592 except Exception as e: |
|
42304
7d16b42fcdbd
Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
593 print(' Failed to compile, exception is %s' % repr(e)) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
594 elif os.path.isdir(fullname): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
595 testdir(fullname) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
596 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
597 def main(args): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
598 if args[0] == '--testdir': |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
599 for a in args[1:]: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
600 testdir(a) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
601 else: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
602 for a in args: |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
603 roundtrip(a) |
|
36723
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
604 |
|
e580c8b0dcea
Set EOL style to native.
Tim Peters <tim.peters@gmail.com>
parents:
36721
diff
changeset
|
605 if __name__=='__main__': |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36736
diff
changeset
|
606 main(sys.argv[1:]) |
