blob: 0be36a4935578b08017b297824465a95d3e9f3b7 [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
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000430class FloorDiv(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000431 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000432 self.left = left
433 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000434 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000435
436 def getChildren(self):
437 return self.left, self.right
438
439 def getChildNodes(self):
440 return self.left, self.right
441
442 def __repr__(self):
443 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000444
445class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000446 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000447 self.assign = assign
448 self.list = list
449 self.body = body
450 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000451 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000452
453 def getChildren(self):
454 children = []
455 children.append(self.assign)
456 children.append(self.list)
457 children.append(self.body)
458 children.append(self.else_)
459 return tuple(children)
460
461 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000462 nodelist = []
463 nodelist.append(self.assign)
464 nodelist.append(self.list)
465 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000466 if self.else_ is not None:
467 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000468 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000469
470 def __repr__(self):
471 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
472
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000473class From(Node):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000474 def __init__(self, modname, names, level, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000475 self.modname = modname
476 self.names = names
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000477 self.level = level
Jeremy Hylton566d9342004-09-07 15:28:01 +0000478 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000479
480 def getChildren(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000481 return self.modname, self.names, self.level
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000482
483 def getChildNodes(self):
484 return ()
485
486 def __repr__(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000487 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000488
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000489class Function(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000490 def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000491 self.decorators = decorators
492 self.name = name
493 self.argnames = argnames
494 self.defaults = defaults
495 self.flags = flags
496 self.doc = doc
497 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000498 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000499 self.varargs = self.kwargs = None
500 if flags & CO_VARARGS:
501 self.varargs = 1
502 if flags & CO_VARKEYWORDS:
503 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000504
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000505
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000506 def getChildren(self):
507 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000508 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000509 children.append(self.name)
510 children.append(self.argnames)
511 children.extend(flatten(self.defaults))
512 children.append(self.flags)
513 children.append(self.doc)
514 children.append(self.code)
515 return tuple(children)
516
517 def getChildNodes(self):
518 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000519 if self.decorators is not None:
520 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000521 nodelist.extend(flatten_nodes(self.defaults))
522 nodelist.append(self.code)
523 return tuple(nodelist)
524
525 def __repr__(self):
526 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))
527
528class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000529 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000530 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000531 self.lineno = lineno
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000532 self.argnames = ['.0']
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000533 self.varargs = self.kwargs = None
Tim Peters39e11fb2006-03-04 02:43:44 +0000534
Guido van Rossum86e58e22006-08-28 15:27:34 +0000535
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000536 def getChildren(self):
537 return self.code,
538
539 def getChildNodes(self):
540 return self.code,
541
542 def __repr__(self):
543 return "GenExpr(%s)" % (repr(self.code),)
544
545class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000546 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000547 self.assign = assign
548 self.iter = iter
549 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000550 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000551 self.is_outmost = False
552
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000553 def getChildren(self):
554 children = []
555 children.append(self.assign)
556 children.append(self.iter)
557 children.extend(flatten(self.ifs))
558 return tuple(children)
559
560 def getChildNodes(self):
561 nodelist = []
562 nodelist.append(self.assign)
563 nodelist.append(self.iter)
564 nodelist.extend(flatten_nodes(self.ifs))
565 return tuple(nodelist)
566
567 def __repr__(self):
568 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
569
570class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000571 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000572 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000573 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000574
575 def getChildren(self):
576 return self.test,
577
578 def getChildNodes(self):
579 return self.test,
580
581 def __repr__(self):
582 return "GenExprIf(%s)" % (repr(self.test),)
583
584class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000585 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000586 self.expr = expr
587 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000588 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000589
590 def getChildren(self):
591 children = []
592 children.append(self.expr)
593 children.extend(flatten(self.quals))
594 return tuple(children)
595
596 def getChildNodes(self):
597 nodelist = []
598 nodelist.append(self.expr)
599 nodelist.extend(flatten_nodes(self.quals))
600 return tuple(nodelist)
601
602 def __repr__(self):
603 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
604
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000605class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000606 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000607 self.expr = expr
608 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000609 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000610
611 def getChildren(self):
612 return self.expr, self.attrname
613
614 def getChildNodes(self):
615 return self.expr,
616
617 def __repr__(self):
618 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
619
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000620class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000621 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000622 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000623 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000624
625 def getChildren(self):
626 return self.names,
627
628 def getChildNodes(self):
629 return ()
630
631 def __repr__(self):
632 return "Global(%s)" % (repr(self.names),)
633
634class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000635 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000636 self.tests = tests
637 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000638 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000639
640 def getChildren(self):
641 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000642 children.extend(flatten(self.tests))
643 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000644 return tuple(children)
645
646 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000647 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000648 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000649 if self.else_ is not None:
650 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000651 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000652
653 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000654 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
655
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000656class IfExp(Node):
657 def __init__(self, test, then, else_, lineno=None):
658 self.test = test
659 self.then = then
660 self.else_ = else_
661 self.lineno = lineno
662
663 def getChildren(self):
664 return self.test, self.then, self.else_
665
666 def getChildNodes(self):
667 return self.test, self.then, self.else_
668
669 def __repr__(self):
670 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
671
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000672class Import(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000673 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000674 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000675 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000676
677 def getChildren(self):
678 return self.names,
679
680 def getChildNodes(self):
681 return ()
682
683 def __repr__(self):
684 return "Import(%s)" % (repr(self.names),)
685
686class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000687 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000688 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000689 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000690
691 def getChildren(self):
692 return self.expr,
693
694 def getChildNodes(self):
695 return self.expr,
696
697 def __repr__(self):
698 return "Invert(%s)" % (repr(self.expr),)
699
700class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000701 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000702 self.name = name
703 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000704 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000705
706 def getChildren(self):
707 return self.name, self.expr
708
709 def getChildNodes(self):
710 return self.expr,
711
712 def __repr__(self):
713 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
714
715class Lambda(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000716 def __init__(self, argnames, defaults, flags, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000717 self.argnames = argnames
718 self.defaults = defaults
719 self.flags = flags
720 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000721 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000722 self.varargs = self.kwargs = None
723 if flags & CO_VARARGS:
724 self.varargs = 1
725 if flags & CO_VARKEYWORDS:
726 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000727
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000728
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000729 def getChildren(self):
730 children = []
731 children.append(self.argnames)
732 children.extend(flatten(self.defaults))
733 children.append(self.flags)
734 children.append(self.code)
735 return tuple(children)
736
737 def getChildNodes(self):
738 nodelist = []
739 nodelist.extend(flatten_nodes(self.defaults))
740 nodelist.append(self.code)
741 return tuple(nodelist)
742
743 def __repr__(self):
744 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
745
746class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000747 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000748 self.left = left
749 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000750 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000751
752 def getChildren(self):
753 return self.left, self.right
754
755 def getChildNodes(self):
756 return self.left, self.right
757
758 def __repr__(self):
759 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
760
761class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000762 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000763 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000764 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000765
766 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000767 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000768
769 def getChildNodes(self):
770 nodelist = []
771 nodelist.extend(flatten_nodes(self.nodes))
772 return tuple(nodelist)
773
774 def __repr__(self):
775 return "List(%s)" % (repr(self.nodes),)
776
777class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000778 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000779 self.expr = expr
780 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000781 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000782
783 def getChildren(self):
784 children = []
785 children.append(self.expr)
786 children.extend(flatten(self.quals))
787 return tuple(children)
788
789 def getChildNodes(self):
790 nodelist = []
791 nodelist.append(self.expr)
792 nodelist.extend(flatten_nodes(self.quals))
793 return tuple(nodelist)
794
795 def __repr__(self):
796 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
797
798class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000799 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000800 self.assign = assign
801 self.list = list
802 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000803 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000804
805 def getChildren(self):
806 children = []
807 children.append(self.assign)
808 children.append(self.list)
809 children.extend(flatten(self.ifs))
810 return tuple(children)
811
812 def getChildNodes(self):
813 nodelist = []
814 nodelist.append(self.assign)
815 nodelist.append(self.list)
816 nodelist.extend(flatten_nodes(self.ifs))
817 return tuple(nodelist)
818
819 def __repr__(self):
820 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
821
822class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000823 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000824 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000825 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000826
827 def getChildren(self):
828 return self.test,
829
830 def getChildNodes(self):
831 return self.test,
832
833 def __repr__(self):
834 return "ListCompIf(%s)" % (repr(self.test),)
835
836class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000837 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000838 self.left = left
839 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000840 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000841
842 def getChildren(self):
843 return self.left, self.right
844
845 def getChildNodes(self):
846 return self.left, self.right
847
848 def __repr__(self):
849 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000850
851class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000852 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000853 self.doc = doc
854 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000855 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000856
857 def getChildren(self):
858 return self.doc, self.node
859
860 def getChildNodes(self):
861 return self.node,
862
863 def __repr__(self):
864 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
865
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000866class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000867 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000868 self.left = left
869 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000870 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000871
872 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000873 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000874
875 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000876 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000877
878 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000879 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000880
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000881class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000882 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000883 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000884 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000885
886 def getChildren(self):
887 return self.name,
888
889 def getChildNodes(self):
890 return ()
891
892 def __repr__(self):
893 return "Name(%s)" % (repr(self.name),)
894
895class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000896 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000897 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000898 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000899
900 def getChildren(self):
901 return self.expr,
902
903 def getChildNodes(self):
904 return self.expr,
905
906 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000907 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000908
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000909class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000910 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000911 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000912 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000913
914 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000915 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000916
917 def getChildNodes(self):
918 nodelist = []
919 nodelist.extend(flatten_nodes(self.nodes))
920 return tuple(nodelist)
921
922 def __repr__(self):
923 return "Or(%s)" % (repr(self.nodes),)
924
925class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000926 def __init__(self, lineno=None):
927 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000928
929 def getChildren(self):
930 return ()
931
932 def getChildNodes(self):
933 return ()
934
935 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000936 return "Pass()"
937
938class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000939 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000940 self.left = left
941 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000942 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000943
944 def getChildren(self):
945 return self.left, self.right
946
947 def getChildNodes(self):
948 return self.left, self.right
949
950 def __repr__(self):
951 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000952
953class Print(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000954 def __init__(self, nodes, dest, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000955 self.nodes = nodes
956 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000957 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000958
959 def getChildren(self):
960 children = []
961 children.extend(flatten(self.nodes))
962 children.append(self.dest)
963 return tuple(children)
964
965 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000966 nodelist = []
967 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000968 if self.dest is not None:
969 nodelist.append(self.dest)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000970 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000971
972 def __repr__(self):
973 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
974
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000975class Printnl(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000976 def __init__(self, nodes, dest, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000977 self.nodes = nodes
978 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000979 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000980
981 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000982 children = []
983 children.extend(flatten(self.nodes))
984 children.append(self.dest)
985 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000986
987 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000988 nodelist = []
989 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000990 if self.dest is not None:
991 nodelist.append(self.dest)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000992 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000993
994 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000995 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
996
997class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000998 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000999 self.expr1 = expr1
1000 self.expr2 = expr2
1001 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001002 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001003
1004 def getChildren(self):
1005 children = []
1006 children.append(self.expr1)
1007 children.append(self.expr2)
1008 children.append(self.expr3)
1009 return tuple(children)
1010
1011 def getChildNodes(self):
1012 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001013 if self.expr1 is not None:
1014 nodelist.append(self.expr1)
1015 if self.expr2 is not None:
1016 nodelist.append(self.expr2)
1017 if self.expr3 is not None:
1018 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001019 return tuple(nodelist)
1020
1021 def __repr__(self):
1022 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1023
1024class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001025 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001026 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001027 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001028
1029 def getChildren(self):
1030 return self.value,
1031
1032 def getChildNodes(self):
1033 return self.value,
1034
1035 def __repr__(self):
1036 return "Return(%s)" % (repr(self.value),)
1037
1038class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001039 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001040 self.left = left
1041 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001042 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001043
1044 def getChildren(self):
1045 return self.left, self.right
1046
1047 def getChildNodes(self):
1048 return self.left, self.right
1049
1050 def __repr__(self):
1051 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1052
Guido van Rossum86e58e22006-08-28 15:27:34 +00001053class Set(Node):
1054 def __init__(self, items, lineno=None):
1055 self.items = items
1056 self.lineno = lineno
1057
1058 def getChildren(self):
1059 return tuple(flatten(self.items))
1060
1061 def getChildNodes(self):
1062 nodelist = []
1063 nodelist.extend(flatten_nodes(self.items))
1064 return tuple(nodelist)
1065
1066 def __repr__(self):
1067 return "Set(%s)" % (repr(self.items),)
1068
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001069class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001070 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001071 self.expr = expr
1072 self.flags = flags
1073 self.lower = lower
1074 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001075 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001076
1077 def getChildren(self):
1078 children = []
1079 children.append(self.expr)
1080 children.append(self.flags)
1081 children.append(self.lower)
1082 children.append(self.upper)
1083 return tuple(children)
1084
1085 def getChildNodes(self):
1086 nodelist = []
1087 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001088 if self.lower is not None:
1089 nodelist.append(self.lower)
1090 if self.upper is not None:
1091 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001092 return tuple(nodelist)
1093
1094 def __repr__(self):
1095 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1096
1097class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001098 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001099 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001100 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001101
1102 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001103 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001104
1105 def getChildNodes(self):
1106 nodelist = []
1107 nodelist.extend(flatten_nodes(self.nodes))
1108 return tuple(nodelist)
1109
1110 def __repr__(self):
1111 return "Sliceobj(%s)" % (repr(self.nodes),)
1112
1113class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001114 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001115 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001116 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001117
1118 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001119 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001120
1121 def getChildNodes(self):
1122 nodelist = []
1123 nodelist.extend(flatten_nodes(self.nodes))
1124 return tuple(nodelist)
1125
1126 def __repr__(self):
1127 return "Stmt(%s)" % (repr(self.nodes),)
1128
1129class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001130 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001131 self.left = left
1132 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001133 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001134
1135 def getChildren(self):
1136 return self.left, self.right
1137
1138 def getChildNodes(self):
1139 return self.left, self.right
1140
1141 def __repr__(self):
1142 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001143
1144class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001145 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001146 self.expr = expr
1147 self.flags = flags
1148 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001149 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001150
1151 def getChildren(self):
1152 children = []
1153 children.append(self.expr)
1154 children.append(self.flags)
1155 children.extend(flatten(self.subs))
1156 return tuple(children)
1157
1158 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001159 nodelist = []
1160 nodelist.append(self.expr)
1161 nodelist.extend(flatten_nodes(self.subs))
1162 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001163
1164 def __repr__(self):
1165 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1166
1167class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001168 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001169 self.body = body
1170 self.handlers = handlers
1171 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001172 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001173
1174 def getChildren(self):
1175 children = []
1176 children.append(self.body)
1177 children.extend(flatten(self.handlers))
1178 children.append(self.else_)
1179 return tuple(children)
1180
1181 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001182 nodelist = []
1183 nodelist.append(self.body)
1184 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001185 if self.else_ is not None:
1186 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001187 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001188
1189 def __repr__(self):
1190 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1191
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001192class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001193 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001194 self.body = body
1195 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001196 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001197
1198 def getChildren(self):
1199 return self.body, self.final
1200
1201 def getChildNodes(self):
1202 return self.body, self.final
1203
1204 def __repr__(self):
1205 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1206
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001207class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001208 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001209 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001210 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001211
1212 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001213 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001214
1215 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001216 nodelist = []
1217 nodelist.extend(flatten_nodes(self.nodes))
1218 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001219
1220 def __repr__(self):
1221 return "Tuple(%s)" % (repr(self.nodes),)
1222
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001223class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001224 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001225 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001226 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001227
1228 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001229 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001230
1231 def getChildNodes(self):
1232 return self.expr,
1233
1234 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001235 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001236
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001237class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001238 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001239 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001240 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001241
1242 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001243 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001244
1245 def getChildNodes(self):
1246 return self.expr,
1247
1248 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001249 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001250
1251class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001252 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001253 self.test = test
1254 self.body = body
1255 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001256 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001257
1258 def getChildren(self):
1259 children = []
1260 children.append(self.test)
1261 children.append(self.body)
1262 children.append(self.else_)
1263 return tuple(children)
1264
1265 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001266 nodelist = []
1267 nodelist.append(self.test)
1268 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001269 if self.else_ is not None:
1270 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001271 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001272
1273 def __repr__(self):
1274 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1275
Guido van Rossumc2e20742006-02-27 22:32:47 +00001276class With(Node):
1277 def __init__(self, expr, vars, body, lineno=None):
1278 self.expr = expr
1279 self.vars = vars
1280 self.body = body
1281 self.lineno = lineno
1282
1283 def getChildren(self):
1284 children = []
1285 children.append(self.expr)
1286 children.append(self.vars)
1287 children.append(self.body)
1288 return tuple(children)
1289
1290 def getChildNodes(self):
1291 nodelist = []
1292 nodelist.append(self.expr)
1293 if self.vars is not None:
1294 nodelist.append(self.vars)
1295 nodelist.append(self.body)
1296 return tuple(nodelist)
1297
1298 def __repr__(self):
1299 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1300
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001301class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001302 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001303 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001304 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001305
1306 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001307 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001308
1309 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001310 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001311
1312 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001313 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001314
Jeremy Hylton566d9342004-09-07 15:28:01 +00001315for name, obj in globals().items():
1316 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001317 nodes[name.lower()] = obj