blob: 94a6262d6844faa0a99ba109c2b3224566036b10 [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
545
546 def getChildren(self):
547 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000548 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000549 children.append(self.name)
550 children.append(self.argnames)
551 children.extend(flatten(self.defaults))
552 children.append(self.flags)
553 children.append(self.doc)
554 children.append(self.code)
555 return tuple(children)
556
557 def getChildNodes(self):
558 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000559 if self.decorators is not None:
560 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000561 nodelist.extend(flatten_nodes(self.defaults))
562 nodelist.append(self.code)
563 return tuple(nodelist)
564
565 def __repr__(self):
566 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))
567
568class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000569 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000570 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000571 self.lineno = lineno
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000572 self.argnames = ['.0']
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000573 self.varargs = self.kwargs = None
Tim Peters39e11fb2006-03-04 02:43:44 +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
592
593 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
755class Lambda(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000756 def __init__(self, argnames, defaults, flags, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000757 self.argnames = argnames
758 self.defaults = defaults
759 self.flags = flags
760 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000761 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000762 self.varargs = self.kwargs = None
763 if flags & CO_VARARGS:
764 self.varargs = 1
765 if flags & CO_VARKEYWORDS:
766 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000767
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000768
769
770 def getChildren(self):
771 children = []
772 children.append(self.argnames)
773 children.extend(flatten(self.defaults))
774 children.append(self.flags)
775 children.append(self.code)
776 return tuple(children)
777
778 def getChildNodes(self):
779 nodelist = []
780 nodelist.extend(flatten_nodes(self.defaults))
781 nodelist.append(self.code)
782 return tuple(nodelist)
783
784 def __repr__(self):
785 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
786
787class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000788 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000789 self.left = left
790 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000791 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000792
793 def getChildren(self):
794 return self.left, self.right
795
796 def getChildNodes(self):
797 return self.left, self.right
798
799 def __repr__(self):
800 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
801
802class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000803 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000804 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000805 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000806
807 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000808 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000809
810 def getChildNodes(self):
811 nodelist = []
812 nodelist.extend(flatten_nodes(self.nodes))
813 return tuple(nodelist)
814
815 def __repr__(self):
816 return "List(%s)" % (repr(self.nodes),)
817
818class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000819 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000820 self.expr = expr
821 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000822 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000823
824 def getChildren(self):
825 children = []
826 children.append(self.expr)
827 children.extend(flatten(self.quals))
828 return tuple(children)
829
830 def getChildNodes(self):
831 nodelist = []
832 nodelist.append(self.expr)
833 nodelist.extend(flatten_nodes(self.quals))
834 return tuple(nodelist)
835
836 def __repr__(self):
837 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
838
839class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000840 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000841 self.assign = assign
842 self.list = list
843 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000844 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000845
846 def getChildren(self):
847 children = []
848 children.append(self.assign)
849 children.append(self.list)
850 children.extend(flatten(self.ifs))
851 return tuple(children)
852
853 def getChildNodes(self):
854 nodelist = []
855 nodelist.append(self.assign)
856 nodelist.append(self.list)
857 nodelist.extend(flatten_nodes(self.ifs))
858 return tuple(nodelist)
859
860 def __repr__(self):
861 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
862
863class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000864 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000865 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000866 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000867
868 def getChildren(self):
869 return self.test,
870
871 def getChildNodes(self):
872 return self.test,
873
874 def __repr__(self):
875 return "ListCompIf(%s)" % (repr(self.test),)
876
877class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000878 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000879 self.left = left
880 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000881 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000882
883 def getChildren(self):
884 return self.left, self.right
885
886 def getChildNodes(self):
887 return self.left, self.right
888
889 def __repr__(self):
890 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000891
892class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000893 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000894 self.doc = doc
895 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000896 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000897
898 def getChildren(self):
899 return self.doc, self.node
900
901 def getChildNodes(self):
902 return self.node,
903
904 def __repr__(self):
905 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
906
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000907class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000908 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000909 self.left = left
910 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000911 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000912
913 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000914 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000915
916 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000917 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000918
919 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000920 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000921
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000922class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000923 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000924 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000925 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000926
927 def getChildren(self):
928 return self.name,
929
930 def getChildNodes(self):
931 return ()
932
933 def __repr__(self):
934 return "Name(%s)" % (repr(self.name),)
935
936class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000937 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000938 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000939 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000940
941 def getChildren(self):
942 return self.expr,
943
944 def getChildNodes(self):
945 return self.expr,
946
947 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000948 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000949
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000950class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000951 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000952 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000953 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000954
955 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000956 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000957
958 def getChildNodes(self):
959 nodelist = []
960 nodelist.extend(flatten_nodes(self.nodes))
961 return tuple(nodelist)
962
963 def __repr__(self):
964 return "Or(%s)" % (repr(self.nodes),)
965
966class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000967 def __init__(self, lineno=None):
968 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000969
970 def getChildren(self):
971 return ()
972
973 def getChildNodes(self):
974 return ()
975
976 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000977 return "Pass()"
978
979class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000980 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000981 self.left = left
982 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000983 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000984
985 def getChildren(self):
986 return self.left, self.right
987
988 def getChildNodes(self):
989 return self.left, self.right
990
991 def __repr__(self):
992 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000993
994class Print(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000995 def __init__(self, nodes, dest, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000996 self.nodes = nodes
997 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000998 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000999
1000 def getChildren(self):
1001 children = []
1002 children.extend(flatten(self.nodes))
1003 children.append(self.dest)
1004 return tuple(children)
1005
1006 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001007 nodelist = []
1008 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001009 if self.dest is not None:
1010 nodelist.append(self.dest)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001011 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001012
1013 def __repr__(self):
1014 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1015
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001016class Printnl(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001017 def __init__(self, nodes, dest, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001018 self.nodes = nodes
1019 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +00001020 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001021
1022 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001023 children = []
1024 children.extend(flatten(self.nodes))
1025 children.append(self.dest)
1026 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001027
1028 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001029 nodelist = []
1030 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001031 if self.dest is not None:
1032 nodelist.append(self.dest)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001033 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001034
1035 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001036 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1037
1038class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001039 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001040 self.expr1 = expr1
1041 self.expr2 = expr2
1042 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001043 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001044
1045 def getChildren(self):
1046 children = []
1047 children.append(self.expr1)
1048 children.append(self.expr2)
1049 children.append(self.expr3)
1050 return tuple(children)
1051
1052 def getChildNodes(self):
1053 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001054 if self.expr1 is not None:
1055 nodelist.append(self.expr1)
1056 if self.expr2 is not None:
1057 nodelist.append(self.expr2)
1058 if self.expr3 is not None:
1059 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001060 return tuple(nodelist)
1061
1062 def __repr__(self):
1063 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1064
1065class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001066 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001067 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001068 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001069
1070 def getChildren(self):
1071 return self.value,
1072
1073 def getChildNodes(self):
1074 return self.value,
1075
1076 def __repr__(self):
1077 return "Return(%s)" % (repr(self.value),)
1078
1079class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001080 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001081 self.left = left
1082 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001083 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001084
1085 def getChildren(self):
1086 return self.left, self.right
1087
1088 def getChildNodes(self):
1089 return self.left, self.right
1090
1091 def __repr__(self):
1092 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1093
1094class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001095 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001096 self.expr = expr
1097 self.flags = flags
1098 self.lower = lower
1099 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001100 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001101
1102 def getChildren(self):
1103 children = []
1104 children.append(self.expr)
1105 children.append(self.flags)
1106 children.append(self.lower)
1107 children.append(self.upper)
1108 return tuple(children)
1109
1110 def getChildNodes(self):
1111 nodelist = []
1112 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001113 if self.lower is not None:
1114 nodelist.append(self.lower)
1115 if self.upper is not None:
1116 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001117 return tuple(nodelist)
1118
1119 def __repr__(self):
1120 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1121
1122class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001123 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001124 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001125 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001126
1127 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001128 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001129
1130 def getChildNodes(self):
1131 nodelist = []
1132 nodelist.extend(flatten_nodes(self.nodes))
1133 return tuple(nodelist)
1134
1135 def __repr__(self):
1136 return "Sliceobj(%s)" % (repr(self.nodes),)
1137
1138class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001139 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001140 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001141 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001142
1143 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001144 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001145
1146 def getChildNodes(self):
1147 nodelist = []
1148 nodelist.extend(flatten_nodes(self.nodes))
1149 return tuple(nodelist)
1150
1151 def __repr__(self):
1152 return "Stmt(%s)" % (repr(self.nodes),)
1153
1154class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001155 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001156 self.left = left
1157 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001158 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001159
1160 def getChildren(self):
1161 return self.left, self.right
1162
1163 def getChildNodes(self):
1164 return self.left, self.right
1165
1166 def __repr__(self):
1167 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001168
1169class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001170 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001171 self.expr = expr
1172 self.flags = flags
1173 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001174 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001175
1176 def getChildren(self):
1177 children = []
1178 children.append(self.expr)
1179 children.append(self.flags)
1180 children.extend(flatten(self.subs))
1181 return tuple(children)
1182
1183 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001184 nodelist = []
1185 nodelist.append(self.expr)
1186 nodelist.extend(flatten_nodes(self.subs))
1187 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001188
1189 def __repr__(self):
1190 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1191
1192class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001193 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001194 self.body = body
1195 self.handlers = handlers
1196 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001197 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001198
1199 def getChildren(self):
1200 children = []
1201 children.append(self.body)
1202 children.extend(flatten(self.handlers))
1203 children.append(self.else_)
1204 return tuple(children)
1205
1206 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001207 nodelist = []
1208 nodelist.append(self.body)
1209 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001210 if self.else_ is not None:
1211 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001212 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001213
1214 def __repr__(self):
1215 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1216
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001217class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001218 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001219 self.body = body
1220 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001221 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001222
1223 def getChildren(self):
1224 return self.body, self.final
1225
1226 def getChildNodes(self):
1227 return self.body, self.final
1228
1229 def __repr__(self):
1230 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1231
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001232class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001233 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001234 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001235 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001236
1237 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001238 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001239
1240 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001241 nodelist = []
1242 nodelist.extend(flatten_nodes(self.nodes))
1243 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001244
1245 def __repr__(self):
1246 return "Tuple(%s)" % (repr(self.nodes),)
1247
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001248class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001249 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001250 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001251 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001252
1253 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001254 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001255
1256 def getChildNodes(self):
1257 return self.expr,
1258
1259 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001260 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001261
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001262class UnarySub(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 "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001275
1276class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001277 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001278 self.test = test
1279 self.body = body
1280 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001281 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001282
1283 def getChildren(self):
1284 children = []
1285 children.append(self.test)
1286 children.append(self.body)
1287 children.append(self.else_)
1288 return tuple(children)
1289
1290 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001291 nodelist = []
1292 nodelist.append(self.test)
1293 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001294 if self.else_ is not None:
1295 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001296 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001297
1298 def __repr__(self):
1299 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1300
Guido van Rossumc2e20742006-02-27 22:32:47 +00001301class With(Node):
1302 def __init__(self, expr, vars, body, lineno=None):
1303 self.expr = expr
1304 self.vars = vars
1305 self.body = body
1306 self.lineno = lineno
1307
1308 def getChildren(self):
1309 children = []
1310 children.append(self.expr)
1311 children.append(self.vars)
1312 children.append(self.body)
1313 return tuple(children)
1314
1315 def getChildNodes(self):
1316 nodelist = []
1317 nodelist.append(self.expr)
1318 if self.vars is not None:
1319 nodelist.append(self.vars)
1320 nodelist.append(self.body)
1321 return tuple(nodelist)
1322
1323 def __repr__(self):
1324 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1325
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001326class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001327 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001328 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001329 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001330
1331 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001332 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001333
1334 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001335 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001336
1337 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001338 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001339
Jeremy Hylton566d9342004-09-07 15:28:01 +00001340for name, obj in globals().items():
1341 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001342 nodes[name.lower()] = obj