blob: 69533255d77eeb7c6ec7ce7993d743feda1b9c0b [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):
Jeremy Hylton5477f522001-08-29 18:08:02 +000036 pass
Jeremy Hyltonf968e852000-02-04 00:25:23 +000037
Anthony Baxterc2a5a632004-08-02 06:10:11 +000038class Expression(Node):
39 # Expression is an artificial node class to support "eval"
40 nodes["expression"] = "Expression"
41 def __init__(self, node):
42 self.node = node
43
44 def getChildren(self):
45 return self.node,
46
47 def getChildNodes(self):
48 return self.node,
49
50 def __repr__(self):
51 return "Expression(%s)" % (repr(self.node))
52
53class Add(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000054 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000055 self.left = left
56 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +000057 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000058
59 def getChildren(self):
60 return self.left, self.right
61
62 def getChildNodes(self):
63 return self.left, self.right
64
65 def __repr__(self):
66 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
67
68class And(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000069 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000070 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +000071 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000072
73 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +000074 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +000075
76 def getChildNodes(self):
77 nodelist = []
78 nodelist.extend(flatten_nodes(self.nodes))
79 return tuple(nodelist)
80
81 def __repr__(self):
82 return "And(%s)" % (repr(self.nodes),)
83
84class AssAttr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000085 def __init__(self, expr, attrname, flags, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000086 self.expr = expr
Anthony Baxterc2a5a632004-08-02 06:10:11 +000087 self.attrname = attrname
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000088 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +000089 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000090
91 def getChildren(self):
92 return self.expr, self.attrname, self.flags
93
94 def getChildNodes(self):
95 return self.expr,
96
97 def __repr__(self):
98 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
99
100class AssList(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000101 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000102 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000103 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000104
105 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000106 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000107
108 def getChildNodes(self):
109 nodelist = []
110 nodelist.extend(flatten_nodes(self.nodes))
111 return tuple(nodelist)
112
113 def __repr__(self):
114 return "AssList(%s)" % (repr(self.nodes),)
115
116class AssName(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000117 def __init__(self, name, flags, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000118 self.name = name
119 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +0000120 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000121
122 def getChildren(self):
123 return self.name, self.flags
124
125 def getChildNodes(self):
126 return ()
127
128 def __repr__(self):
129 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
130
131class AssTuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000132 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000133 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000134 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000135
136 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000137 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000138
139 def getChildNodes(self):
140 nodelist = []
141 nodelist.extend(flatten_nodes(self.nodes))
142 return tuple(nodelist)
143
144 def __repr__(self):
145 return "AssTuple(%s)" % (repr(self.nodes),)
146
147class Assert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000148 def __init__(self, test, fail, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000149 self.test = test
150 self.fail = fail
Jeremy Hylton566d9342004-09-07 15:28:01 +0000151 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000152
153 def getChildren(self):
154 children = []
155 children.append(self.test)
156 children.append(self.fail)
157 return tuple(children)
158
159 def getChildNodes(self):
160 nodelist = []
161 nodelist.append(self.test)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000162 if self.fail is not None:
163 nodelist.append(self.fail)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000164 return tuple(nodelist)
165
166 def __repr__(self):
167 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
168
169class Assign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000170 def __init__(self, nodes, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000171 self.nodes = nodes
172 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000173 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000174
175 def getChildren(self):
176 children = []
177 children.extend(flatten(self.nodes))
178 children.append(self.expr)
179 return tuple(children)
180
181 def getChildNodes(self):
182 nodelist = []
183 nodelist.extend(flatten_nodes(self.nodes))
184 nodelist.append(self.expr)
185 return tuple(nodelist)
186
187 def __repr__(self):
188 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
189
190class AugAssign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000191 def __init__(self, node, op, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000192 self.node = node
193 self.op = op
194 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000195 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000196
197 def getChildren(self):
198 return self.node, self.op, self.expr
199
200 def getChildNodes(self):
201 return self.node, self.expr
202
203 def __repr__(self):
204 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
205
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000206class Bitand(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000207 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000208 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000209 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000210
211 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000212 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000213
214 def getChildNodes(self):
215 nodelist = []
216 nodelist.extend(flatten_nodes(self.nodes))
217 return tuple(nodelist)
218
219 def __repr__(self):
220 return "Bitand(%s)" % (repr(self.nodes),)
221
222class Bitor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000223 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000224 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000225 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000226
227 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000228 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000229
230 def getChildNodes(self):
231 nodelist = []
232 nodelist.extend(flatten_nodes(self.nodes))
233 return tuple(nodelist)
234
235 def __repr__(self):
236 return "Bitor(%s)" % (repr(self.nodes),)
237
238class Bitxor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000239 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000240 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000241 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000242
243 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000244 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000245
246 def getChildNodes(self):
247 nodelist = []
248 nodelist.extend(flatten_nodes(self.nodes))
249 return tuple(nodelist)
250
251 def __repr__(self):
252 return "Bitxor(%s)" % (repr(self.nodes),)
253
254class Break(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000255 def __init__(self, lineno=None):
256 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000257
258 def getChildren(self):
259 return ()
260
261 def getChildNodes(self):
262 return ()
263
264 def __repr__(self):
265 return "Break()"
266
267class CallFunc(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000268 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000269 self.node = node
270 self.args = args
271 self.star_args = star_args
272 self.dstar_args = dstar_args
Jeremy Hylton566d9342004-09-07 15:28:01 +0000273 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000274
275 def getChildren(self):
276 children = []
277 children.append(self.node)
278 children.extend(flatten(self.args))
279 children.append(self.star_args)
280 children.append(self.dstar_args)
281 return tuple(children)
282
283 def getChildNodes(self):
284 nodelist = []
285 nodelist.append(self.node)
286 nodelist.extend(flatten_nodes(self.args))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000287 if self.star_args is not None:
288 nodelist.append(self.star_args)
289 if self.dstar_args is not None:
290 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000291 return tuple(nodelist)
292
293 def __repr__(self):
294 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
295
296class Class(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000297 def __init__(self, name, bases, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000298 self.name = name
299 self.bases = bases
300 self.doc = doc
301 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000302 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000303
304 def getChildren(self):
305 children = []
306 children.append(self.name)
307 children.extend(flatten(self.bases))
308 children.append(self.doc)
309 children.append(self.code)
310 return tuple(children)
311
312 def getChildNodes(self):
313 nodelist = []
314 nodelist.extend(flatten_nodes(self.bases))
315 nodelist.append(self.code)
316 return tuple(nodelist)
317
318 def __repr__(self):
319 return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
320
321class Compare(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000322 def __init__(self, expr, ops, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000323 self.expr = expr
324 self.ops = ops
Jeremy Hylton566d9342004-09-07 15:28:01 +0000325 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000326
327 def getChildren(self):
328 children = []
329 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000330 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000331 return tuple(children)
332
333 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000334 nodelist = []
335 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000336 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000337 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000338
339 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000340 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000341
342class Const(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000343 def __init__(self, value, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000344 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +0000345 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000346
347 def getChildren(self):
348 return self.value,
349
350 def getChildNodes(self):
351 return ()
352
353 def __repr__(self):
354 return "Const(%s)" % (repr(self.value),)
355
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000356class Continue(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000357 def __init__(self, lineno=None):
358 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000359
360 def getChildren(self):
361 return ()
362
363 def getChildNodes(self):
364 return ()
365
366 def __repr__(self):
367 return "Continue()"
368
369class Decorators(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000370 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000371 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000372 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000373
374 def getChildren(self):
375 return tuple(flatten(self.nodes))
376
377 def getChildNodes(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000378 nodelist = []
379 nodelist.extend(flatten_nodes(self.nodes))
380 return tuple(nodelist)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000381
382 def __repr__(self):
383 return "Decorators(%s)" % (repr(self.nodes),)
384
385class Dict(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000386 def __init__(self, items, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000387 self.items = items
Jeremy Hylton566d9342004-09-07 15:28:01 +0000388 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000389
390 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000391 return tuple(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000392
393 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000394 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000395 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000396 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000397
398 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000399 return "Dict(%s)" % (repr(self.items),)
400
401class Discard(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000402 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000403 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000404 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000405
406 def getChildren(self):
407 return self.expr,
408
409 def getChildNodes(self):
410 return self.expr,
411
412 def __repr__(self):
413 return "Discard(%s)" % (repr(self.expr),)
414
415class Div(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000416 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000417 self.left = left
418 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000419 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000420
421 def getChildren(self):
422 return self.left, self.right
423
424 def getChildNodes(self):
425 return self.left, self.right
426
427 def __repr__(self):
428 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
429
430class Ellipsis(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000431 def __init__(self, lineno=None):
432 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000433
434 def getChildren(self):
435 return ()
436
437 def getChildNodes(self):
438 return ()
439
440 def __repr__(self):
441 return "Ellipsis()"
442
443class Exec(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000444 def __init__(self, expr, locals, globals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000445 self.expr = expr
446 self.locals = locals
447 self.globals = globals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000448 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000449
450 def getChildren(self):
451 children = []
452 children.append(self.expr)
453 children.append(self.locals)
454 children.append(self.globals)
455 return tuple(children)
456
457 def getChildNodes(self):
458 nodelist = []
459 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000460 if self.locals is not None:
461 nodelist.append(self.locals)
462 if self.globals is not None:
463 nodelist.append(self.globals)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000464 return tuple(nodelist)
465
466 def __repr__(self):
467 return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
468
469class FloorDiv(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000470 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000471 self.left = left
472 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000473 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000474
475 def getChildren(self):
476 return self.left, self.right
477
478 def getChildNodes(self):
479 return self.left, self.right
480
481 def __repr__(self):
482 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000483
484class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000485 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000486 self.assign = assign
487 self.list = list
488 self.body = body
489 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000490 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000491
492 def getChildren(self):
493 children = []
494 children.append(self.assign)
495 children.append(self.list)
496 children.append(self.body)
497 children.append(self.else_)
498 return tuple(children)
499
500 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000501 nodelist = []
502 nodelist.append(self.assign)
503 nodelist.append(self.list)
504 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000505 if self.else_ is not None:
506 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000507 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000508
509 def __repr__(self):
510 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
511
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000512class From(Node):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000513 def __init__(self, modname, names, level, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000514 self.modname = modname
515 self.names = names
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000516 self.level = level
Jeremy Hylton566d9342004-09-07 15:28:01 +0000517 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000518
519 def getChildren(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000520 return self.modname, self.names, self.level
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000521
522 def getChildNodes(self):
523 return ()
524
525 def __repr__(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000526 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000527
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000528class Function(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000529 def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000530 self.decorators = decorators
531 self.name = name
532 self.argnames = argnames
533 self.defaults = defaults
534 self.flags = flags
535 self.doc = doc
536 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000537 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000538 self.varargs = self.kwargs = None
539 if flags & CO_VARARGS:
540 self.varargs = 1
541 if flags & CO_VARKEYWORDS:
542 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000543
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000544
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000545 def getChildren(self):
546 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000547 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000548 children.append(self.name)
549 children.append(self.argnames)
550 children.extend(flatten(self.defaults))
551 children.append(self.flags)
552 children.append(self.doc)
553 children.append(self.code)
554 return tuple(children)
555
556 def getChildNodes(self):
557 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000558 if self.decorators is not None:
559 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000560 nodelist.extend(flatten_nodes(self.defaults))
561 nodelist.append(self.code)
562 return tuple(nodelist)
563
564 def __repr__(self):
565 return "Function(%s, %s, %s, %s, %s, %s, %s)" % (repr(self.decorators), repr(self.name), repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.doc), repr(self.code))
566
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
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000571 self.argnames = ['.0']
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000572 self.varargs = self.kwargs = None
Tim Peters39e11fb2006-03-04 02:43:44 +0000573
Guido van Rossum86e58e22006-08-28 15:27:34 +0000574
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000575 def getChildren(self):
576 return self.code,
577
578 def getChildNodes(self):
579 return self.code,
580
581 def __repr__(self):
582 return "GenExpr(%s)" % (repr(self.code),)
583
584class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000585 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000586 self.assign = assign
587 self.iter = iter
588 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000589 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000590 self.is_outmost = False
591
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000592 def getChildren(self):
593 children = []
594 children.append(self.assign)
595 children.append(self.iter)
596 children.extend(flatten(self.ifs))
597 return tuple(children)
598
599 def getChildNodes(self):
600 nodelist = []
601 nodelist.append(self.assign)
602 nodelist.append(self.iter)
603 nodelist.extend(flatten_nodes(self.ifs))
604 return tuple(nodelist)
605
606 def __repr__(self):
607 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
608
609class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000610 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000611 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000612 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000613
614 def getChildren(self):
615 return self.test,
616
617 def getChildNodes(self):
618 return self.test,
619
620 def __repr__(self):
621 return "GenExprIf(%s)" % (repr(self.test),)
622
623class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000624 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000625 self.expr = expr
626 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000627 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000628
629 def getChildren(self):
630 children = []
631 children.append(self.expr)
632 children.extend(flatten(self.quals))
633 return tuple(children)
634
635 def getChildNodes(self):
636 nodelist = []
637 nodelist.append(self.expr)
638 nodelist.extend(flatten_nodes(self.quals))
639 return tuple(nodelist)
640
641 def __repr__(self):
642 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
643
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000644class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000645 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000646 self.expr = expr
647 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000648 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000649
650 def getChildren(self):
651 return self.expr, self.attrname
652
653 def getChildNodes(self):
654 return self.expr,
655
656 def __repr__(self):
657 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
658
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000659class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000660 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000661 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000662 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000663
664 def getChildren(self):
665 return self.names,
666
667 def getChildNodes(self):
668 return ()
669
670 def __repr__(self):
671 return "Global(%s)" % (repr(self.names),)
672
673class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000674 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000675 self.tests = tests
676 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000677 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000678
679 def getChildren(self):
680 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000681 children.extend(flatten(self.tests))
682 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000683 return tuple(children)
684
685 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000686 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000687 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000688 if self.else_ is not None:
689 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000690 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000691
692 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000693 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
694
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000695class IfExp(Node):
696 def __init__(self, test, then, else_, lineno=None):
697 self.test = test
698 self.then = then
699 self.else_ = else_
700 self.lineno = lineno
701
702 def getChildren(self):
703 return self.test, self.then, self.else_
704
705 def getChildNodes(self):
706 return self.test, self.then, self.else_
707
708 def __repr__(self):
709 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
710
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000711class Import(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000712 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000713 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000714 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000715
716 def getChildren(self):
717 return self.names,
718
719 def getChildNodes(self):
720 return ()
721
722 def __repr__(self):
723 return "Import(%s)" % (repr(self.names),)
724
725class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000726 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000727 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000728 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000729
730 def getChildren(self):
731 return self.expr,
732
733 def getChildNodes(self):
734 return self.expr,
735
736 def __repr__(self):
737 return "Invert(%s)" % (repr(self.expr),)
738
739class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000740 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000741 self.name = name
742 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000743 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000744
745 def getChildren(self):
746 return self.name, self.expr
747
748 def getChildNodes(self):
749 return self.expr,
750
751 def __repr__(self):
752 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
753
754class Lambda(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000755 def __init__(self, argnames, defaults, flags, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000756 self.argnames = argnames
757 self.defaults = defaults
758 self.flags = flags
759 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000760 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000761 self.varargs = self.kwargs = None
762 if flags & CO_VARARGS:
763 self.varargs = 1
764 if flags & CO_VARKEYWORDS:
765 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000766
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000767
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000768 def getChildren(self):
769 children = []
770 children.append(self.argnames)
771 children.extend(flatten(self.defaults))
772 children.append(self.flags)
773 children.append(self.code)
774 return tuple(children)
775
776 def getChildNodes(self):
777 nodelist = []
778 nodelist.extend(flatten_nodes(self.defaults))
779 nodelist.append(self.code)
780 return tuple(nodelist)
781
782 def __repr__(self):
783 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
784
785class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000786 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000787 self.left = left
788 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000789 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000790
791 def getChildren(self):
792 return self.left, self.right
793
794 def getChildNodes(self):
795 return self.left, self.right
796
797 def __repr__(self):
798 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
799
800class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000801 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000802 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000803 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000804
805 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000806 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000807
808 def getChildNodes(self):
809 nodelist = []
810 nodelist.extend(flatten_nodes(self.nodes))
811 return tuple(nodelist)
812
813 def __repr__(self):
814 return "List(%s)" % (repr(self.nodes),)
815
816class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000817 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000818 self.expr = expr
819 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000820 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000821
822 def getChildren(self):
823 children = []
824 children.append(self.expr)
825 children.extend(flatten(self.quals))
826 return tuple(children)
827
828 def getChildNodes(self):
829 nodelist = []
830 nodelist.append(self.expr)
831 nodelist.extend(flatten_nodes(self.quals))
832 return tuple(nodelist)
833
834 def __repr__(self):
835 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
836
837class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000838 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000839 self.assign = assign
840 self.list = list
841 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000842 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000843
844 def getChildren(self):
845 children = []
846 children.append(self.assign)
847 children.append(self.list)
848 children.extend(flatten(self.ifs))
849 return tuple(children)
850
851 def getChildNodes(self):
852 nodelist = []
853 nodelist.append(self.assign)
854 nodelist.append(self.list)
855 nodelist.extend(flatten_nodes(self.ifs))
856 return tuple(nodelist)
857
858 def __repr__(self):
859 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
860
861class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000862 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000863 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000864 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000865
866 def getChildren(self):
867 return self.test,
868
869 def getChildNodes(self):
870 return self.test,
871
872 def __repr__(self):
873 return "ListCompIf(%s)" % (repr(self.test),)
874
875class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000876 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000877 self.left = left
878 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000879 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000880
881 def getChildren(self):
882 return self.left, self.right
883
884 def getChildNodes(self):
885 return self.left, self.right
886
887 def __repr__(self):
888 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000889
890class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000891 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000892 self.doc = doc
893 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000894 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000895
896 def getChildren(self):
897 return self.doc, self.node
898
899 def getChildNodes(self):
900 return self.node,
901
902 def __repr__(self):
903 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
904
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000905class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000906 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000907 self.left = left
908 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000909 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000910
911 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000912 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000913
914 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000915 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000916
917 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000918 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000919
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000920class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000921 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000922 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000923 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000924
925 def getChildren(self):
926 return self.name,
927
928 def getChildNodes(self):
929 return ()
930
931 def __repr__(self):
932 return "Name(%s)" % (repr(self.name),)
933
934class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000935 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000936 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000937 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000938
939 def getChildren(self):
940 return self.expr,
941
942 def getChildNodes(self):
943 return self.expr,
944
945 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000946 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000947
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000948class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000949 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000950 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000951 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000952
953 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000954 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000955
956 def getChildNodes(self):
957 nodelist = []
958 nodelist.extend(flatten_nodes(self.nodes))
959 return tuple(nodelist)
960
961 def __repr__(self):
962 return "Or(%s)" % (repr(self.nodes),)
963
964class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000965 def __init__(self, lineno=None):
966 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000967
968 def getChildren(self):
969 return ()
970
971 def getChildNodes(self):
972 return ()
973
974 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000975 return "Pass()"
976
977class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000978 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000979 self.left = left
980 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000981 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000982
983 def getChildren(self):
984 return self.left, self.right
985
986 def getChildNodes(self):
987 return self.left, self.right
988
989 def __repr__(self):
990 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000991
992class Print(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000993 def __init__(self, nodes, dest, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000994 self.nodes = nodes
995 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000996 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000997
998 def getChildren(self):
999 children = []
1000 children.extend(flatten(self.nodes))
1001 children.append(self.dest)
1002 return tuple(children)
1003
1004 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001005 nodelist = []
1006 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001007 if self.dest is not None:
1008 nodelist.append(self.dest)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001009 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001010
1011 def __repr__(self):
1012 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1013
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001014class Printnl(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001015 def __init__(self, nodes, dest, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001016 self.nodes = nodes
1017 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +00001018 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001019
1020 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001021 children = []
1022 children.extend(flatten(self.nodes))
1023 children.append(self.dest)
1024 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001025
1026 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001027 nodelist = []
1028 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001029 if self.dest is not None:
1030 nodelist.append(self.dest)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001031 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001032
1033 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001034 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1035
1036class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001037 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001038 self.expr1 = expr1
1039 self.expr2 = expr2
1040 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001041 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001042
1043 def getChildren(self):
1044 children = []
1045 children.append(self.expr1)
1046 children.append(self.expr2)
1047 children.append(self.expr3)
1048 return tuple(children)
1049
1050 def getChildNodes(self):
1051 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001052 if self.expr1 is not None:
1053 nodelist.append(self.expr1)
1054 if self.expr2 is not None:
1055 nodelist.append(self.expr2)
1056 if self.expr3 is not None:
1057 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001058 return tuple(nodelist)
1059
1060 def __repr__(self):
1061 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1062
1063class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001064 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001065 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001066 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001067
1068 def getChildren(self):
1069 return self.value,
1070
1071 def getChildNodes(self):
1072 return self.value,
1073
1074 def __repr__(self):
1075 return "Return(%s)" % (repr(self.value),)
1076
1077class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001078 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001079 self.left = left
1080 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001081 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001082
1083 def getChildren(self):
1084 return self.left, self.right
1085
1086 def getChildNodes(self):
1087 return self.left, self.right
1088
1089 def __repr__(self):
1090 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1091
Guido van Rossum86e58e22006-08-28 15:27:34 +00001092class Set(Node):
1093 def __init__(self, items, lineno=None):
1094 self.items = items
1095 self.lineno = lineno
1096
1097 def getChildren(self):
1098 return tuple(flatten(self.items))
1099
1100 def getChildNodes(self):
1101 nodelist = []
1102 nodelist.extend(flatten_nodes(self.items))
1103 return tuple(nodelist)
1104
1105 def __repr__(self):
1106 return "Set(%s)" % (repr(self.items),)
1107
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001108class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001109 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001110 self.expr = expr
1111 self.flags = flags
1112 self.lower = lower
1113 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001114 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001115
1116 def getChildren(self):
1117 children = []
1118 children.append(self.expr)
1119 children.append(self.flags)
1120 children.append(self.lower)
1121 children.append(self.upper)
1122 return tuple(children)
1123
1124 def getChildNodes(self):
1125 nodelist = []
1126 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001127 if self.lower is not None:
1128 nodelist.append(self.lower)
1129 if self.upper is not None:
1130 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001131 return tuple(nodelist)
1132
1133 def __repr__(self):
1134 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1135
1136class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001137 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001138 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001139 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001140
1141 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001142 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001143
1144 def getChildNodes(self):
1145 nodelist = []
1146 nodelist.extend(flatten_nodes(self.nodes))
1147 return tuple(nodelist)
1148
1149 def __repr__(self):
1150 return "Sliceobj(%s)" % (repr(self.nodes),)
1151
1152class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001153 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001154 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001155 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001156
1157 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001158 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001159
1160 def getChildNodes(self):
1161 nodelist = []
1162 nodelist.extend(flatten_nodes(self.nodes))
1163 return tuple(nodelist)
1164
1165 def __repr__(self):
1166 return "Stmt(%s)" % (repr(self.nodes),)
1167
1168class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001169 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001170 self.left = left
1171 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001172 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001173
1174 def getChildren(self):
1175 return self.left, self.right
1176
1177 def getChildNodes(self):
1178 return self.left, self.right
1179
1180 def __repr__(self):
1181 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001182
1183class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001184 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001185 self.expr = expr
1186 self.flags = flags
1187 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001188 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001189
1190 def getChildren(self):
1191 children = []
1192 children.append(self.expr)
1193 children.append(self.flags)
1194 children.extend(flatten(self.subs))
1195 return tuple(children)
1196
1197 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001198 nodelist = []
1199 nodelist.append(self.expr)
1200 nodelist.extend(flatten_nodes(self.subs))
1201 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001202
1203 def __repr__(self):
1204 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1205
1206class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001207 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001208 self.body = body
1209 self.handlers = handlers
1210 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001211 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001212
1213 def getChildren(self):
1214 children = []
1215 children.append(self.body)
1216 children.extend(flatten(self.handlers))
1217 children.append(self.else_)
1218 return tuple(children)
1219
1220 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001221 nodelist = []
1222 nodelist.append(self.body)
1223 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001224 if self.else_ is not None:
1225 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001226 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001227
1228 def __repr__(self):
1229 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1230
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001231class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001232 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001233 self.body = body
1234 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001235 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001236
1237 def getChildren(self):
1238 return self.body, self.final
1239
1240 def getChildNodes(self):
1241 return self.body, self.final
1242
1243 def __repr__(self):
1244 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1245
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001246class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001247 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001248 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001249 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001250
1251 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001252 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001253
1254 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001255 nodelist = []
1256 nodelist.extend(flatten_nodes(self.nodes))
1257 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001258
1259 def __repr__(self):
1260 return "Tuple(%s)" % (repr(self.nodes),)
1261
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001262class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001263 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001264 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001265 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001266
1267 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001268 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001269
1270 def getChildNodes(self):
1271 return self.expr,
1272
1273 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001274 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001275
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001276class UnarySub(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 "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001289
1290class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001291 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001292 self.test = test
1293 self.body = body
1294 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001295 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001296
1297 def getChildren(self):
1298 children = []
1299 children.append(self.test)
1300 children.append(self.body)
1301 children.append(self.else_)
1302 return tuple(children)
1303
1304 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001305 nodelist = []
1306 nodelist.append(self.test)
1307 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001308 if self.else_ is not None:
1309 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001310 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001311
1312 def __repr__(self):
1313 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1314
Guido van Rossumc2e20742006-02-27 22:32:47 +00001315class With(Node):
1316 def __init__(self, expr, vars, body, lineno=None):
1317 self.expr = expr
1318 self.vars = vars
1319 self.body = body
1320 self.lineno = lineno
1321
1322 def getChildren(self):
1323 children = []
1324 children.append(self.expr)
1325 children.append(self.vars)
1326 children.append(self.body)
1327 return tuple(children)
1328
1329 def getChildNodes(self):
1330 nodelist = []
1331 nodelist.append(self.expr)
1332 if self.vars is not None:
1333 nodelist.append(self.vars)
1334 nodelist.append(self.body)
1335 return tuple(nodelist)
1336
1337 def __repr__(self):
1338 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1339
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001340class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001341 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001342 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001343 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001344
1345 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001346 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001347
1348 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001349 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001350
1351 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001352 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001353
Jeremy Hylton566d9342004-09-07 15:28:01 +00001354for name, obj in globals().items():
1355 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001356 nodes[name.lower()] = obj