blob: bc283c08bd3d165039c15774da80445c8d8f7f06 [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):
Neal Norwitzc1505362006-12-28 06:47:50 +000036 def getChildNodes(self):
37 return ()
38 def getChildren(self):
39 return ()
Jeremy Hyltonf968e852000-02-04 00:25:23 +000040
Anthony Baxterc2a5a632004-08-02 06:10:11 +000041class Expression(Node):
42 # Expression is an artificial node class to support "eval"
43 nodes["expression"] = "Expression"
44 def __init__(self, node):
45 self.node = node
46
47 def getChildren(self):
48 return self.node,
49
50 def getChildNodes(self):
51 return self.node,
52
53 def __repr__(self):
54 return "Expression(%s)" % (repr(self.node))
55
56class Add(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000057 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000058 self.left = left
59 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +000060 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000061
62 def getChildren(self):
63 return self.left, self.right
64
65 def getChildNodes(self):
66 return self.left, self.right
67
68 def __repr__(self):
69 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
70
71class And(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000072 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000073 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +000074 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000075
76 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +000077 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +000078
79 def getChildNodes(self):
80 nodelist = []
81 nodelist.extend(flatten_nodes(self.nodes))
82 return tuple(nodelist)
83
84 def __repr__(self):
85 return "And(%s)" % (repr(self.nodes),)
86
87class AssAttr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000088 def __init__(self, expr, attrname, flags, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000089 self.expr = expr
Anthony Baxterc2a5a632004-08-02 06:10:11 +000090 self.attrname = attrname
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000091 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +000092 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000093
94 def getChildren(self):
95 return self.expr, self.attrname, self.flags
96
97 def getChildNodes(self):
98 return self.expr,
99
100 def __repr__(self):
101 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
102
103class AssList(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000104 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000105 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000106 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000107
108 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000109 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000110
111 def getChildNodes(self):
112 nodelist = []
113 nodelist.extend(flatten_nodes(self.nodes))
114 return tuple(nodelist)
115
116 def __repr__(self):
117 return "AssList(%s)" % (repr(self.nodes),)
118
119class AssName(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000120 def __init__(self, name, flags, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000121 self.name = name
122 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +0000123 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000124
125 def getChildren(self):
126 return self.name, self.flags
127
128 def getChildNodes(self):
129 return ()
130
131 def __repr__(self):
132 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
133
134class AssTuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000135 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000136 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000137 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000138
139 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000140 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000141
142 def getChildNodes(self):
143 nodelist = []
144 nodelist.extend(flatten_nodes(self.nodes))
145 return tuple(nodelist)
146
147 def __repr__(self):
148 return "AssTuple(%s)" % (repr(self.nodes),)
149
150class Assert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000151 def __init__(self, test, fail, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000152 self.test = test
153 self.fail = fail
Jeremy Hylton566d9342004-09-07 15:28:01 +0000154 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000155
156 def getChildren(self):
157 children = []
158 children.append(self.test)
159 children.append(self.fail)
160 return tuple(children)
161
162 def getChildNodes(self):
163 nodelist = []
164 nodelist.append(self.test)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000165 if self.fail is not None:
166 nodelist.append(self.fail)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000167 return tuple(nodelist)
168
169 def __repr__(self):
170 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
171
172class Assign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000173 def __init__(self, nodes, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000174 self.nodes = nodes
175 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000176 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000177
178 def getChildren(self):
179 children = []
180 children.extend(flatten(self.nodes))
181 children.append(self.expr)
182 return tuple(children)
183
184 def getChildNodes(self):
185 nodelist = []
186 nodelist.extend(flatten_nodes(self.nodes))
187 nodelist.append(self.expr)
188 return tuple(nodelist)
189
190 def __repr__(self):
191 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
192
193class AugAssign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000194 def __init__(self, node, op, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000195 self.node = node
196 self.op = op
197 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000198 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000199
200 def getChildren(self):
201 return self.node, self.op, self.expr
202
203 def getChildNodes(self):
204 return self.node, self.expr
205
206 def __repr__(self):
207 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
208
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000209class Bitand(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000210 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000211 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000212 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000213
214 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000215 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000216
217 def getChildNodes(self):
218 nodelist = []
219 nodelist.extend(flatten_nodes(self.nodes))
220 return tuple(nodelist)
221
222 def __repr__(self):
223 return "Bitand(%s)" % (repr(self.nodes),)
224
225class Bitor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000226 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000227 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000228 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000229
230 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000231 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000232
233 def getChildNodes(self):
234 nodelist = []
235 nodelist.extend(flatten_nodes(self.nodes))
236 return tuple(nodelist)
237
238 def __repr__(self):
239 return "Bitor(%s)" % (repr(self.nodes),)
240
241class Bitxor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000242 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000243 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000244 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000245
246 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000247 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000248
249 def getChildNodes(self):
250 nodelist = []
251 nodelist.extend(flatten_nodes(self.nodes))
252 return tuple(nodelist)
253
254 def __repr__(self):
255 return "Bitxor(%s)" % (repr(self.nodes),)
256
257class Break(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000258 def __init__(self, lineno=None):
259 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000260
261 def getChildren(self):
262 return ()
263
264 def getChildNodes(self):
265 return ()
266
267 def __repr__(self):
268 return "Break()"
269
270class CallFunc(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000271 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000272 self.node = node
273 self.args = args
274 self.star_args = star_args
275 self.dstar_args = dstar_args
Jeremy Hylton566d9342004-09-07 15:28:01 +0000276 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000277
278 def getChildren(self):
279 children = []
280 children.append(self.node)
281 children.extend(flatten(self.args))
282 children.append(self.star_args)
283 children.append(self.dstar_args)
284 return tuple(children)
285
286 def getChildNodes(self):
287 nodelist = []
288 nodelist.append(self.node)
289 nodelist.extend(flatten_nodes(self.args))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000290 if self.star_args is not None:
291 nodelist.append(self.star_args)
292 if self.dstar_args is not None:
293 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000294 return tuple(nodelist)
295
296 def __repr__(self):
297 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
298
299class Class(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000300 def __init__(self, name, bases, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000301 self.name = name
302 self.bases = bases
303 self.doc = doc
304 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000305 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000306
307 def getChildren(self):
308 children = []
309 children.append(self.name)
310 children.extend(flatten(self.bases))
311 children.append(self.doc)
312 children.append(self.code)
313 return tuple(children)
314
315 def getChildNodes(self):
316 nodelist = []
317 nodelist.extend(flatten_nodes(self.bases))
318 nodelist.append(self.code)
319 return tuple(nodelist)
320
321 def __repr__(self):
322 return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
323
324class Compare(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000325 def __init__(self, expr, ops, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000326 self.expr = expr
327 self.ops = ops
Jeremy Hylton566d9342004-09-07 15:28:01 +0000328 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000329
330 def getChildren(self):
331 children = []
332 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000333 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000334 return tuple(children)
335
336 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000337 nodelist = []
338 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000339 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000340 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000341
342 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000343 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000344
345class Const(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000346 def __init__(self, value, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000347 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +0000348 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000349
350 def getChildren(self):
351 return self.value,
352
353 def getChildNodes(self):
354 return ()
355
356 def __repr__(self):
357 return "Const(%s)" % (repr(self.value),)
358
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000359class Continue(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000360 def __init__(self, lineno=None):
361 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000362
363 def getChildren(self):
364 return ()
365
366 def getChildNodes(self):
367 return ()
368
369 def __repr__(self):
370 return "Continue()"
371
372class Decorators(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000373 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000374 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000375 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000376
377 def getChildren(self):
378 return tuple(flatten(self.nodes))
379
380 def getChildNodes(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000381 nodelist = []
382 nodelist.extend(flatten_nodes(self.nodes))
383 return tuple(nodelist)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000384
385 def __repr__(self):
386 return "Decorators(%s)" % (repr(self.nodes),)
387
388class Dict(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000389 def __init__(self, items, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000390 self.items = items
Jeremy Hylton566d9342004-09-07 15:28:01 +0000391 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000392
393 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000394 return tuple(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000395
396 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000397 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000398 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000399 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000400
401 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000402 return "Dict(%s)" % (repr(self.items),)
403
404class Discard(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000405 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000406 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000407 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000408
409 def getChildren(self):
410 return self.expr,
411
412 def getChildNodes(self):
413 return self.expr,
414
415 def __repr__(self):
416 return "Discard(%s)" % (repr(self.expr),)
417
418class Div(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000419 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000420 self.left = left
421 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000422 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000423
424 def getChildren(self):
425 return self.left, self.right
426
427 def getChildNodes(self):
428 return self.left, self.right
429
430 def __repr__(self):
431 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
432
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000433class FloorDiv(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000434 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000435 self.left = left
436 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000437 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000438
439 def getChildren(self):
440 return self.left, self.right
441
442 def getChildNodes(self):
443 return self.left, self.right
444
445 def __repr__(self):
446 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000447
448class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000449 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000450 self.assign = assign
451 self.list = list
452 self.body = body
453 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000454 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000455
456 def getChildren(self):
457 children = []
458 children.append(self.assign)
459 children.append(self.list)
460 children.append(self.body)
461 children.append(self.else_)
462 return tuple(children)
463
464 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000465 nodelist = []
466 nodelist.append(self.assign)
467 nodelist.append(self.list)
468 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000469 if self.else_ is not None:
470 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000471 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000472
473 def __repr__(self):
474 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
475
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000476class From(Node):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000477 def __init__(self, modname, names, level, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000478 self.modname = modname
479 self.names = names
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000480 self.level = level
Jeremy Hylton566d9342004-09-07 15:28:01 +0000481 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000482
483 def getChildren(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000484 return self.modname, self.names, self.level
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000485
486 def getChildNodes(self):
487 return ()
488
489 def __repr__(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000490 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000491
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000492class Function(Node):
Neal Norwitzc1505362006-12-28 06:47:50 +0000493 def __init__(self, decorators, name, arguments, defaults, kwonlyargs, returns, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000494 self.decorators = decorators
495 self.name = name
Neal Norwitzc1505362006-12-28 06:47:50 +0000496 self.arguments = arguments
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000497 self.defaults = defaults
Guido van Rossum4f72a782006-10-27 23:31:49 +0000498 self.kwonlyargs = kwonlyargs
Neal Norwitzc1505362006-12-28 06:47:50 +0000499 self.returns = returns
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000500 self.flags = flags
501 self.doc = doc
502 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000503 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000504 self.varargs = self.kwargs = None
505 if flags & CO_VARARGS:
506 self.varargs = 1
507 if flags & CO_VARKEYWORDS:
508 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000509
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000510
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000511 def getChildren(self):
512 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000513 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000514 children.append(self.name)
Neal Norwitzc1505362006-12-28 06:47:50 +0000515 children.extend(flatten(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000516 children.extend(flatten(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000517 children.extend(flatten(self.kwonlyargs))
518 children.append(self.returns)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000519 children.append(self.flags)
520 children.append(self.doc)
521 children.append(self.code)
522 return tuple(children)
523
524 def getChildNodes(self):
525 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000526 if self.decorators is not None:
527 nodelist.append(self.decorators)
Neal Norwitzc1505362006-12-28 06:47:50 +0000528 nodelist.extend(flatten_nodes(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000529 nodelist.extend(flatten_nodes(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000530 nodelist.extend(flatten_nodes(self.kwonlyargs))
531 if self.returns is not None:
532 nodelist.append(self.returns)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000533 nodelist.append(self.code)
534 return tuple(nodelist)
535
536 def __repr__(self):
Neal Norwitzc1505362006-12-28 06:47:50 +0000537 return "Function(%s, %s, %s, %s, %s, %s, %s, %s, %s)" % (repr(self.decorators), repr(self.name), repr(self.arguments), repr(self.defaults), repr(self.kwonlyargs), repr(self.returns), repr(self.flags), repr(self.doc), repr(self.code))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000538
539class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000540 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000541 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000542 self.lineno = lineno
Neal Norwitzc1505362006-12-28 06:47:50 +0000543 self.arguments = [SimpleArg('.0', None)]
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000544 self.varargs = self.kwargs = None
Guido van Rossum4f72a782006-10-27 23:31:49 +0000545 self.kwonlyargs = ()
Tim Peters39e11fb2006-03-04 02:43:44 +0000546
Guido van Rossum86e58e22006-08-28 15:27:34 +0000547
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000548 def getChildren(self):
549 return self.code,
550
551 def getChildNodes(self):
552 return self.code,
553
554 def __repr__(self):
555 return "GenExpr(%s)" % (repr(self.code),)
556
557class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000558 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000559 self.assign = assign
560 self.iter = iter
561 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000562 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000563 self.is_outmost = False
564
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000565 def getChildren(self):
566 children = []
567 children.append(self.assign)
568 children.append(self.iter)
569 children.extend(flatten(self.ifs))
570 return tuple(children)
571
572 def getChildNodes(self):
573 nodelist = []
574 nodelist.append(self.assign)
575 nodelist.append(self.iter)
576 nodelist.extend(flatten_nodes(self.ifs))
577 return tuple(nodelist)
578
579 def __repr__(self):
580 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
581
582class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000583 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000584 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000585 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000586
587 def getChildren(self):
588 return self.test,
589
590 def getChildNodes(self):
591 return self.test,
592
593 def __repr__(self):
594 return "GenExprIf(%s)" % (repr(self.test),)
595
596class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000597 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000598 self.expr = expr
599 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000600 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000601
602 def getChildren(self):
603 children = []
604 children.append(self.expr)
605 children.extend(flatten(self.quals))
606 return tuple(children)
607
608 def getChildNodes(self):
609 nodelist = []
610 nodelist.append(self.expr)
611 nodelist.extend(flatten_nodes(self.quals))
612 return tuple(nodelist)
613
614 def __repr__(self):
615 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
616
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000617class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000618 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000619 self.expr = expr
620 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000621 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000622
623 def getChildren(self):
624 return self.expr, self.attrname
625
626 def getChildNodes(self):
627 return self.expr,
628
629 def __repr__(self):
630 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
631
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000632class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000633 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000634 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000635 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000636
637 def getChildren(self):
638 return self.names,
639
640 def getChildNodes(self):
641 return ()
642
643 def __repr__(self):
644 return "Global(%s)" % (repr(self.names),)
645
646class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000647 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000648 self.tests = tests
649 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000650 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000651
652 def getChildren(self):
653 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000654 children.extend(flatten(self.tests))
655 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000656 return tuple(children)
657
658 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000659 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000660 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000661 if self.else_ is not None:
662 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000663 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000664
665 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000666 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
667
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000668class IfExp(Node):
669 def __init__(self, test, then, else_, lineno=None):
670 self.test = test
671 self.then = then
672 self.else_ = else_
673 self.lineno = lineno
674
675 def getChildren(self):
676 return self.test, self.then, self.else_
677
678 def getChildNodes(self):
679 return self.test, self.then, self.else_
680
681 def __repr__(self):
682 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
683
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000684class Import(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000685 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000686 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000687 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000688
689 def getChildren(self):
690 return self.names,
691
692 def getChildNodes(self):
693 return ()
694
695 def __repr__(self):
696 return "Import(%s)" % (repr(self.names),)
697
698class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000699 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000700 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000701 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000702
703 def getChildren(self):
704 return self.expr,
705
706 def getChildNodes(self):
707 return self.expr,
708
709 def __repr__(self):
710 return "Invert(%s)" % (repr(self.expr),)
711
712class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000713 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000714 self.name = name
715 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000716 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000717
718 def getChildren(self):
719 return self.name, self.expr
720
721 def getChildNodes(self):
722 return self.expr,
723
724 def __repr__(self):
725 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
726
Neal Norwitzc1505362006-12-28 06:47:50 +0000727class Kwarg(Node):
728 def __init__(self, arg, expr, lineno=None):
729 self.arg = arg
730 self.expr = expr
731 self.lineno = lineno
732
733 def getChildren(self):
734 return self.arg, self.expr
735
736 def getChildNodes(self):
737 return self.arg, self.expr
738
739 def __repr__(self):
740 return "Kwarg(%s, %s)" % (repr(self.arg), repr(self.expr))
741
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000742class Lambda(Node):
Neal Norwitzc1505362006-12-28 06:47:50 +0000743 def __init__(self, arguments, defaults, kwonlyargs, flags, code, lineno=None):
744 self.arguments = arguments
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000745 self.defaults = defaults
Guido van Rossum4f72a782006-10-27 23:31:49 +0000746 self.kwonlyargs = kwonlyargs
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000747 self.flags = flags
748 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000749 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000750 self.varargs = self.kwargs = None
751 if flags & CO_VARARGS:
752 self.varargs = 1
753 if flags & CO_VARKEYWORDS:
754 self.kwargs = 1
Neal Norwitzc1505362006-12-28 06:47:50 +0000755 self.returns = None
Tim Peters39e11fb2006-03-04 02:43:44 +0000756
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000757
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000758 def getChildren(self):
759 children = []
Neal Norwitzc1505362006-12-28 06:47:50 +0000760 children.extend(flatten(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000761 children.extend(flatten(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000762 children.extend(flatten(self.kwonlyargs))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000763 children.append(self.flags)
764 children.append(self.code)
765 return tuple(children)
766
767 def getChildNodes(self):
768 nodelist = []
Neal Norwitzc1505362006-12-28 06:47:50 +0000769 nodelist.extend(flatten_nodes(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000770 nodelist.extend(flatten_nodes(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000771 nodelist.extend(flatten_nodes(self.kwonlyargs))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000772 nodelist.append(self.code)
773 return tuple(nodelist)
774
775 def __repr__(self):
Neal Norwitzc1505362006-12-28 06:47:50 +0000776 return "Lambda(%s, %s, %s, %s, %s)" % (repr(self.arguments), repr(self.defaults), repr(self.kwonlyargs), repr(self.flags), repr(self.code))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000777
778class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000779 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000780 self.left = left
781 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000782 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000783
784 def getChildren(self):
785 return self.left, self.right
786
787 def getChildNodes(self):
788 return self.left, self.right
789
790 def __repr__(self):
791 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
792
793class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000794 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000795 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000796 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000797
798 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000799 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000800
801 def getChildNodes(self):
802 nodelist = []
803 nodelist.extend(flatten_nodes(self.nodes))
804 return tuple(nodelist)
805
806 def __repr__(self):
807 return "List(%s)" % (repr(self.nodes),)
808
809class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000810 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000811 self.expr = expr
812 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000813 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000814
815 def getChildren(self):
816 children = []
817 children.append(self.expr)
818 children.extend(flatten(self.quals))
819 return tuple(children)
820
821 def getChildNodes(self):
822 nodelist = []
823 nodelist.append(self.expr)
824 nodelist.extend(flatten_nodes(self.quals))
825 return tuple(nodelist)
826
827 def __repr__(self):
828 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
829
830class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000831 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000832 self.assign = assign
833 self.list = list
834 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000835 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000836
837 def getChildren(self):
838 children = []
839 children.append(self.assign)
840 children.append(self.list)
841 children.extend(flatten(self.ifs))
842 return tuple(children)
843
844 def getChildNodes(self):
845 nodelist = []
846 nodelist.append(self.assign)
847 nodelist.append(self.list)
848 nodelist.extend(flatten_nodes(self.ifs))
849 return tuple(nodelist)
850
851 def __repr__(self):
852 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
853
854class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000855 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000856 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000857 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000858
859 def getChildren(self):
860 return self.test,
861
862 def getChildNodes(self):
863 return self.test,
864
865 def __repr__(self):
866 return "ListCompIf(%s)" % (repr(self.test),)
867
868class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000869 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000870 self.left = left
871 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000872 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000873
874 def getChildren(self):
875 return self.left, self.right
876
877 def getChildNodes(self):
878 return self.left, self.right
879
880 def __repr__(self):
881 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000882
883class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000884 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000885 self.doc = doc
886 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000887 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000888
889 def getChildren(self):
890 return self.doc, self.node
891
892 def getChildNodes(self):
893 return self.node,
894
895 def __repr__(self):
896 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
897
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000898class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000899 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000900 self.left = left
901 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000902 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000903
904 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000905 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000906
907 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000908 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000909
910 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000911 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000912
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000913class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000914 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000915 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000916 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000917
918 def getChildren(self):
919 return self.name,
920
921 def getChildNodes(self):
922 return ()
923
924 def __repr__(self):
925 return "Name(%s)" % (repr(self.name),)
926
Neal Norwitzc1505362006-12-28 06:47:50 +0000927class NestedArgs(Node):
928 def __init__(self, args, lineno=None):
929 self.args = args
930 self.lineno = lineno
931
932 def getChildren(self):
933 return tuple(flatten(self.args))
934
935 def getChildNodes(self):
936 nodelist = []
937 nodelist.extend(flatten_nodes(self.args))
938 return tuple(nodelist)
939
940 def __repr__(self):
941 return "NestedArgs(%s)" % (repr(self.args),)
942
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000943class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000944 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000945 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000946 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000947
948 def getChildren(self):
949 return self.expr,
950
951 def getChildNodes(self):
952 return self.expr,
953
954 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000955 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000956
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000957class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000958 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000959 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000960 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000961
962 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000963 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000964
965 def getChildNodes(self):
966 nodelist = []
967 nodelist.extend(flatten_nodes(self.nodes))
968 return tuple(nodelist)
969
970 def __repr__(self):
971 return "Or(%s)" % (repr(self.nodes),)
972
973class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000974 def __init__(self, lineno=None):
975 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000976
977 def getChildren(self):
978 return ()
979
980 def getChildNodes(self):
981 return ()
982
983 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000984 return "Pass()"
985
986class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000987 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000988 self.left = left
989 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000990 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000991
992 def getChildren(self):
993 return self.left, self.right
994
995 def getChildNodes(self):
996 return self.left, self.right
997
998 def __repr__(self):
999 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001000
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001001class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001002 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001003 self.expr1 = expr1
1004 self.expr2 = expr2
1005 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001006 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001007
1008 def getChildren(self):
1009 children = []
1010 children.append(self.expr1)
1011 children.append(self.expr2)
1012 children.append(self.expr3)
1013 return tuple(children)
1014
1015 def getChildNodes(self):
1016 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001017 if self.expr1 is not None:
1018 nodelist.append(self.expr1)
1019 if self.expr2 is not None:
1020 nodelist.append(self.expr2)
1021 if self.expr3 is not None:
1022 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001023 return tuple(nodelist)
1024
1025 def __repr__(self):
1026 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1027
1028class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001029 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001030 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001031 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001032
1033 def getChildren(self):
1034 return self.value,
1035
1036 def getChildNodes(self):
1037 return self.value,
1038
1039 def __repr__(self):
1040 return "Return(%s)" % (repr(self.value),)
1041
1042class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001043 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001044 self.left = left
1045 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001046 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001047
1048 def getChildren(self):
1049 return self.left, self.right
1050
1051 def getChildNodes(self):
1052 return self.left, self.right
1053
1054 def __repr__(self):
1055 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1056
Guido van Rossum86e58e22006-08-28 15:27:34 +00001057class Set(Node):
1058 def __init__(self, items, lineno=None):
1059 self.items = items
1060 self.lineno = lineno
1061
1062 def getChildren(self):
1063 return tuple(flatten(self.items))
1064
1065 def getChildNodes(self):
1066 nodelist = []
1067 nodelist.extend(flatten_nodes(self.items))
1068 return tuple(nodelist)
1069
1070 def __repr__(self):
1071 return "Set(%s)" % (repr(self.items),)
1072
Neal Norwitzc1505362006-12-28 06:47:50 +00001073class SimpleArg(Node):
1074 def __init__(self, name, annotation, lineno=None):
1075 self.name = name
1076 self.annotation = annotation
1077 self.lineno = lineno
1078
1079 def getChildren(self):
1080 children = []
1081 children.append(self.name)
1082 children.append(self.annotation)
1083 return tuple(children)
1084
1085 def getChildNodes(self):
1086 nodelist = []
1087 if self.annotation is not None:
1088 nodelist.append(self.annotation)
1089 return tuple(nodelist)
1090
1091 def __repr__(self):
1092 return "SimpleArg(%s, %s)" % (repr(self.name), repr(self.annotation))
1093
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001094class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001095 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001096 self.expr = expr
1097 self.flags = flags
1098 self.lower = lower
1099 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001100 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001101
1102 def getChildren(self):
1103 children = []
1104 children.append(self.expr)
1105 children.append(self.flags)
1106 children.append(self.lower)
1107 children.append(self.upper)
1108 return tuple(children)
1109
1110 def getChildNodes(self):
1111 nodelist = []
1112 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001113 if self.lower is not None:
1114 nodelist.append(self.lower)
1115 if self.upper is not None:
1116 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001117 return tuple(nodelist)
1118
1119 def __repr__(self):
1120 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1121
1122class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001123 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001124 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001125 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001126
1127 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001128 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001129
1130 def getChildNodes(self):
1131 nodelist = []
1132 nodelist.extend(flatten_nodes(self.nodes))
1133 return tuple(nodelist)
1134
1135 def __repr__(self):
1136 return "Sliceobj(%s)" % (repr(self.nodes),)
1137
1138class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001139 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001140 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001141 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001142
1143 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001144 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001145
1146 def getChildNodes(self):
1147 nodelist = []
1148 nodelist.extend(flatten_nodes(self.nodes))
1149 return tuple(nodelist)
1150
1151 def __repr__(self):
1152 return "Stmt(%s)" % (repr(self.nodes),)
1153
1154class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001155 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001156 self.left = left
1157 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001158 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001159
1160 def getChildren(self):
1161 return self.left, self.right
1162
1163 def getChildNodes(self):
1164 return self.left, self.right
1165
1166 def __repr__(self):
1167 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001168
1169class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001170 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001171 self.expr = expr
1172 self.flags = flags
1173 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001174 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001175
1176 def getChildren(self):
1177 children = []
1178 children.append(self.expr)
1179 children.append(self.flags)
1180 children.extend(flatten(self.subs))
1181 return tuple(children)
1182
1183 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001184 nodelist = []
1185 nodelist.append(self.expr)
1186 nodelist.extend(flatten_nodes(self.subs))
1187 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001188
1189 def __repr__(self):
1190 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1191
1192class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001193 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001194 self.body = body
1195 self.handlers = handlers
1196 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001197 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001198
1199 def getChildren(self):
1200 children = []
1201 children.append(self.body)
1202 children.extend(flatten(self.handlers))
1203 children.append(self.else_)
1204 return tuple(children)
1205
1206 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001207 nodelist = []
1208 nodelist.append(self.body)
1209 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001210 if self.else_ is not None:
1211 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001212 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001213
1214 def __repr__(self):
1215 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1216
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001217class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001218 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001219 self.body = body
1220 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001221 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001222
1223 def getChildren(self):
1224 return self.body, self.final
1225
1226 def getChildNodes(self):
1227 return self.body, self.final
1228
1229 def __repr__(self):
1230 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1231
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001232class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001233 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001234 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001235 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001236
1237 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001238 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001239
1240 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001241 nodelist = []
1242 nodelist.extend(flatten_nodes(self.nodes))
1243 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001244
1245 def __repr__(self):
1246 return "Tuple(%s)" % (repr(self.nodes),)
1247
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001248class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001249 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001250 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001251 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001252
1253 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001254 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001255
1256 def getChildNodes(self):
1257 return self.expr,
1258
1259 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001260 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001261
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001262class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001263 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001264 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001265 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001266
1267 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001268 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001269
1270 def getChildNodes(self):
1271 return self.expr,
1272
1273 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001274 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001275
1276class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001277 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001278 self.test = test
1279 self.body = body
1280 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001281 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001282
1283 def getChildren(self):
1284 children = []
1285 children.append(self.test)
1286 children.append(self.body)
1287 children.append(self.else_)
1288 return tuple(children)
1289
1290 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001291 nodelist = []
1292 nodelist.append(self.test)
1293 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001294 if self.else_ is not None:
1295 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001296 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001297
1298 def __repr__(self):
1299 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1300
Guido van Rossumc2e20742006-02-27 22:32:47 +00001301class With(Node):
1302 def __init__(self, expr, vars, body, lineno=None):
1303 self.expr = expr
1304 self.vars = vars
1305 self.body = body
1306 self.lineno = lineno
1307
1308 def getChildren(self):
1309 children = []
1310 children.append(self.expr)
1311 children.append(self.vars)
1312 children.append(self.body)
1313 return tuple(children)
1314
1315 def getChildNodes(self):
1316 nodelist = []
1317 nodelist.append(self.expr)
1318 if self.vars is not None:
1319 nodelist.append(self.vars)
1320 nodelist.append(self.body)
1321 return tuple(nodelist)
1322
1323 def __repr__(self):
1324 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1325
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001326class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001327 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001328 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001329 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001330
1331 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001332 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001333
1334 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001335 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001336
1337 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001338 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001339
Guido van Rossumcc2b0162007-02-11 06:12:03 +00001340for name, obj in list(globals().items()):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001341 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001342 nodes[name.lower()] = obj