blob: d21905f3c692f543fe8a34ac61a932eadacc7899 [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):
Guido van Rossum4f72a782006-10-27 23:31:49 +0000490 def __init__(self, decorators, name, argnames, defaults, kwonlyargs, 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
Guido van Rossum4f72a782006-10-27 23:31:49 +0000495 self.kwonlyargs = kwonlyargs
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000496 self.flags = flags
497 self.doc = doc
498 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000499 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000500 self.varargs = self.kwargs = None
501 if flags & CO_VARARGS:
502 self.varargs = 1
503 if flags & CO_VARKEYWORDS:
504 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000505
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000506
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000507 def getChildren(self):
508 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000509 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000510 children.append(self.name)
511 children.append(self.argnames)
512 children.extend(flatten(self.defaults))
Guido van Rossum4f72a782006-10-27 23:31:49 +0000513 children.append(self.kwonlyargs)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000514 children.append(self.flags)
515 children.append(self.doc)
516 children.append(self.code)
517 return tuple(children)
518
519 def getChildNodes(self):
520 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000521 if self.decorators is not None:
522 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000523 nodelist.extend(flatten_nodes(self.defaults))
524 nodelist.append(self.code)
525 return tuple(nodelist)
526
527 def __repr__(self):
Guido van Rossum4f72a782006-10-27 23:31:49 +0000528 return "Function(%s, %s, %s, %s, %s, %s, %s, %s)" % (repr(self.decorators), repr(self.name), repr(self.argnames), repr(self.defaults), repr(self.kwonlyargs), repr(self.flags), repr(self.doc), repr(self.code))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000529
530class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000531 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000532 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000533 self.lineno = lineno
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000534 self.argnames = ['.0']
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000535 self.varargs = self.kwargs = None
Guido van Rossum4f72a782006-10-27 23:31:49 +0000536 self.kwonlyargs = ()
Tim Peters39e11fb2006-03-04 02:43:44 +0000537
Guido van Rossum86e58e22006-08-28 15:27:34 +0000538
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000539 def getChildren(self):
540 return self.code,
541
542 def getChildNodes(self):
543 return self.code,
544
545 def __repr__(self):
546 return "GenExpr(%s)" % (repr(self.code),)
547
548class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000549 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000550 self.assign = assign
551 self.iter = iter
552 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000553 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000554 self.is_outmost = False
555
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000556 def getChildren(self):
557 children = []
558 children.append(self.assign)
559 children.append(self.iter)
560 children.extend(flatten(self.ifs))
561 return tuple(children)
562
563 def getChildNodes(self):
564 nodelist = []
565 nodelist.append(self.assign)
566 nodelist.append(self.iter)
567 nodelist.extend(flatten_nodes(self.ifs))
568 return tuple(nodelist)
569
570 def __repr__(self):
571 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
572
573class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000574 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000575 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000576 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000577
578 def getChildren(self):
579 return self.test,
580
581 def getChildNodes(self):
582 return self.test,
583
584 def __repr__(self):
585 return "GenExprIf(%s)" % (repr(self.test),)
586
587class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000588 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000589 self.expr = expr
590 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000591 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000592
593 def getChildren(self):
594 children = []
595 children.append(self.expr)
596 children.extend(flatten(self.quals))
597 return tuple(children)
598
599 def getChildNodes(self):
600 nodelist = []
601 nodelist.append(self.expr)
602 nodelist.extend(flatten_nodes(self.quals))
603 return tuple(nodelist)
604
605 def __repr__(self):
606 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
607
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000608class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000609 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000610 self.expr = expr
611 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000612 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000613
614 def getChildren(self):
615 return self.expr, self.attrname
616
617 def getChildNodes(self):
618 return self.expr,
619
620 def __repr__(self):
621 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
622
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000623class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000624 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000625 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000626 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000627
628 def getChildren(self):
629 return self.names,
630
631 def getChildNodes(self):
632 return ()
633
634 def __repr__(self):
635 return "Global(%s)" % (repr(self.names),)
636
637class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000638 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000639 self.tests = tests
640 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000641 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000642
643 def getChildren(self):
644 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000645 children.extend(flatten(self.tests))
646 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000647 return tuple(children)
648
649 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000650 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000651 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000652 if self.else_ is not None:
653 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000654 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000655
656 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000657 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
658
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000659class IfExp(Node):
660 def __init__(self, test, then, else_, lineno=None):
661 self.test = test
662 self.then = then
663 self.else_ = else_
664 self.lineno = lineno
665
666 def getChildren(self):
667 return self.test, self.then, self.else_
668
669 def getChildNodes(self):
670 return self.test, self.then, self.else_
671
672 def __repr__(self):
673 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
674
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000675class Import(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 "Import(%s)" % (repr(self.names),)
688
689class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000690 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000691 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000692 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000693
694 def getChildren(self):
695 return self.expr,
696
697 def getChildNodes(self):
698 return self.expr,
699
700 def __repr__(self):
701 return "Invert(%s)" % (repr(self.expr),)
702
703class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000704 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000705 self.name = name
706 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000707 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000708
709 def getChildren(self):
710 return self.name, self.expr
711
712 def getChildNodes(self):
713 return self.expr,
714
715 def __repr__(self):
716 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
717
718class Lambda(Node):
Guido van Rossum4f72a782006-10-27 23:31:49 +0000719 def __init__(self, argnames, defaults, kwonlyargs, flags, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000720 self.argnames = argnames
721 self.defaults = defaults
Guido van Rossum4f72a782006-10-27 23:31:49 +0000722 self.kwonlyargs = kwonlyargs
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000723 self.flags = flags
724 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000725 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000726 self.varargs = self.kwargs = None
727 if flags & CO_VARARGS:
728 self.varargs = 1
729 if flags & CO_VARKEYWORDS:
730 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000731
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000732
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000733 def getChildren(self):
734 children = []
735 children.append(self.argnames)
736 children.extend(flatten(self.defaults))
Guido van Rossum4f72a782006-10-27 23:31:49 +0000737 children.append(self.kwonlyargs)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000738 children.append(self.flags)
739 children.append(self.code)
740 return tuple(children)
741
742 def getChildNodes(self):
743 nodelist = []
744 nodelist.extend(flatten_nodes(self.defaults))
745 nodelist.append(self.code)
746 return tuple(nodelist)
747
748 def __repr__(self):
Guido van Rossum4f72a782006-10-27 23:31:49 +0000749 return "Lambda(%s, %s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.kwonlyargs), repr(self.flags), repr(self.code))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000750
751class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000752 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000753 self.left = left
754 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000755 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000756
757 def getChildren(self):
758 return self.left, self.right
759
760 def getChildNodes(self):
761 return self.left, self.right
762
763 def __repr__(self):
764 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
765
766class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000767 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000768 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000769 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000770
771 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000772 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000773
774 def getChildNodes(self):
775 nodelist = []
776 nodelist.extend(flatten_nodes(self.nodes))
777 return tuple(nodelist)
778
779 def __repr__(self):
780 return "List(%s)" % (repr(self.nodes),)
781
782class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000783 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000784 self.expr = expr
785 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000786 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000787
788 def getChildren(self):
789 children = []
790 children.append(self.expr)
791 children.extend(flatten(self.quals))
792 return tuple(children)
793
794 def getChildNodes(self):
795 nodelist = []
796 nodelist.append(self.expr)
797 nodelist.extend(flatten_nodes(self.quals))
798 return tuple(nodelist)
799
800 def __repr__(self):
801 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
802
803class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000804 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000805 self.assign = assign
806 self.list = list
807 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000808 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000809
810 def getChildren(self):
811 children = []
812 children.append(self.assign)
813 children.append(self.list)
814 children.extend(flatten(self.ifs))
815 return tuple(children)
816
817 def getChildNodes(self):
818 nodelist = []
819 nodelist.append(self.assign)
820 nodelist.append(self.list)
821 nodelist.extend(flatten_nodes(self.ifs))
822 return tuple(nodelist)
823
824 def __repr__(self):
825 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
826
827class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000828 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000829 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000830 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000831
832 def getChildren(self):
833 return self.test,
834
835 def getChildNodes(self):
836 return self.test,
837
838 def __repr__(self):
839 return "ListCompIf(%s)" % (repr(self.test),)
840
841class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000842 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000843 self.left = left
844 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000845 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000846
847 def getChildren(self):
848 return self.left, self.right
849
850 def getChildNodes(self):
851 return self.left, self.right
852
853 def __repr__(self):
854 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000855
856class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000857 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000858 self.doc = doc
859 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000860 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000861
862 def getChildren(self):
863 return self.doc, self.node
864
865 def getChildNodes(self):
866 return self.node,
867
868 def __repr__(self):
869 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
870
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000871class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000872 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000873 self.left = left
874 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000875 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000876
877 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000878 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000879
880 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000881 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000882
883 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000884 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000885
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000886class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000887 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000888 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000889 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000890
891 def getChildren(self):
892 return self.name,
893
894 def getChildNodes(self):
895 return ()
896
897 def __repr__(self):
898 return "Name(%s)" % (repr(self.name),)
899
900class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000901 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000902 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000903 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000904
905 def getChildren(self):
906 return self.expr,
907
908 def getChildNodes(self):
909 return self.expr,
910
911 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000912 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000913
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000914class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000915 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000916 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000917 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000918
919 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000920 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000921
922 def getChildNodes(self):
923 nodelist = []
924 nodelist.extend(flatten_nodes(self.nodes))
925 return tuple(nodelist)
926
927 def __repr__(self):
928 return "Or(%s)" % (repr(self.nodes),)
929
930class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000931 def __init__(self, lineno=None):
932 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000933
934 def getChildren(self):
935 return ()
936
937 def getChildNodes(self):
938 return ()
939
940 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000941 return "Pass()"
942
943class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000944 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000945 self.left = left
946 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000947 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000948
949 def getChildren(self):
950 return self.left, self.right
951
952 def getChildNodes(self):
953 return self.left, self.right
954
955 def __repr__(self):
956 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000957
958class Print(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000959 def __init__(self, nodes, dest, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000960 self.nodes = nodes
961 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000962 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000963
964 def getChildren(self):
965 children = []
966 children.extend(flatten(self.nodes))
967 children.append(self.dest)
968 return tuple(children)
969
970 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000971 nodelist = []
972 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000973 if self.dest is not None:
974 nodelist.append(self.dest)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000975 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000976
977 def __repr__(self):
978 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
979
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000980class Printnl(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000981 def __init__(self, nodes, dest, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000982 self.nodes = nodes
983 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000984 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000985
986 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000987 children = []
988 children.extend(flatten(self.nodes))
989 children.append(self.dest)
990 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000991
992 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000993 nodelist = []
994 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000995 if self.dest is not None:
996 nodelist.append(self.dest)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000997 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000998
999 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001000 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1001
1002class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001003 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001004 self.expr1 = expr1
1005 self.expr2 = expr2
1006 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001007 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001008
1009 def getChildren(self):
1010 children = []
1011 children.append(self.expr1)
1012 children.append(self.expr2)
1013 children.append(self.expr3)
1014 return tuple(children)
1015
1016 def getChildNodes(self):
1017 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001018 if self.expr1 is not None:
1019 nodelist.append(self.expr1)
1020 if self.expr2 is not None:
1021 nodelist.append(self.expr2)
1022 if self.expr3 is not None:
1023 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001024 return tuple(nodelist)
1025
1026 def __repr__(self):
1027 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1028
1029class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001030 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001031 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001032 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001033
1034 def getChildren(self):
1035 return self.value,
1036
1037 def getChildNodes(self):
1038 return self.value,
1039
1040 def __repr__(self):
1041 return "Return(%s)" % (repr(self.value),)
1042
1043class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001044 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001045 self.left = left
1046 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001047 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001048
1049 def getChildren(self):
1050 return self.left, self.right
1051
1052 def getChildNodes(self):
1053 return self.left, self.right
1054
1055 def __repr__(self):
1056 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1057
Guido van Rossum86e58e22006-08-28 15:27:34 +00001058class Set(Node):
1059 def __init__(self, items, lineno=None):
1060 self.items = items
1061 self.lineno = lineno
1062
1063 def getChildren(self):
1064 return tuple(flatten(self.items))
1065
1066 def getChildNodes(self):
1067 nodelist = []
1068 nodelist.extend(flatten_nodes(self.items))
1069 return tuple(nodelist)
1070
1071 def __repr__(self):
1072 return "Set(%s)" % (repr(self.items),)
1073
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001074class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001075 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001076 self.expr = expr
1077 self.flags = flags
1078 self.lower = lower
1079 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001080 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001081
1082 def getChildren(self):
1083 children = []
1084 children.append(self.expr)
1085 children.append(self.flags)
1086 children.append(self.lower)
1087 children.append(self.upper)
1088 return tuple(children)
1089
1090 def getChildNodes(self):
1091 nodelist = []
1092 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001093 if self.lower is not None:
1094 nodelist.append(self.lower)
1095 if self.upper is not None:
1096 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001097 return tuple(nodelist)
1098
1099 def __repr__(self):
1100 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1101
1102class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001103 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001104 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001105 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001106
1107 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001108 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001109
1110 def getChildNodes(self):
1111 nodelist = []
1112 nodelist.extend(flatten_nodes(self.nodes))
1113 return tuple(nodelist)
1114
1115 def __repr__(self):
1116 return "Sliceobj(%s)" % (repr(self.nodes),)
1117
1118class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001119 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001120 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001121 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001122
1123 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001124 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001125
1126 def getChildNodes(self):
1127 nodelist = []
1128 nodelist.extend(flatten_nodes(self.nodes))
1129 return tuple(nodelist)
1130
1131 def __repr__(self):
1132 return "Stmt(%s)" % (repr(self.nodes),)
1133
1134class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001135 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001136 self.left = left
1137 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001138 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001139
1140 def getChildren(self):
1141 return self.left, self.right
1142
1143 def getChildNodes(self):
1144 return self.left, self.right
1145
1146 def __repr__(self):
1147 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001148
1149class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001150 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001151 self.expr = expr
1152 self.flags = flags
1153 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001154 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001155
1156 def getChildren(self):
1157 children = []
1158 children.append(self.expr)
1159 children.append(self.flags)
1160 children.extend(flatten(self.subs))
1161 return tuple(children)
1162
1163 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001164 nodelist = []
1165 nodelist.append(self.expr)
1166 nodelist.extend(flatten_nodes(self.subs))
1167 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001168
1169 def __repr__(self):
1170 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1171
1172class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001173 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001174 self.body = body
1175 self.handlers = handlers
1176 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001177 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001178
1179 def getChildren(self):
1180 children = []
1181 children.append(self.body)
1182 children.extend(flatten(self.handlers))
1183 children.append(self.else_)
1184 return tuple(children)
1185
1186 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001187 nodelist = []
1188 nodelist.append(self.body)
1189 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001190 if self.else_ is not None:
1191 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001192 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001193
1194 def __repr__(self):
1195 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1196
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001197class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001198 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001199 self.body = body
1200 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001201 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001202
1203 def getChildren(self):
1204 return self.body, self.final
1205
1206 def getChildNodes(self):
1207 return self.body, self.final
1208
1209 def __repr__(self):
1210 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1211
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001212class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001213 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001214 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001215 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001216
1217 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001218 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001219
1220 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001221 nodelist = []
1222 nodelist.extend(flatten_nodes(self.nodes))
1223 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001224
1225 def __repr__(self):
1226 return "Tuple(%s)" % (repr(self.nodes),)
1227
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001228class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001229 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001230 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001231 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001232
1233 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001234 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001235
1236 def getChildNodes(self):
1237 return self.expr,
1238
1239 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001240 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001241
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001242class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001243 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001244 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001245 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001246
1247 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001248 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001249
1250 def getChildNodes(self):
1251 return self.expr,
1252
1253 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001254 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001255
1256class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001257 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001258 self.test = test
1259 self.body = body
1260 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001261 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001262
1263 def getChildren(self):
1264 children = []
1265 children.append(self.test)
1266 children.append(self.body)
1267 children.append(self.else_)
1268 return tuple(children)
1269
1270 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001271 nodelist = []
1272 nodelist.append(self.test)
1273 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001274 if self.else_ is not None:
1275 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001276 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001277
1278 def __repr__(self):
1279 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1280
Guido van Rossumc2e20742006-02-27 22:32:47 +00001281class With(Node):
1282 def __init__(self, expr, vars, body, lineno=None):
1283 self.expr = expr
1284 self.vars = vars
1285 self.body = body
1286 self.lineno = lineno
1287
1288 def getChildren(self):
1289 children = []
1290 children.append(self.expr)
1291 children.append(self.vars)
1292 children.append(self.body)
1293 return tuple(children)
1294
1295 def getChildNodes(self):
1296 nodelist = []
1297 nodelist.append(self.expr)
1298 if self.vars is not None:
1299 nodelist.append(self.vars)
1300 nodelist.append(self.body)
1301 return tuple(nodelist)
1302
1303 def __repr__(self):
1304 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1305
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001306class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001307 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001308 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001309 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001310
1311 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001312 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001313
1314 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001315 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001316
1317 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001318 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001319
Jeremy Hylton566d9342004-09-07 15:28:01 +00001320for name, obj in globals().items():
1321 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001322 nodes[name.lower()] = obj