blob: b06531f3f51cb8c50856e5fa076d51a99f6c98d0 [file] [log] [blame]
Jeremy Hylton628d2892000-10-25 18:02:59 +00001"""Python abstract syntax node definitions
2
Jeremy Hylton566d9342004-09-07 15:28:01 +00003This file is automatically generated by Tools/compiler/astgen.py
Jeremy Hylton628d2892000-10-25 18:02:59 +00004"""
Neal Norwitz2b499432006-03-24 07:07:34 +00005from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
Jeremy Hyltonf968e852000-02-04 00:25:23 +00006
Neil Schemenauerf3694702005-06-02 05:55:20 +00007def flatten(seq):
Jeremy Hylton628d2892000-10-25 18:02:59 +00008 l = []
Neil Schemenauerf3694702005-06-02 05:55:20 +00009 for elt in seq:
Jeremy Hylton628d2892000-10-25 18:02:59 +000010 t = type(elt)
Jeremy Hylton566d9342004-09-07 15:28:01 +000011 if t is tuple or t is list:
Jeremy Hylton628d2892000-10-25 18:02:59 +000012 for elt2 in flatten(elt):
13 l.append(elt2)
14 else:
15 l.append(elt)
16 return l
17
Neil Schemenauerf3694702005-06-02 05:55:20 +000018def flatten_nodes(seq):
19 return [n for n in flatten(seq) if isinstance(n, Node)]
Jeremy Hylton5477f522001-08-29 18:08:02 +000020
Jeremy Hyltonf968e852000-02-04 00:25:23 +000021nodes = {}
22
Jeremy Hylton566d9342004-09-07 15:28:01 +000023class Node:
24 """Abstract base class for ast nodes."""
Jeremy Hylton628d2892000-10-25 18:02:59 +000025 def getChildren(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000026 pass # implemented by subclasses
Jeremy Hylton566d9342004-09-07 15:28:01 +000027 def __iter__(self):
28 for n in self.getChildren():
29 yield n
30 def asList(self): # for backwards compatibility
31 return self.getChildren()
Jeremy Hylton7713ac22001-08-14 18:59:01 +000032 def getChildNodes(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000033 pass # implemented by subclasses
Jeremy Hyltonf968e852000-02-04 00:25:23 +000034
35class EmptyNode(Node):
Jeremy Hylton5477f522001-08-29 18:08:02 +000036 pass
Jeremy Hyltonf968e852000-02-04 00:25:23 +000037
Anthony Baxterc2a5a632004-08-02 06:10:11 +000038class Expression(Node):
39 # Expression is an artificial node class to support "eval"
40 nodes["expression"] = "Expression"
41 def __init__(self, node):
42 self.node = node
43
44 def getChildren(self):
45 return self.node,
46
47 def getChildNodes(self):
48 return self.node,
49
50 def __repr__(self):
51 return "Expression(%s)" % (repr(self.node))
52
53class Add(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000054 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000055 self.left = left
56 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +000057 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000058
59 def getChildren(self):
60 return self.left, self.right
61
62 def getChildNodes(self):
63 return self.left, self.right
64
65 def __repr__(self):
66 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
67
68class And(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000069 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000070 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +000071 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000072
73 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +000074 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +000075
76 def getChildNodes(self):
77 nodelist = []
78 nodelist.extend(flatten_nodes(self.nodes))
79 return tuple(nodelist)
80
81 def __repr__(self):
82 return "And(%s)" % (repr(self.nodes),)
83
84class AssAttr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000085 def __init__(self, expr, attrname, flags, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000086 self.expr = expr
Anthony Baxterc2a5a632004-08-02 06:10:11 +000087 self.attrname = attrname
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000088 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +000089 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000090
91 def getChildren(self):
92 return self.expr, self.attrname, self.flags
93
94 def getChildNodes(self):
95 return self.expr,
96
97 def __repr__(self):
98 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
99
100class AssList(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000101 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000102 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000103 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000104
105 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000106 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000107
108 def getChildNodes(self):
109 nodelist = []
110 nodelist.extend(flatten_nodes(self.nodes))
111 return tuple(nodelist)
112
113 def __repr__(self):
114 return "AssList(%s)" % (repr(self.nodes),)
115
116class AssName(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000117 def __init__(self, name, flags, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000118 self.name = name
119 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +0000120 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000121
122 def getChildren(self):
123 return self.name, self.flags
124
125 def getChildNodes(self):
126 return ()
127
128 def __repr__(self):
129 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
130
131class AssTuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000132 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000133 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000134 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000135
136 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000137 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000138
139 def getChildNodes(self):
140 nodelist = []
141 nodelist.extend(flatten_nodes(self.nodes))
142 return tuple(nodelist)
143
144 def __repr__(self):
145 return "AssTuple(%s)" % (repr(self.nodes),)
146
147class Assert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000148 def __init__(self, test, fail, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000149 self.test = test
150 self.fail = fail
Jeremy Hylton566d9342004-09-07 15:28:01 +0000151 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000152
153 def getChildren(self):
154 children = []
155 children.append(self.test)
156 children.append(self.fail)
157 return tuple(children)
158
159 def getChildNodes(self):
160 nodelist = []
161 nodelist.append(self.test)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000162 if self.fail is not None:
163 nodelist.append(self.fail)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000164 return tuple(nodelist)
165
166 def __repr__(self):
167 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
168
169class Assign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000170 def __init__(self, nodes, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000171 self.nodes = nodes
172 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000173 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000174
175 def getChildren(self):
176 children = []
177 children.extend(flatten(self.nodes))
178 children.append(self.expr)
179 return tuple(children)
180
181 def getChildNodes(self):
182 nodelist = []
183 nodelist.extend(flatten_nodes(self.nodes))
184 nodelist.append(self.expr)
185 return tuple(nodelist)
186
187 def __repr__(self):
188 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
189
190class AugAssign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000191 def __init__(self, node, op, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000192 self.node = node
193 self.op = op
194 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000195 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000196
197 def getChildren(self):
198 return self.node, self.op, self.expr
199
200 def getChildNodes(self):
201 return self.node, self.expr
202
203 def __repr__(self):
204 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
205
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000206class Bitand(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000207 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000208 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000209 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000210
211 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000212 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000213
214 def getChildNodes(self):
215 nodelist = []
216 nodelist.extend(flatten_nodes(self.nodes))
217 return tuple(nodelist)
218
219 def __repr__(self):
220 return "Bitand(%s)" % (repr(self.nodes),)
221
222class Bitor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000223 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000224 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000225 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000226
227 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000228 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000229
230 def getChildNodes(self):
231 nodelist = []
232 nodelist.extend(flatten_nodes(self.nodes))
233 return tuple(nodelist)
234
235 def __repr__(self):
236 return "Bitor(%s)" % (repr(self.nodes),)
237
238class Bitxor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000239 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000240 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000241 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000242
243 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000244 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000245
246 def getChildNodes(self):
247 nodelist = []
248 nodelist.extend(flatten_nodes(self.nodes))
249 return tuple(nodelist)
250
251 def __repr__(self):
252 return "Bitxor(%s)" % (repr(self.nodes),)
253
254class Break(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000255 def __init__(self, lineno=None):
256 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000257
258 def getChildren(self):
259 return ()
260
261 def getChildNodes(self):
262 return ()
263
264 def __repr__(self):
265 return "Break()"
266
267class CallFunc(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000268 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000269 self.node = node
270 self.args = args
271 self.star_args = star_args
272 self.dstar_args = dstar_args
Jeremy Hylton566d9342004-09-07 15:28:01 +0000273 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000274
275 def getChildren(self):
276 children = []
277 children.append(self.node)
278 children.extend(flatten(self.args))
279 children.append(self.star_args)
280 children.append(self.dstar_args)
281 return tuple(children)
282
283 def getChildNodes(self):
284 nodelist = []
285 nodelist.append(self.node)
286 nodelist.extend(flatten_nodes(self.args))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000287 if self.star_args is not None:
288 nodelist.append(self.star_args)
289 if self.dstar_args is not None:
290 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000291 return tuple(nodelist)
292
293 def __repr__(self):
294 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
295
296class Class(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000297 def __init__(self, name, bases, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000298 self.name = name
299 self.bases = bases
300 self.doc = doc
301 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000302 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000303
304 def getChildren(self):
305 children = []
306 children.append(self.name)
307 children.extend(flatten(self.bases))
308 children.append(self.doc)
309 children.append(self.code)
310 return tuple(children)
311
312 def getChildNodes(self):
313 nodelist = []
314 nodelist.extend(flatten_nodes(self.bases))
315 nodelist.append(self.code)
316 return tuple(nodelist)
317
318 def __repr__(self):
319 return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
320
321class Compare(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000322 def __init__(self, expr, ops, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000323 self.expr = expr
324 self.ops = ops
Jeremy Hylton566d9342004-09-07 15:28:01 +0000325 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000326
327 def getChildren(self):
328 children = []
329 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000330 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000331 return tuple(children)
332
333 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000334 nodelist = []
335 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000336 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000337 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000338
339 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000340 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000341
342class Const(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000343 def __init__(self, value, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000344 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +0000345 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000346
347 def getChildren(self):
348 return self.value,
349
350 def getChildNodes(self):
351 return ()
352
353 def __repr__(self):
354 return "Const(%s)" % (repr(self.value),)
355
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000356class Continue(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000357 def __init__(self, lineno=None):
358 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000359
360 def getChildren(self):
361 return ()
362
363 def getChildNodes(self):
364 return ()
365
366 def __repr__(self):
367 return "Continue()"
368
369class Decorators(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000370 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000371 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000372 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000373
374 def getChildren(self):
375 return tuple(flatten(self.nodes))
376
377 def getChildNodes(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000378 nodelist = []
379 nodelist.extend(flatten_nodes(self.nodes))
380 return tuple(nodelist)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000381
382 def __repr__(self):
383 return "Decorators(%s)" % (repr(self.nodes),)
384
385class Dict(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000386 def __init__(self, items, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000387 self.items = items
Jeremy Hylton566d9342004-09-07 15:28:01 +0000388 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000389
390 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000391 return tuple(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000392
393 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000394 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000395 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000396 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000397
398 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000399 return "Dict(%s)" % (repr(self.items),)
400
401class Discard(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000402 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000403 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000404 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000405
406 def getChildren(self):
407 return self.expr,
408
409 def getChildNodes(self):
410 return self.expr,
411
412 def __repr__(self):
413 return "Discard(%s)" % (repr(self.expr),)
414
415class Div(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000416 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000417 self.left = left
418 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000419 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000420
421 def getChildren(self):
422 return self.left, self.right
423
424 def getChildNodes(self):
425 return self.left, self.right
426
427 def __repr__(self):
428 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
429
430class Ellipsis(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000431 def __init__(self, lineno=None):
432 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000433
434 def getChildren(self):
435 return ()
436
437 def getChildNodes(self):
438 return ()
439
440 def __repr__(self):
441 return "Ellipsis()"
442
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000443class FloorDiv(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000444 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000445 self.left = left
446 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000447 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000448
449 def getChildren(self):
450 return self.left, self.right
451
452 def getChildNodes(self):
453 return self.left, self.right
454
455 def __repr__(self):
456 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000457
458class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000459 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000460 self.assign = assign
461 self.list = list
462 self.body = body
463 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000464 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000465
466 def getChildren(self):
467 children = []
468 children.append(self.assign)
469 children.append(self.list)
470 children.append(self.body)
471 children.append(self.else_)
472 return tuple(children)
473
474 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000475 nodelist = []
476 nodelist.append(self.assign)
477 nodelist.append(self.list)
478 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000479 if self.else_ is not None:
480 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000481 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000482
483 def __repr__(self):
484 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
485
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000486class From(Node):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000487 def __init__(self, modname, names, level, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000488 self.modname = modname
489 self.names = names
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000490 self.level = level
Jeremy Hylton566d9342004-09-07 15:28:01 +0000491 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000492
493 def getChildren(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000494 return self.modname, self.names, self.level
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000495
496 def getChildNodes(self):
497 return ()
498
499 def __repr__(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000500 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000501
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000502class Function(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000503 def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000504 self.decorators = decorators
505 self.name = name
506 self.argnames = argnames
507 self.defaults = defaults
508 self.flags = flags
509 self.doc = doc
510 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000511 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000512 self.varargs = self.kwargs = None
513 if flags & CO_VARARGS:
514 self.varargs = 1
515 if flags & CO_VARKEYWORDS:
516 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000517
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000518
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000519 def getChildren(self):
520 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000521 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000522 children.append(self.name)
523 children.append(self.argnames)
524 children.extend(flatten(self.defaults))
525 children.append(self.flags)
526 children.append(self.doc)
527 children.append(self.code)
528 return tuple(children)
529
530 def getChildNodes(self):
531 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000532 if self.decorators is not None:
533 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000534 nodelist.extend(flatten_nodes(self.defaults))
535 nodelist.append(self.code)
536 return tuple(nodelist)
537
538 def __repr__(self):
539 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))
540
541class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000542 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000543 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000544 self.lineno = lineno
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000545 self.argnames = ['.0']
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000546 self.varargs = self.kwargs = None
Tim Peters39e11fb2006-03-04 02:43:44 +0000547
Guido van Rossum86e58e22006-08-28 15:27:34 +0000548
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000549 def getChildren(self):
550 return self.code,
551
552 def getChildNodes(self):
553 return self.code,
554
555 def __repr__(self):
556 return "GenExpr(%s)" % (repr(self.code),)
557
558class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000559 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000560 self.assign = assign
561 self.iter = iter
562 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000563 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000564 self.is_outmost = False
565
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000566 def getChildren(self):
567 children = []
568 children.append(self.assign)
569 children.append(self.iter)
570 children.extend(flatten(self.ifs))
571 return tuple(children)
572
573 def getChildNodes(self):
574 nodelist = []
575 nodelist.append(self.assign)
576 nodelist.append(self.iter)
577 nodelist.extend(flatten_nodes(self.ifs))
578 return tuple(nodelist)
579
580 def __repr__(self):
581 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
582
583class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000584 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000585 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000586 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000587
588 def getChildren(self):
589 return self.test,
590
591 def getChildNodes(self):
592 return self.test,
593
594 def __repr__(self):
595 return "GenExprIf(%s)" % (repr(self.test),)
596
597class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000598 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000599 self.expr = expr
600 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000601 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000602
603 def getChildren(self):
604 children = []
605 children.append(self.expr)
606 children.extend(flatten(self.quals))
607 return tuple(children)
608
609 def getChildNodes(self):
610 nodelist = []
611 nodelist.append(self.expr)
612 nodelist.extend(flatten_nodes(self.quals))
613 return tuple(nodelist)
614
615 def __repr__(self):
616 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
617
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000618class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000619 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000620 self.expr = expr
621 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000622 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000623
624 def getChildren(self):
625 return self.expr, self.attrname
626
627 def getChildNodes(self):
628 return self.expr,
629
630 def __repr__(self):
631 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
632
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000633class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000634 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000635 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000636 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000637
638 def getChildren(self):
639 return self.names,
640
641 def getChildNodes(self):
642 return ()
643
644 def __repr__(self):
645 return "Global(%s)" % (repr(self.names),)
646
647class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000648 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000649 self.tests = tests
650 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000651 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000652
653 def getChildren(self):
654 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000655 children.extend(flatten(self.tests))
656 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000657 return tuple(children)
658
659 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000660 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000661 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000662 if self.else_ is not None:
663 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000664 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000665
666 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000667 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
668
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000669class IfExp(Node):
670 def __init__(self, test, then, else_, lineno=None):
671 self.test = test
672 self.then = then
673 self.else_ = else_
674 self.lineno = lineno
675
676 def getChildren(self):
677 return self.test, self.then, self.else_
678
679 def getChildNodes(self):
680 return self.test, self.then, self.else_
681
682 def __repr__(self):
683 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
684
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000685class Import(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000686 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000687 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000688 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000689
690 def getChildren(self):
691 return self.names,
692
693 def getChildNodes(self):
694 return ()
695
696 def __repr__(self):
697 return "Import(%s)" % (repr(self.names),)
698
699class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000700 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000701 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000702 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000703
704 def getChildren(self):
705 return self.expr,
706
707 def getChildNodes(self):
708 return self.expr,
709
710 def __repr__(self):
711 return "Invert(%s)" % (repr(self.expr),)
712
713class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000714 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000715 self.name = name
716 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000717 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000718
719 def getChildren(self):
720 return self.name, self.expr
721
722 def getChildNodes(self):
723 return self.expr,
724
725 def __repr__(self):
726 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
727
728class Lambda(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000729 def __init__(self, argnames, defaults, flags, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000730 self.argnames = argnames
731 self.defaults = defaults
732 self.flags = flags
733 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000734 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000735 self.varargs = self.kwargs = None
736 if flags & CO_VARARGS:
737 self.varargs = 1
738 if flags & CO_VARKEYWORDS:
739 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000740
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000741
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000742 def getChildren(self):
743 children = []
744 children.append(self.argnames)
745 children.extend(flatten(self.defaults))
746 children.append(self.flags)
747 children.append(self.code)
748 return tuple(children)
749
750 def getChildNodes(self):
751 nodelist = []
752 nodelist.extend(flatten_nodes(self.defaults))
753 nodelist.append(self.code)
754 return tuple(nodelist)
755
756 def __repr__(self):
757 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
758
759class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000760 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000761 self.left = left
762 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000763 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000764
765 def getChildren(self):
766 return self.left, self.right
767
768 def getChildNodes(self):
769 return self.left, self.right
770
771 def __repr__(self):
772 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
773
774class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000775 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000776 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000777 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000778
779 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000780 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000781
782 def getChildNodes(self):
783 nodelist = []
784 nodelist.extend(flatten_nodes(self.nodes))
785 return tuple(nodelist)
786
787 def __repr__(self):
788 return "List(%s)" % (repr(self.nodes),)
789
790class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000791 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000792 self.expr = expr
793 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000794 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000795
796 def getChildren(self):
797 children = []
798 children.append(self.expr)
799 children.extend(flatten(self.quals))
800 return tuple(children)
801
802 def getChildNodes(self):
803 nodelist = []
804 nodelist.append(self.expr)
805 nodelist.extend(flatten_nodes(self.quals))
806 return tuple(nodelist)
807
808 def __repr__(self):
809 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
810
811class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000812 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000813 self.assign = assign
814 self.list = list
815 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000816 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000817
818 def getChildren(self):
819 children = []
820 children.append(self.assign)
821 children.append(self.list)
822 children.extend(flatten(self.ifs))
823 return tuple(children)
824
825 def getChildNodes(self):
826 nodelist = []
827 nodelist.append(self.assign)
828 nodelist.append(self.list)
829 nodelist.extend(flatten_nodes(self.ifs))
830 return tuple(nodelist)
831
832 def __repr__(self):
833 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
834
835class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000836 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000837 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000838 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000839
840 def getChildren(self):
841 return self.test,
842
843 def getChildNodes(self):
844 return self.test,
845
846 def __repr__(self):
847 return "ListCompIf(%s)" % (repr(self.test),)
848
849class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000850 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000851 self.left = left
852 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000853 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000854
855 def getChildren(self):
856 return self.left, self.right
857
858 def getChildNodes(self):
859 return self.left, self.right
860
861 def __repr__(self):
862 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000863
864class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000865 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000866 self.doc = doc
867 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000868 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000869
870 def getChildren(self):
871 return self.doc, self.node
872
873 def getChildNodes(self):
874 return self.node,
875
876 def __repr__(self):
877 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
878
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000879class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000880 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000881 self.left = left
882 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000883 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000884
885 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000886 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000887
888 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000889 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000890
891 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000892 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000893
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000894class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000895 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000896 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000897 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000898
899 def getChildren(self):
900 return self.name,
901
902 def getChildNodes(self):
903 return ()
904
905 def __repr__(self):
906 return "Name(%s)" % (repr(self.name),)
907
908class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000909 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000910 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000911 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000912
913 def getChildren(self):
914 return self.expr,
915
916 def getChildNodes(self):
917 return self.expr,
918
919 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000920 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000921
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000922class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000923 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000924 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000925 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000926
927 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000928 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000929
930 def getChildNodes(self):
931 nodelist = []
932 nodelist.extend(flatten_nodes(self.nodes))
933 return tuple(nodelist)
934
935 def __repr__(self):
936 return "Or(%s)" % (repr(self.nodes),)
937
938class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000939 def __init__(self, lineno=None):
940 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000941
942 def getChildren(self):
943 return ()
944
945 def getChildNodes(self):
946 return ()
947
948 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000949 return "Pass()"
950
951class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000952 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000953 self.left = left
954 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000955 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000956
957 def getChildren(self):
958 return self.left, self.right
959
960 def getChildNodes(self):
961 return self.left, self.right
962
963 def __repr__(self):
964 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000965
966class Print(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000967 def __init__(self, nodes, dest, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000968 self.nodes = nodes
969 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000970 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000971
972 def getChildren(self):
973 children = []
974 children.extend(flatten(self.nodes))
975 children.append(self.dest)
976 return tuple(children)
977
978 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000979 nodelist = []
980 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000981 if self.dest is not None:
982 nodelist.append(self.dest)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000983 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000984
985 def __repr__(self):
986 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
987
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000988class Printnl(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000989 def __init__(self, nodes, dest, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000990 self.nodes = nodes
991 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +0000992 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000993
994 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000995 children = []
996 children.extend(flatten(self.nodes))
997 children.append(self.dest)
998 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000999
1000 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001001 nodelist = []
1002 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001003 if self.dest is not None:
1004 nodelist.append(self.dest)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001005 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001006
1007 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001008 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1009
1010class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001011 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001012 self.expr1 = expr1
1013 self.expr2 = expr2
1014 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001015 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001016
1017 def getChildren(self):
1018 children = []
1019 children.append(self.expr1)
1020 children.append(self.expr2)
1021 children.append(self.expr3)
1022 return tuple(children)
1023
1024 def getChildNodes(self):
1025 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001026 if self.expr1 is not None:
1027 nodelist.append(self.expr1)
1028 if self.expr2 is not None:
1029 nodelist.append(self.expr2)
1030 if self.expr3 is not None:
1031 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001032 return tuple(nodelist)
1033
1034 def __repr__(self):
1035 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1036
1037class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001038 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001039 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001040 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001041
1042 def getChildren(self):
1043 return self.value,
1044
1045 def getChildNodes(self):
1046 return self.value,
1047
1048 def __repr__(self):
1049 return "Return(%s)" % (repr(self.value),)
1050
1051class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001052 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001053 self.left = left
1054 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001055 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001056
1057 def getChildren(self):
1058 return self.left, self.right
1059
1060 def getChildNodes(self):
1061 return self.left, self.right
1062
1063 def __repr__(self):
1064 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1065
Guido van Rossum86e58e22006-08-28 15:27:34 +00001066class Set(Node):
1067 def __init__(self, items, lineno=None):
1068 self.items = items
1069 self.lineno = lineno
1070
1071 def getChildren(self):
1072 return tuple(flatten(self.items))
1073
1074 def getChildNodes(self):
1075 nodelist = []
1076 nodelist.extend(flatten_nodes(self.items))
1077 return tuple(nodelist)
1078
1079 def __repr__(self):
1080 return "Set(%s)" % (repr(self.items),)
1081
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001082class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001083 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001084 self.expr = expr
1085 self.flags = flags
1086 self.lower = lower
1087 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001088 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001089
1090 def getChildren(self):
1091 children = []
1092 children.append(self.expr)
1093 children.append(self.flags)
1094 children.append(self.lower)
1095 children.append(self.upper)
1096 return tuple(children)
1097
1098 def getChildNodes(self):
1099 nodelist = []
1100 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001101 if self.lower is not None:
1102 nodelist.append(self.lower)
1103 if self.upper is not None:
1104 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001105 return tuple(nodelist)
1106
1107 def __repr__(self):
1108 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1109
1110class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001111 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001112 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001113 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001114
1115 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001116 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001117
1118 def getChildNodes(self):
1119 nodelist = []
1120 nodelist.extend(flatten_nodes(self.nodes))
1121 return tuple(nodelist)
1122
1123 def __repr__(self):
1124 return "Sliceobj(%s)" % (repr(self.nodes),)
1125
1126class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001127 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001128 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001129 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001130
1131 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001132 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001133
1134 def getChildNodes(self):
1135 nodelist = []
1136 nodelist.extend(flatten_nodes(self.nodes))
1137 return tuple(nodelist)
1138
1139 def __repr__(self):
1140 return "Stmt(%s)" % (repr(self.nodes),)
1141
1142class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001143 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001144 self.left = left
1145 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001146 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001147
1148 def getChildren(self):
1149 return self.left, self.right
1150
1151 def getChildNodes(self):
1152 return self.left, self.right
1153
1154 def __repr__(self):
1155 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001156
1157class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001158 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001159 self.expr = expr
1160 self.flags = flags
1161 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001162 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001163
1164 def getChildren(self):
1165 children = []
1166 children.append(self.expr)
1167 children.append(self.flags)
1168 children.extend(flatten(self.subs))
1169 return tuple(children)
1170
1171 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001172 nodelist = []
1173 nodelist.append(self.expr)
1174 nodelist.extend(flatten_nodes(self.subs))
1175 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001176
1177 def __repr__(self):
1178 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1179
1180class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001181 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001182 self.body = body
1183 self.handlers = handlers
1184 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001185 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001186
1187 def getChildren(self):
1188 children = []
1189 children.append(self.body)
1190 children.extend(flatten(self.handlers))
1191 children.append(self.else_)
1192 return tuple(children)
1193
1194 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001195 nodelist = []
1196 nodelist.append(self.body)
1197 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001198 if self.else_ is not None:
1199 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001200 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001201
1202 def __repr__(self):
1203 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1204
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001205class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001206 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001207 self.body = body
1208 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001209 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001210
1211 def getChildren(self):
1212 return self.body, self.final
1213
1214 def getChildNodes(self):
1215 return self.body, self.final
1216
1217 def __repr__(self):
1218 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1219
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001220class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001221 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001222 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001223 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001224
1225 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001226 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001227
1228 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001229 nodelist = []
1230 nodelist.extend(flatten_nodes(self.nodes))
1231 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001232
1233 def __repr__(self):
1234 return "Tuple(%s)" % (repr(self.nodes),)
1235
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001236class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001237 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001238 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001239 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001240
1241 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001242 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001243
1244 def getChildNodes(self):
1245 return self.expr,
1246
1247 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001248 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001249
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001250class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001251 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001252 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001253 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001254
1255 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001256 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001257
1258 def getChildNodes(self):
1259 return self.expr,
1260
1261 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001262 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001263
1264class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001265 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001266 self.test = test
1267 self.body = body
1268 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001269 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001270
1271 def getChildren(self):
1272 children = []
1273 children.append(self.test)
1274 children.append(self.body)
1275 children.append(self.else_)
1276 return tuple(children)
1277
1278 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001279 nodelist = []
1280 nodelist.append(self.test)
1281 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001282 if self.else_ is not None:
1283 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001284 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001285
1286 def __repr__(self):
1287 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1288
Guido van Rossumc2e20742006-02-27 22:32:47 +00001289class With(Node):
1290 def __init__(self, expr, vars, body, lineno=None):
1291 self.expr = expr
1292 self.vars = vars
1293 self.body = body
1294 self.lineno = lineno
1295
1296 def getChildren(self):
1297 children = []
1298 children.append(self.expr)
1299 children.append(self.vars)
1300 children.append(self.body)
1301 return tuple(children)
1302
1303 def getChildNodes(self):
1304 nodelist = []
1305 nodelist.append(self.expr)
1306 if self.vars is not None:
1307 nodelist.append(self.vars)
1308 nodelist.append(self.body)
1309 return tuple(nodelist)
1310
1311 def __repr__(self):
1312 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1313
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001314class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001315 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001316 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001317 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001318
1319 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001320 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001321
1322 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001323 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001324
1325 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001326 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001327
Jeremy Hylton566d9342004-09-07 15:28:01 +00001328for name, obj in globals().items():
1329 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001330 nodes[name.lower()] = obj