blob: 4794d66da6b282f67c1fc1b0b93ac008898dbba8 [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
Thomas Wouters00e41de2007-02-23 19:56:57 +0000270class Bytes(Node):
271 def __init__(self, value, lineno=None):
272 self.value = value
273 self.lineno = lineno
274
275 def getChildren(self):
276 return self.value,
277
278 def getChildNodes(self):
279 return ()
280
281 def __repr__(self):
282 return "Bytes(%s)" % (repr(self.value),)
283
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000284class CallFunc(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000285 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000286 self.node = node
287 self.args = args
288 self.star_args = star_args
289 self.dstar_args = dstar_args
Jeremy Hylton566d9342004-09-07 15:28:01 +0000290 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000291
292 def getChildren(self):
293 children = []
294 children.append(self.node)
295 children.extend(flatten(self.args))
296 children.append(self.star_args)
297 children.append(self.dstar_args)
298 return tuple(children)
299
300 def getChildNodes(self):
301 nodelist = []
302 nodelist.append(self.node)
303 nodelist.extend(flatten_nodes(self.args))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000304 if self.star_args is not None:
305 nodelist.append(self.star_args)
306 if self.dstar_args is not None:
307 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000308 return tuple(nodelist)
309
310 def __repr__(self):
311 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
312
313class Class(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000314 def __init__(self, name, bases, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000315 self.name = name
316 self.bases = bases
317 self.doc = doc
318 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000319 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000320
321 def getChildren(self):
322 children = []
323 children.append(self.name)
324 children.extend(flatten(self.bases))
325 children.append(self.doc)
326 children.append(self.code)
327 return tuple(children)
328
329 def getChildNodes(self):
330 nodelist = []
331 nodelist.extend(flatten_nodes(self.bases))
332 nodelist.append(self.code)
333 return tuple(nodelist)
334
335 def __repr__(self):
336 return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
337
338class Compare(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000339 def __init__(self, expr, ops, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000340 self.expr = expr
341 self.ops = ops
Jeremy Hylton566d9342004-09-07 15:28:01 +0000342 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000343
344 def getChildren(self):
345 children = []
346 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000347 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000348 return tuple(children)
349
350 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000351 nodelist = []
352 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000353 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000354 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000355
356 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000357 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000358
359class Const(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000360 def __init__(self, value, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000361 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +0000362 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000363
364 def getChildren(self):
365 return self.value,
366
367 def getChildNodes(self):
368 return ()
369
370 def __repr__(self):
371 return "Const(%s)" % (repr(self.value),)
372
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000373class Continue(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000374 def __init__(self, lineno=None):
375 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000376
377 def getChildren(self):
378 return ()
379
380 def getChildNodes(self):
381 return ()
382
383 def __repr__(self):
384 return "Continue()"
385
386class Decorators(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000387 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000388 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000389 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000390
391 def getChildren(self):
392 return tuple(flatten(self.nodes))
393
394 def getChildNodes(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000395 nodelist = []
396 nodelist.extend(flatten_nodes(self.nodes))
397 return tuple(nodelist)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000398
399 def __repr__(self):
400 return "Decorators(%s)" % (repr(self.nodes),)
401
402class Dict(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000403 def __init__(self, items, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000404 self.items = items
Jeremy Hylton566d9342004-09-07 15:28:01 +0000405 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000406
407 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000408 return tuple(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000409
410 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000411 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000412 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000413 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000414
415 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000416 return "Dict(%s)" % (repr(self.items),)
417
418class Discard(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000419 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000420 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000421 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000422
423 def getChildren(self):
424 return self.expr,
425
426 def getChildNodes(self):
427 return self.expr,
428
429 def __repr__(self):
430 return "Discard(%s)" % (repr(self.expr),)
431
432class Div(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000433 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000434 self.left = left
435 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000436 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000437
438 def getChildren(self):
439 return self.left, self.right
440
441 def getChildNodes(self):
442 return self.left, self.right
443
444 def __repr__(self):
445 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
446
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000447class FloorDiv(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000448 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000449 self.left = left
450 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000451 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000452
453 def getChildren(self):
454 return self.left, self.right
455
456 def getChildNodes(self):
457 return self.left, self.right
458
459 def __repr__(self):
460 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000461
462class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000463 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000464 self.assign = assign
465 self.list = list
466 self.body = body
467 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000468 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000469
470 def getChildren(self):
471 children = []
472 children.append(self.assign)
473 children.append(self.list)
474 children.append(self.body)
475 children.append(self.else_)
476 return tuple(children)
477
478 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000479 nodelist = []
480 nodelist.append(self.assign)
481 nodelist.append(self.list)
482 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000483 if self.else_ is not None:
484 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000485 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000486
487 def __repr__(self):
488 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
489
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000490class From(Node):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000491 def __init__(self, modname, names, level, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000492 self.modname = modname
493 self.names = names
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000494 self.level = level
Jeremy Hylton566d9342004-09-07 15:28:01 +0000495 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000496
497 def getChildren(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000498 return self.modname, self.names, self.level
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000499
500 def getChildNodes(self):
501 return ()
502
503 def __repr__(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000504 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000505
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000506class Function(Node):
Neal Norwitzc1505362006-12-28 06:47:50 +0000507 def __init__(self, decorators, name, arguments, defaults, kwonlyargs, returns, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000508 self.decorators = decorators
509 self.name = name
Neal Norwitzc1505362006-12-28 06:47:50 +0000510 self.arguments = arguments
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000511 self.defaults = defaults
Guido van Rossum4f72a782006-10-27 23:31:49 +0000512 self.kwonlyargs = kwonlyargs
Neal Norwitzc1505362006-12-28 06:47:50 +0000513 self.returns = returns
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000514 self.flags = flags
515 self.doc = doc
516 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000517 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000518 self.varargs = self.kwargs = None
519 if flags & CO_VARARGS:
520 self.varargs = 1
521 if flags & CO_VARKEYWORDS:
522 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000523
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000524
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000525 def getChildren(self):
526 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000527 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000528 children.append(self.name)
Neal Norwitzc1505362006-12-28 06:47:50 +0000529 children.extend(flatten(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000530 children.extend(flatten(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000531 children.extend(flatten(self.kwonlyargs))
532 children.append(self.returns)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000533 children.append(self.flags)
534 children.append(self.doc)
535 children.append(self.code)
536 return tuple(children)
537
538 def getChildNodes(self):
539 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000540 if self.decorators is not None:
541 nodelist.append(self.decorators)
Neal Norwitzc1505362006-12-28 06:47:50 +0000542 nodelist.extend(flatten_nodes(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000543 nodelist.extend(flatten_nodes(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000544 nodelist.extend(flatten_nodes(self.kwonlyargs))
545 if self.returns is not None:
546 nodelist.append(self.returns)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000547 nodelist.append(self.code)
548 return tuple(nodelist)
549
550 def __repr__(self):
Neal Norwitzc1505362006-12-28 06:47:50 +0000551 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 +0000552
553class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000554 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000555 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000556 self.lineno = lineno
Neal Norwitzc1505362006-12-28 06:47:50 +0000557 self.arguments = [SimpleArg('.0', None)]
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000558 self.varargs = self.kwargs = None
Guido van Rossum4f72a782006-10-27 23:31:49 +0000559 self.kwonlyargs = ()
Tim Peters39e11fb2006-03-04 02:43:44 +0000560
Guido van Rossum86e58e22006-08-28 15:27:34 +0000561
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000562 def getChildren(self):
563 return self.code,
564
565 def getChildNodes(self):
566 return self.code,
567
568 def __repr__(self):
569 return "GenExpr(%s)" % (repr(self.code),)
570
571class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000572 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000573 self.assign = assign
574 self.iter = iter
575 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000576 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000577 self.is_outmost = False
578
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000579 def getChildren(self):
580 children = []
581 children.append(self.assign)
582 children.append(self.iter)
583 children.extend(flatten(self.ifs))
584 return tuple(children)
585
586 def getChildNodes(self):
587 nodelist = []
588 nodelist.append(self.assign)
589 nodelist.append(self.iter)
590 nodelist.extend(flatten_nodes(self.ifs))
591 return tuple(nodelist)
592
593 def __repr__(self):
594 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
595
596class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000597 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000598 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000599 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000600
601 def getChildren(self):
602 return self.test,
603
604 def getChildNodes(self):
605 return self.test,
606
607 def __repr__(self):
608 return "GenExprIf(%s)" % (repr(self.test),)
609
610class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000611 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000612 self.expr = expr
613 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000614 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000615
616 def getChildren(self):
617 children = []
618 children.append(self.expr)
619 children.extend(flatten(self.quals))
620 return tuple(children)
621
622 def getChildNodes(self):
623 nodelist = []
624 nodelist.append(self.expr)
625 nodelist.extend(flatten_nodes(self.quals))
626 return tuple(nodelist)
627
628 def __repr__(self):
629 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
630
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000631class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000632 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000633 self.expr = expr
634 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000635 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000636
637 def getChildren(self):
638 return self.expr, self.attrname
639
640 def getChildNodes(self):
641 return self.expr,
642
643 def __repr__(self):
644 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
645
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000646class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000647 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000648 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000649 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000650
651 def getChildren(self):
652 return self.names,
653
654 def getChildNodes(self):
655 return ()
656
657 def __repr__(self):
658 return "Global(%s)" % (repr(self.names),)
659
660class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000661 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000662 self.tests = tests
663 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000664 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000665
666 def getChildren(self):
667 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000668 children.extend(flatten(self.tests))
669 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000670 return tuple(children)
671
672 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000673 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000674 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000675 if self.else_ is not None:
676 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000677 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000678
679 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000680 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
681
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000682class IfExp(Node):
683 def __init__(self, test, then, else_, lineno=None):
684 self.test = test
685 self.then = then
686 self.else_ = else_
687 self.lineno = lineno
688
689 def getChildren(self):
690 return self.test, self.then, self.else_
691
692 def getChildNodes(self):
693 return self.test, self.then, self.else_
694
695 def __repr__(self):
696 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
697
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000698class Import(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000699 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000700 self.names = names
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.names,
705
706 def getChildNodes(self):
707 return ()
708
709 def __repr__(self):
710 return "Import(%s)" % (repr(self.names),)
711
712class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000713 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000714 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000715 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000716
717 def getChildren(self):
718 return self.expr,
719
720 def getChildNodes(self):
721 return self.expr,
722
723 def __repr__(self):
724 return "Invert(%s)" % (repr(self.expr),)
725
726class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000727 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000728 self.name = name
729 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000730 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000731
732 def getChildren(self):
733 return self.name, self.expr
734
735 def getChildNodes(self):
736 return self.expr,
737
738 def __repr__(self):
739 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
740
Neal Norwitzc1505362006-12-28 06:47:50 +0000741class Kwarg(Node):
742 def __init__(self, arg, expr, lineno=None):
743 self.arg = arg
744 self.expr = expr
745 self.lineno = lineno
746
747 def getChildren(self):
748 return self.arg, self.expr
749
750 def getChildNodes(self):
751 return self.arg, self.expr
752
753 def __repr__(self):
754 return "Kwarg(%s, %s)" % (repr(self.arg), repr(self.expr))
755
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000756class Lambda(Node):
Neal Norwitzc1505362006-12-28 06:47:50 +0000757 def __init__(self, arguments, defaults, kwonlyargs, flags, code, lineno=None):
758 self.arguments = arguments
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000759 self.defaults = defaults
Guido van Rossum4f72a782006-10-27 23:31:49 +0000760 self.kwonlyargs = kwonlyargs
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000761 self.flags = flags
762 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000763 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000764 self.varargs = self.kwargs = None
765 if flags & CO_VARARGS:
766 self.varargs = 1
767 if flags & CO_VARKEYWORDS:
768 self.kwargs = 1
Neal Norwitzc1505362006-12-28 06:47:50 +0000769 self.returns = None
Tim Peters39e11fb2006-03-04 02:43:44 +0000770
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000771
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000772 def getChildren(self):
773 children = []
Neal Norwitzc1505362006-12-28 06:47:50 +0000774 children.extend(flatten(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000775 children.extend(flatten(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000776 children.extend(flatten(self.kwonlyargs))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000777 children.append(self.flags)
778 children.append(self.code)
779 return tuple(children)
780
781 def getChildNodes(self):
782 nodelist = []
Neal Norwitzc1505362006-12-28 06:47:50 +0000783 nodelist.extend(flatten_nodes(self.arguments))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000784 nodelist.extend(flatten_nodes(self.defaults))
Neal Norwitzc1505362006-12-28 06:47:50 +0000785 nodelist.extend(flatten_nodes(self.kwonlyargs))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000786 nodelist.append(self.code)
787 return tuple(nodelist)
788
789 def __repr__(self):
Neal Norwitzc1505362006-12-28 06:47:50 +0000790 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 +0000791
792class LeftShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000793 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000794 self.left = left
795 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000796 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000797
798 def getChildren(self):
799 return self.left, self.right
800
801 def getChildNodes(self):
802 return self.left, self.right
803
804 def __repr__(self):
805 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
806
807class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000808 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000809 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000810 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000811
812 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000813 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000814
815 def getChildNodes(self):
816 nodelist = []
817 nodelist.extend(flatten_nodes(self.nodes))
818 return tuple(nodelist)
819
820 def __repr__(self):
821 return "List(%s)" % (repr(self.nodes),)
822
823class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000824 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000825 self.expr = expr
826 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000827 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000828
829 def getChildren(self):
830 children = []
831 children.append(self.expr)
832 children.extend(flatten(self.quals))
833 return tuple(children)
834
835 def getChildNodes(self):
836 nodelist = []
837 nodelist.append(self.expr)
838 nodelist.extend(flatten_nodes(self.quals))
839 return tuple(nodelist)
840
841 def __repr__(self):
842 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
843
844class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000845 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000846 self.assign = assign
847 self.list = list
848 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000849 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000850
851 def getChildren(self):
852 children = []
853 children.append(self.assign)
854 children.append(self.list)
855 children.extend(flatten(self.ifs))
856 return tuple(children)
857
858 def getChildNodes(self):
859 nodelist = []
860 nodelist.append(self.assign)
861 nodelist.append(self.list)
862 nodelist.extend(flatten_nodes(self.ifs))
863 return tuple(nodelist)
864
865 def __repr__(self):
866 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
867
868class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000869 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000870 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000871 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000872
873 def getChildren(self):
874 return self.test,
875
876 def getChildNodes(self):
877 return self.test,
878
879 def __repr__(self):
880 return "ListCompIf(%s)" % (repr(self.test),)
881
882class Mod(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000883 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000884 self.left = left
885 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000886 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000887
888 def getChildren(self):
889 return self.left, self.right
890
891 def getChildNodes(self):
892 return self.left, self.right
893
894 def __repr__(self):
895 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000896
897class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000898 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000899 self.doc = doc
900 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000901 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000902
903 def getChildren(self):
904 return self.doc, self.node
905
906 def getChildNodes(self):
907 return self.node,
908
909 def __repr__(self):
910 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
911
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000912class Mul(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000913 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000914 self.left = left
915 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +0000916 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000917
918 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000919 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000920
921 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000922 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000923
924 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000925 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000926
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000927class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000928 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000929 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000930 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000931
932 def getChildren(self):
933 return self.name,
934
935 def getChildNodes(self):
936 return ()
937
938 def __repr__(self):
939 return "Name(%s)" % (repr(self.name),)
940
Neal Norwitzc1505362006-12-28 06:47:50 +0000941class NestedArgs(Node):
942 def __init__(self, args, lineno=None):
943 self.args = args
944 self.lineno = lineno
945
946 def getChildren(self):
947 return tuple(flatten(self.args))
948
949 def getChildNodes(self):
950 nodelist = []
951 nodelist.extend(flatten_nodes(self.args))
952 return tuple(nodelist)
953
954 def __repr__(self):
955 return "NestedArgs(%s)" % (repr(self.args),)
956
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000957class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000958 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000959 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000960 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000961
962 def getChildren(self):
963 return self.expr,
964
965 def getChildNodes(self):
966 return self.expr,
967
968 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000969 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000970
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000971class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000972 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000973 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000974 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000975
976 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000977 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000978
979 def getChildNodes(self):
980 nodelist = []
981 nodelist.extend(flatten_nodes(self.nodes))
982 return tuple(nodelist)
983
984 def __repr__(self):
985 return "Or(%s)" % (repr(self.nodes),)
986
987class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000988 def __init__(self, lineno=None):
989 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000990
991 def getChildren(self):
992 return ()
993
994 def getChildNodes(self):
995 return ()
996
997 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000998 return "Pass()"
999
1000class Power(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001001 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001002 self.left = left
1003 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001004 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001005
1006 def getChildren(self):
1007 return self.left, self.right
1008
1009 def getChildNodes(self):
1010 return self.left, self.right
1011
1012 def __repr__(self):
1013 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001014
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001015class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001016 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001017 self.expr1 = expr1
1018 self.expr2 = expr2
1019 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001020 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001021
1022 def getChildren(self):
1023 children = []
1024 children.append(self.expr1)
1025 children.append(self.expr2)
1026 children.append(self.expr3)
1027 return tuple(children)
1028
1029 def getChildNodes(self):
1030 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001031 if self.expr1 is not None:
1032 nodelist.append(self.expr1)
1033 if self.expr2 is not None:
1034 nodelist.append(self.expr2)
1035 if self.expr3 is not None:
1036 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001037 return tuple(nodelist)
1038
1039 def __repr__(self):
1040 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1041
1042class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001043 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001044 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001045 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001046
1047 def getChildren(self):
1048 return self.value,
1049
1050 def getChildNodes(self):
1051 return self.value,
1052
1053 def __repr__(self):
1054 return "Return(%s)" % (repr(self.value),)
1055
1056class RightShift(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001057 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001058 self.left = left
1059 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001060 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001061
1062 def getChildren(self):
1063 return self.left, self.right
1064
1065 def getChildNodes(self):
1066 return self.left, self.right
1067
1068 def __repr__(self):
1069 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1070
Guido van Rossum86e58e22006-08-28 15:27:34 +00001071class Set(Node):
1072 def __init__(self, items, lineno=None):
1073 self.items = items
1074 self.lineno = lineno
1075
1076 def getChildren(self):
1077 return tuple(flatten(self.items))
1078
1079 def getChildNodes(self):
1080 nodelist = []
1081 nodelist.extend(flatten_nodes(self.items))
1082 return tuple(nodelist)
1083
1084 def __repr__(self):
1085 return "Set(%s)" % (repr(self.items),)
1086
Neal Norwitzc1505362006-12-28 06:47:50 +00001087class SimpleArg(Node):
1088 def __init__(self, name, annotation, lineno=None):
1089 self.name = name
1090 self.annotation = annotation
1091 self.lineno = lineno
1092
1093 def getChildren(self):
1094 children = []
1095 children.append(self.name)
1096 children.append(self.annotation)
1097 return tuple(children)
1098
1099 def getChildNodes(self):
1100 nodelist = []
1101 if self.annotation is not None:
1102 nodelist.append(self.annotation)
1103 return tuple(nodelist)
1104
1105 def __repr__(self):
1106 return "SimpleArg(%s, %s)" % (repr(self.name), repr(self.annotation))
1107
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001108class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001109 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001110 self.expr = expr
1111 self.flags = flags
1112 self.lower = lower
1113 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001114 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001115
1116 def getChildren(self):
1117 children = []
1118 children.append(self.expr)
1119 children.append(self.flags)
1120 children.append(self.lower)
1121 children.append(self.upper)
1122 return tuple(children)
1123
1124 def getChildNodes(self):
1125 nodelist = []
1126 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001127 if self.lower is not None:
1128 nodelist.append(self.lower)
1129 if self.upper is not None:
1130 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001131 return tuple(nodelist)
1132
1133 def __repr__(self):
1134 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1135
1136class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001137 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001138 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001139 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001140
1141 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001142 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001143
1144 def getChildNodes(self):
1145 nodelist = []
1146 nodelist.extend(flatten_nodes(self.nodes))
1147 return tuple(nodelist)
1148
1149 def __repr__(self):
1150 return "Sliceobj(%s)" % (repr(self.nodes),)
1151
1152class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001153 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001154 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001155 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001156
1157 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001158 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001159
1160 def getChildNodes(self):
1161 nodelist = []
1162 nodelist.extend(flatten_nodes(self.nodes))
1163 return tuple(nodelist)
1164
1165 def __repr__(self):
1166 return "Stmt(%s)" % (repr(self.nodes),)
1167
1168class Sub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001169 def __init__(self, (left, right), lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001170 self.left = left
1171 self.right = right
Jeremy Hylton566d9342004-09-07 15:28:01 +00001172 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001173
1174 def getChildren(self):
1175 return self.left, self.right
1176
1177 def getChildNodes(self):
1178 return self.left, self.right
1179
1180 def __repr__(self):
1181 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001182
1183class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001184 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001185 self.expr = expr
1186 self.flags = flags
1187 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001188 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001189
1190 def getChildren(self):
1191 children = []
1192 children.append(self.expr)
1193 children.append(self.flags)
1194 children.extend(flatten(self.subs))
1195 return tuple(children)
1196
1197 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001198 nodelist = []
1199 nodelist.append(self.expr)
1200 nodelist.extend(flatten_nodes(self.subs))
1201 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001202
1203 def __repr__(self):
1204 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1205
1206class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001207 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001208 self.body = body
1209 self.handlers = handlers
1210 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001211 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001212
1213 def getChildren(self):
1214 children = []
1215 children.append(self.body)
1216 children.extend(flatten(self.handlers))
1217 children.append(self.else_)
1218 return tuple(children)
1219
1220 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001221 nodelist = []
1222 nodelist.append(self.body)
1223 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001224 if self.else_ is not None:
1225 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001226 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001227
1228 def __repr__(self):
1229 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1230
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001231class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001232 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001233 self.body = body
1234 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001235 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001236
1237 def getChildren(self):
1238 return self.body, self.final
1239
1240 def getChildNodes(self):
1241 return self.body, self.final
1242
1243 def __repr__(self):
1244 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1245
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001246class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001247 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001248 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001249 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001250
1251 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001252 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001253
1254 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001255 nodelist = []
1256 nodelist.extend(flatten_nodes(self.nodes))
1257 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001258
1259 def __repr__(self):
1260 return "Tuple(%s)" % (repr(self.nodes),)
1261
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001262class UnaryAdd(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 "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001275
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001276class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001277 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001278 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001279 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001280
1281 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001282 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001283
1284 def getChildNodes(self):
1285 return self.expr,
1286
1287 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001288 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001289
1290class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001291 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001292 self.test = test
1293 self.body = body
1294 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001295 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001296
1297 def getChildren(self):
1298 children = []
1299 children.append(self.test)
1300 children.append(self.body)
1301 children.append(self.else_)
1302 return tuple(children)
1303
1304 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001305 nodelist = []
1306 nodelist.append(self.test)
1307 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001308 if self.else_ is not None:
1309 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001310 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001311
1312 def __repr__(self):
1313 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1314
Guido van Rossumc2e20742006-02-27 22:32:47 +00001315class With(Node):
1316 def __init__(self, expr, vars, body, lineno=None):
1317 self.expr = expr
1318 self.vars = vars
1319 self.body = body
1320 self.lineno = lineno
1321
1322 def getChildren(self):
1323 children = []
1324 children.append(self.expr)
1325 children.append(self.vars)
1326 children.append(self.body)
1327 return tuple(children)
1328
1329 def getChildNodes(self):
1330 nodelist = []
1331 nodelist.append(self.expr)
1332 if self.vars is not None:
1333 nodelist.append(self.vars)
1334 nodelist.append(self.body)
1335 return tuple(nodelist)
1336
1337 def __repr__(self):
1338 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1339
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001340class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001341 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001342 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001343 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001344
1345 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001346 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001347
1348 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001349 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001350
1351 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001352 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001353
Guido van Rossumcc2b0162007-02-11 06:12:03 +00001354for name, obj in list(globals().items()):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001355 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001356 nodes[name.lower()] = obj