blob: cfc2a51d8818b77628b31a4f2b0fa6f1e5bea7ac [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"""
Jeremy Hylton9605c112000-02-08 18:57:32 +00005from consts import CO_VARARGS, CO_VARKEYWORDS
Jeremy Hyltonf968e852000-02-04 00:25:23 +00006
Jeremy Hylton628d2892000-10-25 18:02:59 +00007def flatten(list):
8 l = []
9 for elt in list:
10 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
Jeremy Hylton5477f522001-08-29 18:08:02 +000018def flatten_nodes(list):
19 return [n for n in flatten(list) if isinstance(n, Node)]
20
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
206class Backquote(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000207 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000208 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000209 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000210
211 def getChildren(self):
212 return self.expr,
213
214 def getChildNodes(self):
215 return self.expr,
216
217 def __repr__(self):
218 return "Backquote(%s)" % (repr(self.expr),)
219
220class Bitand(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000221 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000222 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000223 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000224
225 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000226 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000227
228 def getChildNodes(self):
229 nodelist = []
230 nodelist.extend(flatten_nodes(self.nodes))
231 return tuple(nodelist)
232
233 def __repr__(self):
234 return "Bitand(%s)" % (repr(self.nodes),)
235
236class Bitor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000237 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000238 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000239 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000240
241 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000242 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000243
244 def getChildNodes(self):
245 nodelist = []
246 nodelist.extend(flatten_nodes(self.nodes))
247 return tuple(nodelist)
248
249 def __repr__(self):
250 return "Bitor(%s)" % (repr(self.nodes),)
251
252class Bitxor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000253 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000254 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000255 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000256
257 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000258 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000259
260 def getChildNodes(self):
261 nodelist = []
262 nodelist.extend(flatten_nodes(self.nodes))
263 return tuple(nodelist)
264
265 def __repr__(self):
266 return "Bitxor(%s)" % (repr(self.nodes),)
267
268class Break(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000269 def __init__(self, lineno=None):
270 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000271
272 def getChildren(self):
273 return ()
274
275 def getChildNodes(self):
276 return ()
277
278 def __repr__(self):
279 return "Break()"
280
281class CallFunc(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000282 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000283 self.node = node
284 self.args = args
285 self.star_args = star_args
286 self.dstar_args = dstar_args
Jeremy Hylton566d9342004-09-07 15:28:01 +0000287 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000288
289 def getChildren(self):
290 children = []
291 children.append(self.node)
292 children.extend(flatten(self.args))
293 children.append(self.star_args)
294 children.append(self.dstar_args)
295 return tuple(children)
296
297 def getChildNodes(self):
298 nodelist = []
299 nodelist.append(self.node)
300 nodelist.extend(flatten_nodes(self.args))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000301 if self.star_args is not None:
302 nodelist.append(self.star_args)
303 if self.dstar_args is not None:
304 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000305 return tuple(nodelist)
306
307 def __repr__(self):
308 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
309
310class Class(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000311 def __init__(self, name, bases, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000312 self.name = name
313 self.bases = bases
314 self.doc = doc
315 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000316 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000317
318 def getChildren(self):
319 children = []
320 children.append(self.name)
321 children.extend(flatten(self.bases))
322 children.append(self.doc)
323 children.append(self.code)
324 return tuple(children)
325
326 def getChildNodes(self):
327 nodelist = []
328 nodelist.extend(flatten_nodes(self.bases))
329 nodelist.append(self.code)
330 return tuple(nodelist)
331
332 def __repr__(self):
333 return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
334
335class Compare(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000336 def __init__(self, expr, ops, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000337 self.expr = expr
338 self.ops = ops
Jeremy Hylton566d9342004-09-07 15:28:01 +0000339 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000340
341 def getChildren(self):
342 children = []
343 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000344 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000345 return tuple(children)
346
347 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000348 nodelist = []
349 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000350 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000351 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000352
353 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000354 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000355
356class Const(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000357 def __init__(self, value, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000358 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +0000359 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000360
361 def getChildren(self):
362 return self.value,
363
364 def getChildNodes(self):
365 return ()
366
367 def __repr__(self):
368 return "Const(%s)" % (repr(self.value),)
369
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000370class Continue(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000371 def __init__(self, lineno=None):
372 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000373
374 def getChildren(self):
375 return ()
376
377 def getChildNodes(self):
378 return ()
379
380 def __repr__(self):
381 return "Continue()"
382
383class Decorators(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000384 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000385 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000386 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000387
388 def getChildren(self):
389 return tuple(flatten(self.nodes))
390
391 def getChildNodes(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000392 nodelist = []
393 nodelist.extend(flatten_nodes(self.nodes))
394 return tuple(nodelist)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000395
396 def __repr__(self):
397 return "Decorators(%s)" % (repr(self.nodes),)
398
399class Dict(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000400 def __init__(self, items, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000401 self.items = items
Jeremy Hylton566d9342004-09-07 15:28:01 +0000402 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000403
404 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000405 return tuple(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000406
407 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000408 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000409 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000410 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000411
412 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000413 return "Dict(%s)" % (repr(self.items),)
414
415class Discard(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000416 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000417 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000418 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000419
420 def getChildren(self):
421 return self.expr,
422
423 def getChildNodes(self):
424 return self.expr,
425
426 def __repr__(self):
427 return "Discard(%s)" % (repr(self.expr),)
428
429class Div(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000430 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000431 self.left = left
432 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000433 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000434
435 def getChildren(self):
436 return self.left, self.right
437
438 def getChildNodes(self):
439 return self.left, self.right
440
441 def __repr__(self):
442 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
443
444class Ellipsis(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000445 def __init__(self, lineno=None):
446 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000447
448 def getChildren(self):
449 return ()
450
451 def getChildNodes(self):
452 return ()
453
454 def __repr__(self):
455 return "Ellipsis()"
456
457class Exec(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000458 def __init__(self, expr, locals, globals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000459 self.expr = expr
460 self.locals = locals
461 self.globals = globals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000462 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000463
464 def getChildren(self):
465 children = []
466 children.append(self.expr)
467 children.append(self.locals)
468 children.append(self.globals)
469 return tuple(children)
470
471 def getChildNodes(self):
472 nodelist = []
473 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000474 if self.locals is not None:
475 nodelist.append(self.locals)
476 if self.globals is not None:
477 nodelist.append(self.globals)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000478 return tuple(nodelist)
479
480 def __repr__(self):
481 return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
482
483class FloorDiv(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000484 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000485 self.left = left
486 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000487 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000488
489 def getChildren(self):
490 return self.left, self.right
491
492 def getChildNodes(self):
493 return self.left, self.right
494
495 def __repr__(self):
496 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000497
498class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000499 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000500 self.assign = assign
501 self.list = list
502 self.body = body
503 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000504 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000505
506 def getChildren(self):
507 children = []
508 children.append(self.assign)
509 children.append(self.list)
510 children.append(self.body)
511 children.append(self.else_)
512 return tuple(children)
513
514 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000515 nodelist = []
516 nodelist.append(self.assign)
517 nodelist.append(self.list)
518 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000519 if self.else_ is not None:
520 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000521 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000522
523 def __repr__(self):
524 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
525
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000526class From(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000527 def __init__(self, modname, names, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000528 self.modname = modname
529 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000530 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000531
532 def getChildren(self):
533 return self.modname, self.names
534
535 def getChildNodes(self):
536 return ()
537
538 def __repr__(self):
539 return "From(%s, %s)" % (repr(self.modname), repr(self.names))
540
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000541class Function(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000542 def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000543 self.decorators = decorators
544 self.name = name
545 self.argnames = argnames
546 self.defaults = defaults
547 self.flags = flags
548 self.doc = doc
549 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000550 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000551 self.varargs = self.kwargs = None
552 if flags & CO_VARARGS:
553 self.varargs = 1
554 if flags & CO_VARKEYWORDS:
555 self.kwargs = 1
Jeremy Hylton566d9342004-09-07 15:28:01 +0000556
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000557
558
559 def getChildren(self):
560 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000561 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000562 children.append(self.name)
563 children.append(self.argnames)
564 children.extend(flatten(self.defaults))
565 children.append(self.flags)
566 children.append(self.doc)
567 children.append(self.code)
568 return tuple(children)
569
570 def getChildNodes(self):
571 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000572 if self.decorators is not None:
573 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000574 nodelist.extend(flatten_nodes(self.defaults))
575 nodelist.append(self.code)
576 return tuple(nodelist)
577
578 def __repr__(self):
579 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))
580
581class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000582 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000583 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000584 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000585 self.argnames = ['[outmost-iterable]']
586 self.varargs = self.kwargs = None
Jeremy Hylton566d9342004-09-07 15:28:01 +0000587
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000588
589
590 def getChildren(self):
591 return self.code,
592
593 def getChildNodes(self):
594 return self.code,
595
596 def __repr__(self):
597 return "GenExpr(%s)" % (repr(self.code),)
598
599class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000600 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000601 self.assign = assign
602 self.iter = iter
603 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000604 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000605 self.is_outmost = False
606
607
608 def getChildren(self):
609 children = []
610 children.append(self.assign)
611 children.append(self.iter)
612 children.extend(flatten(self.ifs))
613 return tuple(children)
614
615 def getChildNodes(self):
616 nodelist = []
617 nodelist.append(self.assign)
618 nodelist.append(self.iter)
619 nodelist.extend(flatten_nodes(self.ifs))
620 return tuple(nodelist)
621
622 def __repr__(self):
623 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
624
625class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000626 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000627 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000628 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000629
630 def getChildren(self):
631 return self.test,
632
633 def getChildNodes(self):
634 return self.test,
635
636 def __repr__(self):
637 return "GenExprIf(%s)" % (repr(self.test),)
638
639class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000640 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000641 self.expr = expr
642 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000643 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000644
645 def getChildren(self):
646 children = []
647 children.append(self.expr)
648 children.extend(flatten(self.quals))
649 return tuple(children)
650
651 def getChildNodes(self):
652 nodelist = []
653 nodelist.append(self.expr)
654 nodelist.extend(flatten_nodes(self.quals))
655 return tuple(nodelist)
656
657 def __repr__(self):
658 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
659
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000660class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000661 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000662 self.expr = expr
663 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000664 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000665
666 def getChildren(self):
667 return self.expr, self.attrname
668
669 def getChildNodes(self):
670 return self.expr,
671
672 def __repr__(self):
673 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
674
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000675class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000676 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000677 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000678 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000679
680 def getChildren(self):
681 return self.names,
682
683 def getChildNodes(self):
684 return ()
685
686 def __repr__(self):
687 return "Global(%s)" % (repr(self.names),)
688
689class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000690 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000691 self.tests = tests
692 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000693 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000694
695 def getChildren(self):
696 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000697 children.extend(flatten(self.tests))
698 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000699 return tuple(children)
700
701 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000702 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000703 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000704 if self.else_ is not None:
705 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000706 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000707
708 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000709 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
710
711class 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
Jeremy Hylton566d9342004-09-07 15:28:01 +0000766
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000767
768
769 def getChildren(self):
770 children = []
771 children.append(self.argnames)
772 children.extend(flatten(self.defaults))
773 children.append(self.flags)
774 children.append(self.code)
775 return tuple(children)
776
777 def getChildNodes(self):
778 nodelist = []
779 nodelist.extend(flatten_nodes(self.defaults))
780 nodelist.append(self.code)
781 return tuple(nodelist)
782
783 def __repr__(self):
784 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
785
786class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000787 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000788 self.left = left
789 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000790 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000791
792 def getChildren(self):
793 return self.left, self.right
794
795 def getChildNodes(self):
796 return self.left, self.right
797
798 def __repr__(self):
799 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
800
801class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000802 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000803 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000804 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000805
806 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000807 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000808
809 def getChildNodes(self):
810 nodelist = []
811 nodelist.extend(flatten_nodes(self.nodes))
812 return tuple(nodelist)
813
814 def __repr__(self):
815 return "List(%s)" % (repr(self.nodes),)
816
817class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000818 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000819 self.expr = expr
820 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000821 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000822
823 def getChildren(self):
824 children = []
825 children.append(self.expr)
826 children.extend(flatten(self.quals))
827 return tuple(children)
828
829 def getChildNodes(self):
830 nodelist = []
831 nodelist.append(self.expr)
832 nodelist.extend(flatten_nodes(self.quals))
833 return tuple(nodelist)
834
835 def __repr__(self):
836 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
837
838class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000839 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000840 self.assign = assign
841 self.list = list
842 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000843 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000844
845 def getChildren(self):
846 children = []
847 children.append(self.assign)
848 children.append(self.list)
849 children.extend(flatten(self.ifs))
850 return tuple(children)
851
852 def getChildNodes(self):
853 nodelist = []
854 nodelist.append(self.assign)
855 nodelist.append(self.list)
856 nodelist.extend(flatten_nodes(self.ifs))
857 return tuple(nodelist)
858
859 def __repr__(self):
860 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
861
862class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000863 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000864 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000865 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000866
867 def getChildren(self):
868 return self.test,
869
870 def getChildNodes(self):
871 return self.test,
872
873 def __repr__(self):
874 return "ListCompIf(%s)" % (repr(self.test),)
875
876class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000877 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000878 self.left = left
879 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000880 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000881
882 def getChildren(self):
883 return self.left, self.right
884
885 def getChildNodes(self):
886 return self.left, self.right
887
888 def __repr__(self):
889 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000890
891class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000892 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000893 self.doc = doc
894 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000895 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000896
897 def getChildren(self):
898 return self.doc, self.node
899
900 def getChildNodes(self):
901 return self.node,
902
903 def __repr__(self):
904 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
905
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000906class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000907 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000908 self.left = left
909 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000910 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000911
912 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000913 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000914
915 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000916 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000917
918 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000919 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000920
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000921class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000922 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000923 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000924 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000925
926 def getChildren(self):
927 return self.name,
928
929 def getChildNodes(self):
930 return ()
931
932 def __repr__(self):
933 return "Name(%s)" % (repr(self.name),)
934
935class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000936 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000937 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000938 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000939
940 def getChildren(self):
941 return self.expr,
942
943 def getChildNodes(self):
944 return self.expr,
945
946 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000947 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000948
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000949class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000950 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000951 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000952 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000953
954 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000955 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000956
957 def getChildNodes(self):
958 nodelist = []
959 nodelist.extend(flatten_nodes(self.nodes))
960 return tuple(nodelist)
961
962 def __repr__(self):
963 return "Or(%s)" % (repr(self.nodes),)
964
965class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000966 def __init__(self, lineno=None):
967 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000968
969 def getChildren(self):
970 return ()
971
972 def getChildNodes(self):
973 return ()
974
975 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000976 return "Pass()"
977
978class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000979 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000980 self.left = left
981 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000982 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000983
984 def getChildren(self):
985 return self.left, self.right
986
987 def getChildNodes(self):
988 return self.left, self.right
989
990 def __repr__(self):
991 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000992
993class Print(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000994 def __init__(self, nodes, dest, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000995 self.nodes = nodes
996 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000997 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000998
999 def getChildren(self):
1000 children = []
1001 children.extend(flatten(self.nodes))
1002 children.append(self.dest)
1003 return tuple(children)
1004
1005 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001006 nodelist = []
1007 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001008 if self.dest is not None:
1009 nodelist.append(self.dest)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001010 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001011
1012 def __repr__(self):
1013 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1014
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001015class Printnl(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001016 def __init__(self, nodes, dest, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001017 self.nodes = nodes
1018 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +00001019 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001020
1021 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001022 children = []
1023 children.extend(flatten(self.nodes))
1024 children.append(self.dest)
1025 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001026
1027 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001028 nodelist = []
1029 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001030 if self.dest is not None:
1031 nodelist.append(self.dest)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001032 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001033
1034 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001035 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1036
1037class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001038 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001039 self.expr1 = expr1
1040 self.expr2 = expr2
1041 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001042 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001043
1044 def getChildren(self):
1045 children = []
1046 children.append(self.expr1)
1047 children.append(self.expr2)
1048 children.append(self.expr3)
1049 return tuple(children)
1050
1051 def getChildNodes(self):
1052 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001053 if self.expr1 is not None:
1054 nodelist.append(self.expr1)
1055 if self.expr2 is not None:
1056 nodelist.append(self.expr2)
1057 if self.expr3 is not None:
1058 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001059 return tuple(nodelist)
1060
1061 def __repr__(self):
1062 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1063
1064class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001065 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001066 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001067 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001068
1069 def getChildren(self):
1070 return self.value,
1071
1072 def getChildNodes(self):
1073 return self.value,
1074
1075 def __repr__(self):
1076 return "Return(%s)" % (repr(self.value),)
1077
1078class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001079 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001080 self.left = left
1081 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001082 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001083
1084 def getChildren(self):
1085 return self.left, self.right
1086
1087 def getChildNodes(self):
1088 return self.left, self.right
1089
1090 def __repr__(self):
1091 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1092
1093class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001094 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001095 self.expr = expr
1096 self.flags = flags
1097 self.lower = lower
1098 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001099 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001100
1101 def getChildren(self):
1102 children = []
1103 children.append(self.expr)
1104 children.append(self.flags)
1105 children.append(self.lower)
1106 children.append(self.upper)
1107 return tuple(children)
1108
1109 def getChildNodes(self):
1110 nodelist = []
1111 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001112 if self.lower is not None:
1113 nodelist.append(self.lower)
1114 if self.upper is not None:
1115 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001116 return tuple(nodelist)
1117
1118 def __repr__(self):
1119 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1120
1121class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001122 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001123 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001124 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001125
1126 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001127 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001128
1129 def getChildNodes(self):
1130 nodelist = []
1131 nodelist.extend(flatten_nodes(self.nodes))
1132 return tuple(nodelist)
1133
1134 def __repr__(self):
1135 return "Sliceobj(%s)" % (repr(self.nodes),)
1136
1137class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001138 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001139 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001140 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001141
1142 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001143 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001144
1145 def getChildNodes(self):
1146 nodelist = []
1147 nodelist.extend(flatten_nodes(self.nodes))
1148 return tuple(nodelist)
1149
1150 def __repr__(self):
1151 return "Stmt(%s)" % (repr(self.nodes),)
1152
1153class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001154 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001155 self.left = left
1156 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001157 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001158
1159 def getChildren(self):
1160 return self.left, self.right
1161
1162 def getChildNodes(self):
1163 return self.left, self.right
1164
1165 def __repr__(self):
1166 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001167
1168class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001169 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001170 self.expr = expr
1171 self.flags = flags
1172 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001173 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001174
1175 def getChildren(self):
1176 children = []
1177 children.append(self.expr)
1178 children.append(self.flags)
1179 children.extend(flatten(self.subs))
1180 return tuple(children)
1181
1182 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001183 nodelist = []
1184 nodelist.append(self.expr)
1185 nodelist.extend(flatten_nodes(self.subs))
1186 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001187
1188 def __repr__(self):
1189 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1190
1191class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001192 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001193 self.body = body
1194 self.handlers = handlers
1195 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001196 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001197
1198 def getChildren(self):
1199 children = []
1200 children.append(self.body)
1201 children.extend(flatten(self.handlers))
1202 children.append(self.else_)
1203 return tuple(children)
1204
1205 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001206 nodelist = []
1207 nodelist.append(self.body)
1208 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001209 if self.else_ is not None:
1210 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001211 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001212
1213 def __repr__(self):
1214 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1215
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001216class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001217 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001218 self.body = body
1219 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001220 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001221
1222 def getChildren(self):
1223 return self.body, self.final
1224
1225 def getChildNodes(self):
1226 return self.body, self.final
1227
1228 def __repr__(self):
1229 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1230
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001231class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001232 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001233 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001234 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001235
1236 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001237 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001238
1239 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001240 nodelist = []
1241 nodelist.extend(flatten_nodes(self.nodes))
1242 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001243
1244 def __repr__(self):
1245 return "Tuple(%s)" % (repr(self.nodes),)
1246
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001247class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001248 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001249 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001250 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001251
1252 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001253 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001254
1255 def getChildNodes(self):
1256 return self.expr,
1257
1258 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001259 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001260
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001261class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001262 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001263 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001264 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001265
1266 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001267 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001268
1269 def getChildNodes(self):
1270 return self.expr,
1271
1272 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001273 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001274
1275class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001276 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001277 self.test = test
1278 self.body = body
1279 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001280 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001281
1282 def getChildren(self):
1283 children = []
1284 children.append(self.test)
1285 children.append(self.body)
1286 children.append(self.else_)
1287 return tuple(children)
1288
1289 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001290 nodelist = []
1291 nodelist.append(self.test)
1292 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001293 if self.else_ is not None:
1294 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001295 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001296
1297 def __repr__(self):
1298 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1299
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001300class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001301 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001302 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001303 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001304
1305 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001306 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001307
1308 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001309 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001310
1311 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001312 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001313
Jeremy Hylton566d9342004-09-07 15:28:01 +00001314for name, obj in globals().items():
1315 if isinstance(obj, type) and issubclass(obj, Node):
1316 nodes[name.lower()] = obj