blob: fb9be2a21a544d79df3936e29945aa450799fdec [file] [log] [blame]
Jeremy Hylton628d2892000-10-25 18:02:59 +00001"""Python abstract syntax node definitions
2
Jeremy Hylton566d9342004-09-07 15:28:01 +00003This file is automatically generated by Tools/compiler/astgen.py
Jeremy Hylton628d2892000-10-25 18:02:59 +00004"""
Neal Norwitz2b499432006-03-24 07:07:34 +00005from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
Jeremy Hyltonf968e852000-02-04 00:25:23 +00006
Neil Schemenauerf3694702005-06-02 05:55:20 +00007def flatten(seq):
Jeremy Hylton628d2892000-10-25 18:02:59 +00008 l = []
Neil Schemenauerf3694702005-06-02 05:55:20 +00009 for elt in seq:
Jeremy Hylton628d2892000-10-25 18:02:59 +000010 t = type(elt)
Jeremy Hylton566d9342004-09-07 15:28:01 +000011 if t is tuple or t is list:
Jeremy Hylton628d2892000-10-25 18:02:59 +000012 for elt2 in flatten(elt):
13 l.append(elt2)
14 else:
15 l.append(elt)
16 return l
17
Neil Schemenauerf3694702005-06-02 05:55:20 +000018def flatten_nodes(seq):
19 return [n for n in flatten(seq) if isinstance(n, Node)]
Jeremy Hylton5477f522001-08-29 18:08:02 +000020
Jeremy Hyltonf968e852000-02-04 00:25:23 +000021nodes = {}
22
Jeremy Hylton566d9342004-09-07 15:28:01 +000023class Node:
24 """Abstract base class for ast nodes."""
Jeremy Hylton628d2892000-10-25 18:02:59 +000025 def getChildren(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000026 pass # implemented by subclasses
Jeremy Hylton566d9342004-09-07 15:28:01 +000027 def __iter__(self):
28 for n in self.getChildren():
29 yield n
30 def asList(self): # for backwards compatibility
31 return self.getChildren()
Jeremy Hylton7713ac22001-08-14 18:59:01 +000032 def getChildNodes(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000033 pass # implemented by subclasses
Jeremy Hyltonf968e852000-02-04 00:25:23 +000034
35class EmptyNode(Node):
Neal Norwitzc1505362006-12-28 06:47:50 +000036 def getChildNodes(self):
37 return ()
38 def getChildren(self):
39 return ()
Jeremy Hyltonf968e852000-02-04 00:25:23 +000040
Anthony Baxterc2a5a632004-08-02 06:10:11 +000041class Expression(Node):
42 # Expression is an artificial node class to support "eval"
43 nodes["expression"] = "Expression"
44 def __init__(self, node):
45 self.node = node
46
47 def getChildren(self):
48 return self.node,
49
50 def getChildNodes(self):
51 return self.node,
52
53 def __repr__(self):
54 return "Expression(%s)" % (repr(self.node))
55
56class Add(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000057 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000058 self.left = left
59 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +000060 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000061
62 def getChildren(self):
63 return self.left, self.right
64
65 def getChildNodes(self):
66 return self.left, self.right
67
68 def __repr__(self):
69 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
70
71class And(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000072 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000073 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +000074 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000075
76 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +000077 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +000078
79 def getChildNodes(self):
80 nodelist = []
81 nodelist.extend(flatten_nodes(self.nodes))
82 return tuple(nodelist)
83
84 def __repr__(self):
85 return "And(%s)" % (repr(self.nodes),)
86
87class AssAttr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000088 def __init__(self, expr, attrname, flags, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000089 self.expr = expr
Anthony Baxterc2a5a632004-08-02 06:10:11 +000090 self.attrname = attrname
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000091 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +000092 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000093
94 def getChildren(self):
95 return self.expr, self.attrname, self.flags
96
97 def getChildNodes(self):
98 return self.expr,
99
100 def __repr__(self):
101 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
102
103class AssList(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000104 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000105 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000106 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000107
108 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000109 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000110
111 def getChildNodes(self):
112 nodelist = []
113 nodelist.extend(flatten_nodes(self.nodes))
114 return tuple(nodelist)
115
116 def __repr__(self):
117 return "AssList(%s)" % (repr(self.nodes),)
118
119class AssName(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000120 def __init__(self, name, flags, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000121 self.name = name
122 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +0000123 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000124
125 def getChildren(self):
126 return self.name, self.flags
127
128 def getChildNodes(self):
129 return ()
130
131 def __repr__(self):
132 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
133
134class AssTuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000135 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000136 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000137 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000138
139 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000140 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000141
142 def getChildNodes(self):
143 nodelist = []
144 nodelist.extend(flatten_nodes(self.nodes))
145 return tuple(nodelist)
146
147 def __repr__(self):
148 return "AssTuple(%s)" % (repr(self.nodes),)
149
150class Assert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000151 def __init__(self, test, fail, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000152 self.test = test
153 self.fail = fail
Jeremy Hylton566d9342004-09-07 15:28:01 +0000154 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000155
156 def getChildren(self):
157 children = []
158 children.append(self.test)
159 children.append(self.fail)
160 return tuple(children)
161
162 def getChildNodes(self):
163 nodelist = []
164 nodelist.append(self.test)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000165 if self.fail is not None:
166 nodelist.append(self.fail)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000167 return tuple(nodelist)
168
169 def __repr__(self):
170 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
171
172class Assign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000173 def __init__(self, nodes, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000174 self.nodes = nodes
175 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000176 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000177
178 def getChildren(self):
179 children = []
180 children.extend(flatten(self.nodes))
181 children.append(self.expr)
182 return tuple(children)
183
184 def getChildNodes(self):
185 nodelist = []
186 nodelist.extend(flatten_nodes(self.nodes))
187 nodelist.append(self.expr)
188 return tuple(nodelist)
189
190 def __repr__(self):
191 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
192
193class AugAssign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000194 def __init__(self, node, op, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000195 self.node = node
196 self.op = op
197 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000198 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000199
200 def getChildren(self):
201 return self.node, self.op, self.expr
202
203 def getChildNodes(self):
204 return self.node, self.expr
205
206 def __repr__(self):
207 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
208
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000209class Bitand(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000210 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000211 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000212 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000213
214 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000215 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000216
217 def getChildNodes(self):
218 nodelist = []
219 nodelist.extend(flatten_nodes(self.nodes))
220 return tuple(nodelist)
221
222 def __repr__(self):
223 return "Bitand(%s)" % (repr(self.nodes),)
224
225class Bitor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000226 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000227 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000228 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000229
230 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000231 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000232
233 def getChildNodes(self):
234 nodelist = []
235 nodelist.extend(flatten_nodes(self.nodes))
236 return tuple(nodelist)
237
238 def __repr__(self):
239 return "Bitor(%s)" % (repr(self.nodes),)
240
241class Bitxor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000242 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000243 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000244 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000245
246 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000247 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000248
249 def getChildNodes(self):
250 nodelist = []
251 nodelist.extend(flatten_nodes(self.nodes))
252 return tuple(nodelist)
253
254 def __repr__(self):
255 return "Bitxor(%s)" % (repr(self.nodes),)
256
257class Break(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000258 def __init__(self, lineno=None):
259 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000260
261 def getChildren(self):
262 return ()
263
264 def getChildNodes(self):
265 return ()
266
267 def __repr__(self):
268 return "Break()"
269
Thomas Wouters00e41de2007-02-23 19:56:57 +0000270class Bytes(Node):
271 def __init__(self, value, lineno=None):
272 self.value = value
273 self.lineno = lineno
274
275 def getChildren(self):
276 return self.value,
277
278 def getChildNodes(self):
279 return ()
280
281 def __repr__(self):
282 return "Bytes(%s)" % (repr(self.value),)
283
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000284class CallFunc(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000285 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000286 self.node = node
287 self.args = args
288 self.star_args = star_args
289 self.dstar_args = dstar_args
Jeremy Hylton566d9342004-09-07 15:28:01 +0000290 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000291
292 def getChildren(self):
293 children = []
294 children.append(self.node)
295 children.extend(flatten(self.args))
296 children.append(self.star_args)
297 children.append(self.dstar_args)
298 return tuple(children)
299
300 def getChildNodes(self):
301 nodelist = []
302 nodelist.append(self.node)
303 nodelist.extend(flatten_nodes(self.args))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000304 if self.star_args is not None:
305 nodelist.append(self.star_args)
306 if self.dstar_args is not None:
307 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000308 return tuple(nodelist)
309
310 def __repr__(self):
311 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
312
313class Class(Node):
Guido van Rossumd16e81a2007-03-19 17:56:01 +0000314 def __init__(self, name, args, star_args, dstar_args,
315 doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000316 self.name = name
Guido van Rossumd16e81a2007-03-19 17:56:01 +0000317 self.args = args
318 self.star_args = star_args
319 self.dstar_args = dstar_args
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000320 self.doc = doc
321 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000322 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000323
324 def getChildren(self):
325 children = []
326 children.append(self.name)
Guido van Rossumd16e81a2007-03-19 17:56:01 +0000327 children.extend(flatten(self.args))
328 children.extend(self.star_args)
329 children.extend(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000330 children.append(self.doc)
331 children.append(self.code)
332 return tuple(children)
333
334 def getChildNodes(self):
335 nodelist = []
Guido van Rossumd16e81a2007-03-19 17:56:01 +0000336 nodelist.extend(flatten_nodes(self.args))
337 if self.star_args is not None:
338 nodelist.append(self.star_args)
339 if self.dstar_args is not None:
340 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000341 nodelist.append(self.code)
342 return tuple(nodelist)
343
344 def __repr__(self):
Guido van Rossumd16e81a2007-03-19 17:56:01 +0000345 return "Class(%r, %r, %r, %r, %r, %r)" % (self.name,
346 self.args,
347 self.star_args,
348 self.dstar_args,
349 self.doc,
350 self.code)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000351
352class Compare(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000353 def __init__(self, expr, ops, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000354 self.expr = expr
355 self.ops = ops
Jeremy Hylton566d9342004-09-07 15:28:01 +0000356 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000357
358 def getChildren(self):
359 children = []
360 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000361 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000362 return tuple(children)
363
364 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000365 nodelist = []
366 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000367 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000368 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000369
370 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000371 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000372
373class Const(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000374 def __init__(self, value, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000375 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +0000376 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000377
378 def getChildren(self):
379 return self.value,
380
381 def getChildNodes(self):
382 return ()
383
384 def __repr__(self):
385 return "Const(%s)" % (repr(self.value),)
386
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000387class Continue(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000388 def __init__(self, lineno=None):
389 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000390
391 def getChildren(self):
392 return ()
393
394 def getChildNodes(self):
395 return ()
396
397 def __repr__(self):
398 return "Continue()"
399
400class Decorators(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000401 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000402 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000403 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000404
405 def getChildren(self):
406 return tuple(flatten(self.nodes))
407
408 def getChildNodes(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000409 nodelist = []
410 nodelist.extend(flatten_nodes(self.nodes))
411 return tuple(nodelist)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000412
413 def __repr__(self):
414 return "Decorators(%s)" % (repr(self.nodes),)
415
416class Dict(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000417 def __init__(self, items, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000418 self.items = items
Jeremy Hylton566d9342004-09-07 15:28:01 +0000419 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000420
421 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000422 return tuple(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000423
424 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000425 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000426 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000427 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000428
429 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000430 return "Dict(%s)" % (repr(self.items),)
431
432class Discard(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000433 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000434 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000435 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000436
437 def getChildren(self):
438 return self.expr,
439
440 def getChildNodes(self):
441 return self.expr,
442
443 def __repr__(self):
444 return "Discard(%s)" % (repr(self.expr),)
445
446class Div(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000447 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000448 self.left = left
449 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000450 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000451
452 def getChildren(self):
453 return self.left, self.right
454
455 def getChildNodes(self):
456 return self.left, self.right
457
458 def __repr__(self):
459 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
460
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000461class FloorDiv(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000462 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000463 self.left = left
464 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000465 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000466
467 def getChildren(self):
468 return self.left, self.right
469
470 def getChildNodes(self):
471 return self.left, self.right
472
473 def __repr__(self):
474 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000475
476class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000477 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000478 self.assign = assign
479 self.list = list
480 self.body = body
481 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000482 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000483
484 def getChildren(self):
485 children = []
486 children.append(self.assign)
487 children.append(self.list)
488 children.append(self.body)
489 children.append(self.else_)
490 return tuple(children)
491
492 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000493 nodelist = []
494 nodelist.append(self.assign)
495 nodelist.append(self.list)
496 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000497 if self.else_ is not None:
498 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000499 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000500
501 def __repr__(self):
502 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
503
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000504class From(Node):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000505 def __init__(self, modname, names, level, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000506 self.modname = modname
507 self.names = names
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000508 self.level = level
Jeremy Hylton566d9342004-09-07 15:28:01 +0000509 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000510
511 def getChildren(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000512 return self.modname, self.names, self.level
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000513
514 def getChildNodes(self):
515 return ()
516
517 def __repr__(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000518 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000519
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000520class Function(Node):
Neal Norwitzc1505362006-12-28 06:47:50 +0000521 def __init__(self, decorators, name, arguments, defaults, kwonlyargs, returns, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000522 self.decorators = decorators
523 self.name = name
Neal Norwitzc1505362006-12-28 06:47:50 +0000524 self.arguments = arguments
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000525 self.defaults = defaults
Guido van Rossum4f72a782006-10-27 23:31:49 +0000526 self.kwonlyargs = kwonlyargs
Neal Norwitzc1505362006-12-28 06:47:50 +0000527 self.returns = returns
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000528 self.flags = flags
529 self.doc = doc
530 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000531 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000532 self.varargs = self.kwargs = None
533 if flags & CO_VARARGS:
534 self.varargs = 1
535 if flags & CO_VARKEYWORDS:
536 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000537
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000538
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000539 def getChildren(self):
540 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000541 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000542 children.append(self.name)
Neal Norwitzc1505362006-12-28 06:47:50 +0000543 children.extend(flatten(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000544 children.extend(flatten(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000545 children.extend(flatten(self.kwonlyargs))
546 children.append(self.returns)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000547 children.append(self.flags)
548 children.append(self.doc)
549 children.append(self.code)
550 return tuple(children)
551
552 def getChildNodes(self):
553 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000554 if self.decorators is not None:
555 nodelist.append(self.decorators)
Neal Norwitzc1505362006-12-28 06:47:50 +0000556 nodelist.extend(flatten_nodes(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000557 nodelist.extend(flatten_nodes(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000558 nodelist.extend(flatten_nodes(self.kwonlyargs))
559 if self.returns is not None:
560 nodelist.append(self.returns)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000561 nodelist.append(self.code)
562 return tuple(nodelist)
563
564 def __repr__(self):
Neal Norwitzc1505362006-12-28 06:47:50 +0000565 return "Function(%s, %s, %s, %s, %s, %s, %s, %s, %s)" % (repr(self.decorators), repr(self.name), repr(self.arguments), repr(self.defaults), repr(self.kwonlyargs), repr(self.returns), repr(self.flags), repr(self.doc), repr(self.code))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000566
567class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000568 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000569 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000570 self.lineno = lineno
Neal Norwitzc1505362006-12-28 06:47:50 +0000571 self.arguments = [SimpleArg('.0', None)]
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000572 self.varargs = self.kwargs = None
Guido van Rossum4f72a782006-10-27 23:31:49 +0000573 self.kwonlyargs = ()
Tim Peters39e11fb2006-03-04 02:43:44 +0000574
Guido van Rossum86e58e22006-08-28 15:27:34 +0000575
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000576 def getChildren(self):
577 return self.code,
578
579 def getChildNodes(self):
580 return self.code,
581
582 def __repr__(self):
583 return "GenExpr(%s)" % (repr(self.code),)
584
585class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000586 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000587 self.assign = assign
588 self.iter = iter
589 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000590 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000591 self.is_outmost = False
592
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000593 def getChildren(self):
594 children = []
595 children.append(self.assign)
596 children.append(self.iter)
597 children.extend(flatten(self.ifs))
598 return tuple(children)
599
600 def getChildNodes(self):
601 nodelist = []
602 nodelist.append(self.assign)
603 nodelist.append(self.iter)
604 nodelist.extend(flatten_nodes(self.ifs))
605 return tuple(nodelist)
606
607 def __repr__(self):
608 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
609
610class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000611 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000612 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000613 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000614
615 def getChildren(self):
616 return self.test,
617
618 def getChildNodes(self):
619 return self.test,
620
621 def __repr__(self):
622 return "GenExprIf(%s)" % (repr(self.test),)
623
624class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000625 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000626 self.expr = expr
627 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000628 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000629
630 def getChildren(self):
631 children = []
632 children.append(self.expr)
633 children.extend(flatten(self.quals))
634 return tuple(children)
635
636 def getChildNodes(self):
637 nodelist = []
638 nodelist.append(self.expr)
639 nodelist.extend(flatten_nodes(self.quals))
640 return tuple(nodelist)
641
642 def __repr__(self):
643 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
644
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000645class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000646 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000647 self.expr = expr
648 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000649 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000650
651 def getChildren(self):
652 return self.expr, self.attrname
653
654 def getChildNodes(self):
655 return self.expr,
656
657 def __repr__(self):
658 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
659
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000660class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000661 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000662 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000663 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000664
665 def getChildren(self):
666 return self.names,
667
668 def getChildNodes(self):
669 return ()
670
671 def __repr__(self):
672 return "Global(%s)" % (repr(self.names),)
673
674class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000675 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000676 self.tests = tests
677 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000678 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000679
680 def getChildren(self):
681 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000682 children.extend(flatten(self.tests))
683 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000684 return tuple(children)
685
686 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000687 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000688 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000689 if self.else_ is not None:
690 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000691 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000692
693 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000694 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
695
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000696class IfExp(Node):
697 def __init__(self, test, then, else_, lineno=None):
698 self.test = test
699 self.then = then
700 self.else_ = else_
701 self.lineno = lineno
702
703 def getChildren(self):
704 return self.test, self.then, self.else_
705
706 def getChildNodes(self):
707 return self.test, self.then, self.else_
708
709 def __repr__(self):
710 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
711
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000712class Import(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000713 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000714 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000715 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000716
717 def getChildren(self):
718 return self.names,
719
720 def getChildNodes(self):
721 return ()
722
723 def __repr__(self):
724 return "Import(%s)" % (repr(self.names),)
725
726class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000727 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000728 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000729 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000730
731 def getChildren(self):
732 return self.expr,
733
734 def getChildNodes(self):
735 return self.expr,
736
737 def __repr__(self):
738 return "Invert(%s)" % (repr(self.expr),)
739
740class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000741 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000742 self.name = name
743 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000744 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000745
746 def getChildren(self):
747 return self.name, self.expr
748
749 def getChildNodes(self):
750 return self.expr,
751
752 def __repr__(self):
753 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
754
Neal Norwitzc1505362006-12-28 06:47:50 +0000755class Kwarg(Node):
756 def __init__(self, arg, expr, lineno=None):
757 self.arg = arg
758 self.expr = expr
759 self.lineno = lineno
760
761 def getChildren(self):
762 return self.arg, self.expr
763
764 def getChildNodes(self):
765 return self.arg, self.expr
766
767 def __repr__(self):
768 return "Kwarg(%s, %s)" % (repr(self.arg), repr(self.expr))
769
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000770class Lambda(Node):
Neal Norwitzc1505362006-12-28 06:47:50 +0000771 def __init__(self, arguments, defaults, kwonlyargs, flags, code, lineno=None):
772 self.arguments = arguments
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000773 self.defaults = defaults
Guido van Rossum4f72a782006-10-27 23:31:49 +0000774 self.kwonlyargs = kwonlyargs
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000775 self.flags = flags
776 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000777 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000778 self.varargs = self.kwargs = None
779 if flags & CO_VARARGS:
780 self.varargs = 1
781 if flags & CO_VARKEYWORDS:
782 self.kwargs = 1
Neal Norwitzc1505362006-12-28 06:47:50 +0000783 self.returns = None
Tim Peters39e11fb2006-03-04 02:43:44 +0000784
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000785
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000786 def getChildren(self):
787 children = []
Neal Norwitzc1505362006-12-28 06:47:50 +0000788 children.extend(flatten(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000789 children.extend(flatten(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000790 children.extend(flatten(self.kwonlyargs))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000791 children.append(self.flags)
792 children.append(self.code)
793 return tuple(children)
794
795 def getChildNodes(self):
796 nodelist = []
Neal Norwitzc1505362006-12-28 06:47:50 +0000797 nodelist.extend(flatten_nodes(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000798 nodelist.extend(flatten_nodes(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000799 nodelist.extend(flatten_nodes(self.kwonlyargs))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000800 nodelist.append(self.code)
801 return tuple(nodelist)
802
803 def __repr__(self):
Neal Norwitzc1505362006-12-28 06:47:50 +0000804 return "Lambda(%s, %s, %s, %s, %s)" % (repr(self.arguments), repr(self.defaults), repr(self.kwonlyargs), repr(self.flags), repr(self.code))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000805
806class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000807 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000808 self.left = left
809 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000810 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000811
812 def getChildren(self):
813 return self.left, self.right
814
815 def getChildNodes(self):
816 return self.left, self.right
817
818 def __repr__(self):
819 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
820
821class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000822 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000823 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000824 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000825
826 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000827 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000828
829 def getChildNodes(self):
830 nodelist = []
831 nodelist.extend(flatten_nodes(self.nodes))
832 return tuple(nodelist)
833
834 def __repr__(self):
835 return "List(%s)" % (repr(self.nodes),)
836
837class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000838 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000839 self.expr = expr
840 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000841 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000842
843 def getChildren(self):
844 children = []
845 children.append(self.expr)
846 children.extend(flatten(self.quals))
847 return tuple(children)
848
849 def getChildNodes(self):
850 nodelist = []
851 nodelist.append(self.expr)
852 nodelist.extend(flatten_nodes(self.quals))
853 return tuple(nodelist)
854
855 def __repr__(self):
856 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
857
858class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000859 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000860 self.assign = assign
861 self.list = list
862 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000863 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000864
865 def getChildren(self):
866 children = []
867 children.append(self.assign)
868 children.append(self.list)
869 children.extend(flatten(self.ifs))
870 return tuple(children)
871
872 def getChildNodes(self):
873 nodelist = []
874 nodelist.append(self.assign)
875 nodelist.append(self.list)
876 nodelist.extend(flatten_nodes(self.ifs))
877 return tuple(nodelist)
878
879 def __repr__(self):
880 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
881
882class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000883 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000884 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000885 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000886
887 def getChildren(self):
888 return self.test,
889
890 def getChildNodes(self):
891 return self.test,
892
893 def __repr__(self):
894 return "ListCompIf(%s)" % (repr(self.test),)
895
896class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000897 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000898 self.left = left
899 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000900 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000901
902 def getChildren(self):
903 return self.left, self.right
904
905 def getChildNodes(self):
906 return self.left, self.right
907
908 def __repr__(self):
909 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000910
911class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000912 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000913 self.doc = doc
914 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000915 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000916
917 def getChildren(self):
918 return self.doc, self.node
919
920 def getChildNodes(self):
921 return self.node,
922
923 def __repr__(self):
924 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
925
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000926class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000927 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000928 self.left = left
929 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000930 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000931
932 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000933 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000934
935 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000936 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000937
938 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000939 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000940
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000941class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000942 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000943 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000944 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000945
946 def getChildren(self):
947 return self.name,
948
949 def getChildNodes(self):
950 return ()
951
952 def __repr__(self):
953 return "Name(%s)" % (repr(self.name),)
954
Neal Norwitzc1505362006-12-28 06:47:50 +0000955class NestedArgs(Node):
956 def __init__(self, args, lineno=None):
957 self.args = args
958 self.lineno = lineno
959
960 def getChildren(self):
961 return tuple(flatten(self.args))
962
963 def getChildNodes(self):
964 nodelist = []
965 nodelist.extend(flatten_nodes(self.args))
966 return tuple(nodelist)
967
968 def __repr__(self):
969 return "NestedArgs(%s)" % (repr(self.args),)
970
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000971class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000972 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000973 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000974 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000975
976 def getChildren(self):
977 return self.expr,
978
979 def getChildNodes(self):
980 return self.expr,
981
982 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000983 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000984
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000985class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000986 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000987 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000988 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000989
990 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000991 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000992
993 def getChildNodes(self):
994 nodelist = []
995 nodelist.extend(flatten_nodes(self.nodes))
996 return tuple(nodelist)
997
998 def __repr__(self):
999 return "Or(%s)" % (repr(self.nodes),)
1000
1001class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001002 def __init__(self, lineno=None):
1003 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001004
1005 def getChildren(self):
1006 return ()
1007
1008 def getChildNodes(self):
1009 return ()
1010
1011 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001012 return "Pass()"
1013
1014class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001015 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001016 self.left = left
1017 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001018 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001019
1020 def getChildren(self):
1021 return self.left, self.right
1022
1023 def getChildNodes(self):
1024 return self.left, self.right
1025
1026 def __repr__(self):
1027 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001028
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001029class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001030 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001031 self.expr1 = expr1
1032 self.expr2 = expr2
1033 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001034 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001035
1036 def getChildren(self):
1037 children = []
1038 children.append(self.expr1)
1039 children.append(self.expr2)
1040 children.append(self.expr3)
1041 return tuple(children)
1042
1043 def getChildNodes(self):
1044 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001045 if self.expr1 is not None:
1046 nodelist.append(self.expr1)
1047 if self.expr2 is not None:
1048 nodelist.append(self.expr2)
1049 if self.expr3 is not None:
1050 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001051 return tuple(nodelist)
1052
1053 def __repr__(self):
1054 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1055
1056class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001057 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001058 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001059 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001060
1061 def getChildren(self):
1062 return self.value,
1063
1064 def getChildNodes(self):
1065 return self.value,
1066
1067 def __repr__(self):
1068 return "Return(%s)" % (repr(self.value),)
1069
1070class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001071 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001072 self.left = left
1073 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001074 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001075
1076 def getChildren(self):
1077 return self.left, self.right
1078
1079 def getChildNodes(self):
1080 return self.left, self.right
1081
1082 def __repr__(self):
1083 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1084
Guido van Rossum86e58e22006-08-28 15:27:34 +00001085class Set(Node):
1086 def __init__(self, items, lineno=None):
1087 self.items = items
1088 self.lineno = lineno
1089
1090 def getChildren(self):
1091 return tuple(flatten(self.items))
1092
1093 def getChildNodes(self):
1094 nodelist = []
1095 nodelist.extend(flatten_nodes(self.items))
1096 return tuple(nodelist)
1097
1098 def __repr__(self):
1099 return "Set(%s)" % (repr(self.items),)
1100
Neal Norwitzc1505362006-12-28 06:47:50 +00001101class SimpleArg(Node):
1102 def __init__(self, name, annotation, lineno=None):
1103 self.name = name
1104 self.annotation = annotation
1105 self.lineno = lineno
1106
1107 def getChildren(self):
1108 children = []
1109 children.append(self.name)
1110 children.append(self.annotation)
1111 return tuple(children)
1112
1113 def getChildNodes(self):
1114 nodelist = []
1115 if self.annotation is not None:
1116 nodelist.append(self.annotation)
1117 return tuple(nodelist)
1118
1119 def __repr__(self):
1120 return "SimpleArg(%s, %s)" % (repr(self.name), repr(self.annotation))
1121
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001122class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001123 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001124 self.expr = expr
1125 self.flags = flags
1126 self.lower = lower
1127 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001128 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001129
1130 def getChildren(self):
1131 children = []
1132 children.append(self.expr)
1133 children.append(self.flags)
1134 children.append(self.lower)
1135 children.append(self.upper)
1136 return tuple(children)
1137
1138 def getChildNodes(self):
1139 nodelist = []
1140 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001141 if self.lower is not None:
1142 nodelist.append(self.lower)
1143 if self.upper is not None:
1144 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001145 return tuple(nodelist)
1146
1147 def __repr__(self):
1148 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1149
1150class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001151 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001152 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001153 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001154
1155 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001156 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001157
1158 def getChildNodes(self):
1159 nodelist = []
1160 nodelist.extend(flatten_nodes(self.nodes))
1161 return tuple(nodelist)
1162
1163 def __repr__(self):
1164 return "Sliceobj(%s)" % (repr(self.nodes),)
1165
1166class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001167 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001168 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001169 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001170
1171 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001172 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001173
1174 def getChildNodes(self):
1175 nodelist = []
1176 nodelist.extend(flatten_nodes(self.nodes))
1177 return tuple(nodelist)
1178
1179 def __repr__(self):
1180 return "Stmt(%s)" % (repr(self.nodes),)
1181
1182class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001183 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001184 self.left = left
1185 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001186 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001187
1188 def getChildren(self):
1189 return self.left, self.right
1190
1191 def getChildNodes(self):
1192 return self.left, self.right
1193
1194 def __repr__(self):
1195 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001196
1197class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001198 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001199 self.expr = expr
1200 self.flags = flags
1201 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001202 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001203
1204 def getChildren(self):
1205 children = []
1206 children.append(self.expr)
1207 children.append(self.flags)
1208 children.extend(flatten(self.subs))
1209 return tuple(children)
1210
1211 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001212 nodelist = []
1213 nodelist.append(self.expr)
1214 nodelist.extend(flatten_nodes(self.subs))
1215 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001216
1217 def __repr__(self):
1218 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1219
1220class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001221 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001222 self.body = body
1223 self.handlers = handlers
1224 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001225 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001226
1227 def getChildren(self):
1228 children = []
1229 children.append(self.body)
1230 children.extend(flatten(self.handlers))
1231 children.append(self.else_)
1232 return tuple(children)
1233
1234 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001235 nodelist = []
1236 nodelist.append(self.body)
1237 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001238 if self.else_ is not None:
1239 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001240 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001241
1242 def __repr__(self):
1243 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1244
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001245class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001246 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001247 self.body = body
1248 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001249 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001250
1251 def getChildren(self):
1252 return self.body, self.final
1253
1254 def getChildNodes(self):
1255 return self.body, self.final
1256
1257 def __repr__(self):
1258 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1259
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001260class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001261 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001262 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001263 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001264
1265 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001266 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001267
1268 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001269 nodelist = []
1270 nodelist.extend(flatten_nodes(self.nodes))
1271 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001272
1273 def __repr__(self):
1274 return "Tuple(%s)" % (repr(self.nodes),)
1275
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001276class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001277 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001278 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001279 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001280
1281 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001282 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001283
1284 def getChildNodes(self):
1285 return self.expr,
1286
1287 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001288 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001289
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001290class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001291 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001292 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001293 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001294
1295 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001296 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001297
1298 def getChildNodes(self):
1299 return self.expr,
1300
1301 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001302 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001303
1304class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001305 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001306 self.test = test
1307 self.body = body
1308 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001309 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001310
1311 def getChildren(self):
1312 children = []
1313 children.append(self.test)
1314 children.append(self.body)
1315 children.append(self.else_)
1316 return tuple(children)
1317
1318 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001319 nodelist = []
1320 nodelist.append(self.test)
1321 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001322 if self.else_ is not None:
1323 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001324 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001325
1326 def __repr__(self):
1327 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1328
Guido van Rossumc2e20742006-02-27 22:32:47 +00001329class With(Node):
1330 def __init__(self, expr, vars, body, lineno=None):
1331 self.expr = expr
1332 self.vars = vars
1333 self.body = body
1334 self.lineno = lineno
1335
1336 def getChildren(self):
1337 children = []
1338 children.append(self.expr)
1339 children.append(self.vars)
1340 children.append(self.body)
1341 return tuple(children)
1342
1343 def getChildNodes(self):
1344 nodelist = []
1345 nodelist.append(self.expr)
1346 if self.vars is not None:
1347 nodelist.append(self.vars)
1348 nodelist.append(self.body)
1349 return tuple(nodelist)
1350
1351 def __repr__(self):
1352 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1353
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001354class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001355 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001356 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001357 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001358
1359 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001360 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001361
1362 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001363 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001364
1365 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001366 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001367
Guido van Rossumcc2b0162007-02-11 06:12:03 +00001368for name, obj in list(globals().items()):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001369 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001370 nodes[name.lower()] = obj