blob: f47434c676f7c74bde61a8761112e047771f3897 [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 Norwitzb902f4e2006-04-03 04:45:34 +00005from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
Jeremy Hyltonf968e852000-02-04 00:25:23 +00006
Neil Schemenauerf3694702005-06-02 05:55:20 +00007def flatten(seq):
Jeremy Hylton628d2892000-10-25 18:02:59 +00008 l = []
Neil Schemenauerf3694702005-06-02 05:55:20 +00009 for elt in seq:
Jeremy Hylton628d2892000-10-25 18:02:59 +000010 t = type(elt)
Jeremy Hylton566d9342004-09-07 15:28:01 +000011 if t is tuple or t is list:
Jeremy Hylton628d2892000-10-25 18:02:59 +000012 for elt2 in flatten(elt):
13 l.append(elt2)
14 else:
15 l.append(elt)
16 return l
17
Neil Schemenauerf3694702005-06-02 05:55:20 +000018def flatten_nodes(seq):
19 return [n for n in flatten(seq) if isinstance(n, Node)]
Jeremy Hylton5477f522001-08-29 18:08:02 +000020
Jeremy Hyltonf968e852000-02-04 00:25:23 +000021nodes = {}
22
Jeremy Hylton566d9342004-09-07 15:28:01 +000023class Node:
24 """Abstract base class for ast nodes."""
Jeremy Hylton628d2892000-10-25 18:02:59 +000025 def getChildren(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000026 pass # implemented by subclasses
Jeremy Hylton566d9342004-09-07 15:28:01 +000027 def __iter__(self):
28 for n in self.getChildren():
29 yield n
30 def asList(self): # for backwards compatibility
31 return self.getChildren()
Jeremy Hylton7713ac22001-08-14 18:59:01 +000032 def getChildNodes(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000033 pass # implemented by subclasses
Jeremy Hyltonf968e852000-02-04 00:25:23 +000034
35class EmptyNode(Node):
Jeremy Hylton5477f522001-08-29 18:08:02 +000036 pass
Jeremy Hyltonf968e852000-02-04 00:25:23 +000037
Anthony Baxterc2a5a632004-08-02 06:10:11 +000038class Expression(Node):
39 # Expression is an artificial node class to support "eval"
40 nodes["expression"] = "Expression"
41 def __init__(self, node):
42 self.node = node
43
44 def getChildren(self):
45 return self.node,
46
47 def getChildNodes(self):
48 return self.node,
49
50 def __repr__(self):
51 return "Expression(%s)" % (repr(self.node))
52
53class Add(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +000054 def __init__(self, leftright, lineno=None):
55 self.left = leftright[0]
56 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +000057 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000058
59 def getChildren(self):
60 return self.left, self.right
61
62 def getChildNodes(self):
63 return self.left, self.right
64
65 def __repr__(self):
66 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
67
68class And(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000069 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +000070 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +000071 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000072
73 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +000074 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +000075
76 def getChildNodes(self):
77 nodelist = []
78 nodelist.extend(flatten_nodes(self.nodes))
79 return tuple(nodelist)
80
81 def __repr__(self):
82 return "And(%s)" % (repr(self.nodes),)
83
84class AssAttr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +000085 def __init__(self, expr, attrname, flags, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000086 self.expr = expr
Anthony Baxterc2a5a632004-08-02 06:10:11 +000087 self.attrname = attrname
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000088 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +000089 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +000090
91 def getChildren(self):
92 return self.expr, self.attrname, self.flags
93
94 def getChildNodes(self):
95 return self.expr,
96
97 def __repr__(self):
98 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
99
100class AssList(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000101 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000102 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000103 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000104
105 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000106 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000107
108 def getChildNodes(self):
109 nodelist = []
110 nodelist.extend(flatten_nodes(self.nodes))
111 return tuple(nodelist)
112
113 def __repr__(self):
114 return "AssList(%s)" % (repr(self.nodes),)
115
116class AssName(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000117 def __init__(self, name, flags, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000118 self.name = name
119 self.flags = flags
Jeremy Hylton566d9342004-09-07 15:28:01 +0000120 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000121
122 def getChildren(self):
123 return self.name, self.flags
124
125 def getChildNodes(self):
126 return ()
127
128 def __repr__(self):
129 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
130
131class AssTuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000132 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000133 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000134 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000135
136 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000137 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000138
139 def getChildNodes(self):
140 nodelist = []
141 nodelist.extend(flatten_nodes(self.nodes))
142 return tuple(nodelist)
143
144 def __repr__(self):
145 return "AssTuple(%s)" % (repr(self.nodes),)
146
147class Assert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000148 def __init__(self, test, fail, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000149 self.test = test
150 self.fail = fail
Jeremy Hylton566d9342004-09-07 15:28:01 +0000151 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000152
153 def getChildren(self):
154 children = []
155 children.append(self.test)
156 children.append(self.fail)
157 return tuple(children)
158
159 def getChildNodes(self):
160 nodelist = []
161 nodelist.append(self.test)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000162 if self.fail is not None:
163 nodelist.append(self.fail)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000164 return tuple(nodelist)
165
166 def __repr__(self):
167 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
168
169class Assign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000170 def __init__(self, nodes, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000171 self.nodes = nodes
172 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000173 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000174
175 def getChildren(self):
176 children = []
177 children.extend(flatten(self.nodes))
178 children.append(self.expr)
179 return tuple(children)
180
181 def getChildNodes(self):
182 nodelist = []
183 nodelist.extend(flatten_nodes(self.nodes))
184 nodelist.append(self.expr)
185 return tuple(nodelist)
186
187 def __repr__(self):
188 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
189
190class AugAssign(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000191 def __init__(self, node, op, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000192 self.node = node
193 self.op = op
194 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000195 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000196
197 def getChildren(self):
198 return self.node, self.op, self.expr
199
200 def getChildNodes(self):
201 return self.node, self.expr
202
203 def __repr__(self):
204 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
205
206class Backquote(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000207 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000208 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000209 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000210
211 def getChildren(self):
212 return self.expr,
213
214 def getChildNodes(self):
215 return self.expr,
216
217 def __repr__(self):
218 return "Backquote(%s)" % (repr(self.expr),)
219
220class Bitand(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000221 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000222 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000223 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000224
225 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000226 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000227
228 def getChildNodes(self):
229 nodelist = []
230 nodelist.extend(flatten_nodes(self.nodes))
231 return tuple(nodelist)
232
233 def __repr__(self):
234 return "Bitand(%s)" % (repr(self.nodes),)
235
236class Bitor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000237 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000238 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000239 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000240
241 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000242 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000243
244 def getChildNodes(self):
245 nodelist = []
246 nodelist.extend(flatten_nodes(self.nodes))
247 return tuple(nodelist)
248
249 def __repr__(self):
250 return "Bitor(%s)" % (repr(self.nodes),)
251
252class Bitxor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000253 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000254 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000255 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000256
257 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000258 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000259
260 def getChildNodes(self):
261 nodelist = []
262 nodelist.extend(flatten_nodes(self.nodes))
263 return tuple(nodelist)
264
265 def __repr__(self):
266 return "Bitxor(%s)" % (repr(self.nodes),)
267
268class Break(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000269 def __init__(self, lineno=None):
270 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000271
272 def getChildren(self):
273 return ()
274
275 def getChildNodes(self):
276 return ()
277
278 def __repr__(self):
279 return "Break()"
280
281class CallFunc(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000282 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000283 self.node = node
284 self.args = args
285 self.star_args = star_args
286 self.dstar_args = dstar_args
Jeremy Hylton566d9342004-09-07 15:28:01 +0000287 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000288
289 def getChildren(self):
290 children = []
291 children.append(self.node)
292 children.extend(flatten(self.args))
293 children.append(self.star_args)
294 children.append(self.dstar_args)
295 return tuple(children)
296
297 def getChildNodes(self):
298 nodelist = []
299 nodelist.append(self.node)
300 nodelist.extend(flatten_nodes(self.args))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000301 if self.star_args is not None:
302 nodelist.append(self.star_args)
303 if self.dstar_args is not None:
304 nodelist.append(self.dstar_args)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000305 return tuple(nodelist)
306
307 def __repr__(self):
308 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
309
310class Class(Node):
Facundo Batista4219da42008-02-25 18:06:00 +0000311 def __init__(self, name, bases, doc, code, decorators = None, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000312 self.name = name
313 self.bases = bases
314 self.doc = doc
315 self.code = code
Facundo Batista4219da42008-02-25 18:06:00 +0000316 self.decorators = decorators
Jeremy Hylton566d9342004-09-07 15:28:01 +0000317 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000318
319 def getChildren(self):
320 children = []
321 children.append(self.name)
322 children.extend(flatten(self.bases))
323 children.append(self.doc)
324 children.append(self.code)
Facundo Batista4219da42008-02-25 18:06:00 +0000325 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000326 return tuple(children)
327
328 def getChildNodes(self):
329 nodelist = []
330 nodelist.extend(flatten_nodes(self.bases))
331 nodelist.append(self.code)
Facundo Batista4219da42008-02-25 18:06:00 +0000332 if self.decorators is not None:
333 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000334 return tuple(nodelist)
335
336 def __repr__(self):
Facundo Batista4219da42008-02-25 18:06:00 +0000337 return "Class(%s, %s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code), repr(self.decorators))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000338
339class Compare(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000340 def __init__(self, expr, ops, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000341 self.expr = expr
342 self.ops = ops
Jeremy Hylton566d9342004-09-07 15:28:01 +0000343 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000344
345 def getChildren(self):
346 children = []
347 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000348 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000349 return tuple(children)
350
351 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000352 nodelist = []
353 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000354 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000355 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000356
357 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000358 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000359
360class Const(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000361 def __init__(self, value, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000362 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +0000363 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000364
365 def getChildren(self):
366 return self.value,
367
368 def getChildNodes(self):
369 return ()
370
371 def __repr__(self):
372 return "Const(%s)" % (repr(self.value),)
373
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000374class Continue(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000375 def __init__(self, lineno=None):
376 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000377
378 def getChildren(self):
379 return ()
380
381 def getChildNodes(self):
382 return ()
383
384 def __repr__(self):
385 return "Continue()"
386
387class Decorators(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000388 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000389 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000390 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000391
392 def getChildren(self):
393 return tuple(flatten(self.nodes))
394
395 def getChildNodes(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000396 nodelist = []
397 nodelist.extend(flatten_nodes(self.nodes))
398 return tuple(nodelist)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000399
400 def __repr__(self):
401 return "Decorators(%s)" % (repr(self.nodes),)
402
403class Dict(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000404 def __init__(self, items, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000405 self.items = items
Jeremy Hylton566d9342004-09-07 15:28:01 +0000406 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000407
408 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000409 return tuple(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000410
411 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000412 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000413 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000414 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000415
416 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000417 return "Dict(%s)" % (repr(self.items),)
418
419class Discard(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000420 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000421 self.expr = expr
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.expr,
426
427 def getChildNodes(self):
428 return self.expr,
429
430 def __repr__(self):
431 return "Discard(%s)" % (repr(self.expr),)
432
433class Div(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +0000434 def __init__(self, leftright, lineno=None):
435 self.left = leftright[0]
436 self.right = leftright[1]
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 "Div((%s, %s))" % (repr(self.left), repr(self.right))
447
448class Ellipsis(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000449 def __init__(self, lineno=None):
450 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000451
452 def getChildren(self):
453 return ()
454
455 def getChildNodes(self):
456 return ()
457
458 def __repr__(self):
459 return "Ellipsis()"
460
461class Exec(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000462 def __init__(self, expr, locals, globals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000463 self.expr = expr
464 self.locals = locals
465 self.globals = globals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000466 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000467
468 def getChildren(self):
469 children = []
470 children.append(self.expr)
471 children.append(self.locals)
472 children.append(self.globals)
473 return tuple(children)
474
475 def getChildNodes(self):
476 nodelist = []
477 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000478 if self.locals is not None:
479 nodelist.append(self.locals)
480 if self.globals is not None:
481 nodelist.append(self.globals)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000482 return tuple(nodelist)
483
484 def __repr__(self):
485 return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
486
487class FloorDiv(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +0000488 def __init__(self, leftright, lineno=None):
489 self.left = leftright[0]
490 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +0000491 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000492
493 def getChildren(self):
494 return self.left, self.right
495
496 def getChildNodes(self):
497 return self.left, self.right
498
499 def __repr__(self):
500 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000501
502class For(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000503 def __init__(self, assign, list, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000504 self.assign = assign
505 self.list = list
506 self.body = body
507 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000508 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000509
510 def getChildren(self):
511 children = []
512 children.append(self.assign)
513 children.append(self.list)
514 children.append(self.body)
515 children.append(self.else_)
516 return tuple(children)
517
518 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000519 nodelist = []
520 nodelist.append(self.assign)
521 nodelist.append(self.list)
522 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +0000523 if self.else_ is not None:
524 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000525 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000526
527 def __repr__(self):
528 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
529
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000530class From(Node):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000531 def __init__(self, modname, names, level, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000532 self.modname = modname
533 self.names = names
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000534 self.level = level
Jeremy Hylton566d9342004-09-07 15:28:01 +0000535 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000536
537 def getChildren(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000538 return self.modname, self.names, self.level
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000539
540 def getChildNodes(self):
541 return ()
542
543 def __repr__(self):
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000544 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000545
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000546class Function(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000547 def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000548 self.decorators = decorators
549 self.name = name
550 self.argnames = argnames
551 self.defaults = defaults
552 self.flags = flags
553 self.doc = doc
554 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000555 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000556 self.varargs = self.kwargs = None
557 if flags & CO_VARARGS:
558 self.varargs = 1
559 if flags & CO_VARKEYWORDS:
560 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000561
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000562
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000563 def getChildren(self):
564 children = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000565 children.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000566 children.append(self.name)
567 children.append(self.argnames)
568 children.extend(flatten(self.defaults))
569 children.append(self.flags)
570 children.append(self.doc)
571 children.append(self.code)
572 return tuple(children)
573
574 def getChildNodes(self):
575 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +0000576 if self.decorators is not None:
577 nodelist.append(self.decorators)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000578 nodelist.extend(flatten_nodes(self.defaults))
579 nodelist.append(self.code)
580 return tuple(nodelist)
581
582 def __repr__(self):
583 return "Function(%s, %s, %s, %s, %s, %s, %s)" % (repr(self.decorators), repr(self.name), repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.doc), repr(self.code))
584
585class GenExpr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000586 def __init__(self, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000587 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000588 self.lineno = lineno
Neil Schemenauer4c6b0d52006-08-16 23:38:05 +0000589 self.argnames = ['.0']
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000590 self.varargs = self.kwargs = None
Tim Peters39e11fb2006-03-04 02:43:44 +0000591
Antoine Pitroub9d49632010-01-04 23:22:44 +0000592
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000593 def getChildren(self):
594 return self.code,
595
596 def getChildNodes(self):
597 return self.code,
598
599 def __repr__(self):
600 return "GenExpr(%s)" % (repr(self.code),)
601
602class GenExprFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000603 def __init__(self, assign, iter, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000604 self.assign = assign
605 self.iter = iter
606 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000607 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000608 self.is_outmost = False
609
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000610 def getChildren(self):
611 children = []
612 children.append(self.assign)
613 children.append(self.iter)
614 children.extend(flatten(self.ifs))
615 return tuple(children)
616
617 def getChildNodes(self):
618 nodelist = []
619 nodelist.append(self.assign)
620 nodelist.append(self.iter)
621 nodelist.extend(flatten_nodes(self.ifs))
622 return tuple(nodelist)
623
624 def __repr__(self):
625 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
626
627class GenExprIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000628 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000629 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000630 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000631
632 def getChildren(self):
633 return self.test,
634
635 def getChildNodes(self):
636 return self.test,
637
638 def __repr__(self):
639 return "GenExprIf(%s)" % (repr(self.test),)
640
641class GenExprInner(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000642 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000643 self.expr = expr
644 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000645 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000646
647 def getChildren(self):
648 children = []
649 children.append(self.expr)
650 children.extend(flatten(self.quals))
651 return tuple(children)
652
653 def getChildNodes(self):
654 nodelist = []
655 nodelist.append(self.expr)
656 nodelist.extend(flatten_nodes(self.quals))
657 return tuple(nodelist)
658
659 def __repr__(self):
660 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
661
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000662class Getattr(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000663 def __init__(self, expr, attrname, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000664 self.expr = expr
665 self.attrname = attrname
Jeremy Hylton566d9342004-09-07 15:28:01 +0000666 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000667
668 def getChildren(self):
669 return self.expr, self.attrname
670
671 def getChildNodes(self):
672 return self.expr,
673
674 def __repr__(self):
675 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
676
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000677class Global(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000678 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000679 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000680 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000681
682 def getChildren(self):
683 return self.names,
684
685 def getChildNodes(self):
686 return ()
687
688 def __repr__(self):
689 return "Global(%s)" % (repr(self.names),)
690
691class If(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000692 def __init__(self, tests, else_, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000693 self.tests = tests
694 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +0000695 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000696
697 def getChildren(self):
698 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000699 children.extend(flatten(self.tests))
700 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000701 return tuple(children)
702
703 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000704 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000705 nodelist.extend(flatten_nodes(self.tests))
Jeremy Hylton566d9342004-09-07 15:28:01 +0000706 if self.else_ is not None:
707 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000708 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000709
710 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000711 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
712
Thomas Woutersfa0cf4f2006-03-03 18:16:20 +0000713class IfExp(Node):
714 def __init__(self, test, then, else_, lineno=None):
715 self.test = test
716 self.then = then
717 self.else_ = else_
718 self.lineno = lineno
719
720 def getChildren(self):
721 return self.test, self.then, self.else_
722
723 def getChildNodes(self):
724 return self.test, self.then, self.else_
725
726 def __repr__(self):
727 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
728
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000729class Import(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000730 def __init__(self, names, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000731 self.names = names
Jeremy Hylton566d9342004-09-07 15:28:01 +0000732 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000733
734 def getChildren(self):
735 return self.names,
736
737 def getChildNodes(self):
738 return ()
739
740 def __repr__(self):
741 return "Import(%s)" % (repr(self.names),)
742
743class Invert(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000744 def __init__(self, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000745 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000746 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000747
748 def getChildren(self):
749 return self.expr,
750
751 def getChildNodes(self):
752 return self.expr,
753
754 def __repr__(self):
755 return "Invert(%s)" % (repr(self.expr),)
756
757class Keyword(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000758 def __init__(self, name, expr, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000759 self.name = name
760 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000761 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000762
763 def getChildren(self):
764 return self.name, self.expr
765
766 def getChildNodes(self):
767 return self.expr,
768
769 def __repr__(self):
770 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
771
772class Lambda(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000773 def __init__(self, argnames, defaults, flags, code, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000774 self.argnames = argnames
775 self.defaults = defaults
776 self.flags = flags
777 self.code = code
Jeremy Hylton566d9342004-09-07 15:28:01 +0000778 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000779 self.varargs = self.kwargs = None
780 if flags & CO_VARARGS:
781 self.varargs = 1
782 if flags & CO_VARKEYWORDS:
783 self.kwargs = 1
Tim Peters39e11fb2006-03-04 02:43:44 +0000784
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000785
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000786 def getChildren(self):
787 children = []
788 children.append(self.argnames)
789 children.extend(flatten(self.defaults))
790 children.append(self.flags)
791 children.append(self.code)
792 return tuple(children)
793
794 def getChildNodes(self):
795 nodelist = []
796 nodelist.extend(flatten_nodes(self.defaults))
797 nodelist.append(self.code)
798 return tuple(nodelist)
799
800 def __repr__(self):
801 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
802
803class LeftShift(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +0000804 def __init__(self, leftright, lineno=None):
805 self.left = leftright[0]
806 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +0000807 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000808
809 def getChildren(self):
810 return self.left, self.right
811
812 def getChildNodes(self):
813 return self.left, self.right
814
815 def __repr__(self):
816 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
817
818class List(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000819 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000820 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000821 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000822
823 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000824 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000825
826 def getChildNodes(self):
827 nodelist = []
828 nodelist.extend(flatten_nodes(self.nodes))
829 return tuple(nodelist)
830
831 def __repr__(self):
832 return "List(%s)" % (repr(self.nodes),)
833
834class ListComp(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000835 def __init__(self, expr, quals, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000836 self.expr = expr
837 self.quals = quals
Jeremy Hylton566d9342004-09-07 15:28:01 +0000838 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000839
840 def getChildren(self):
841 children = []
842 children.append(self.expr)
843 children.extend(flatten(self.quals))
844 return tuple(children)
845
846 def getChildNodes(self):
847 nodelist = []
848 nodelist.append(self.expr)
849 nodelist.extend(flatten_nodes(self.quals))
850 return tuple(nodelist)
851
852 def __repr__(self):
853 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
854
855class ListCompFor(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000856 def __init__(self, assign, list, ifs, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000857 self.assign = assign
858 self.list = list
859 self.ifs = ifs
Jeremy Hylton566d9342004-09-07 15:28:01 +0000860 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000861
862 def getChildren(self):
863 children = []
864 children.append(self.assign)
865 children.append(self.list)
866 children.extend(flatten(self.ifs))
867 return tuple(children)
868
869 def getChildNodes(self):
870 nodelist = []
871 nodelist.append(self.assign)
872 nodelist.append(self.list)
873 nodelist.extend(flatten_nodes(self.ifs))
874 return tuple(nodelist)
875
876 def __repr__(self):
877 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
878
879class ListCompIf(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000880 def __init__(self, test, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000881 self.test = test
Jeremy Hylton566d9342004-09-07 15:28:01 +0000882 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000883
884 def getChildren(self):
885 return self.test,
886
887 def getChildNodes(self):
888 return self.test,
889
890 def __repr__(self):
891 return "ListCompIf(%s)" % (repr(self.test),)
892
893class Mod(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +0000894 def __init__(self, leftright, lineno=None):
895 self.left = leftright[0]
896 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +0000897 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000898
899 def getChildren(self):
900 return self.left, self.right
901
902 def getChildNodes(self):
903 return self.left, self.right
904
905 def __repr__(self):
906 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000907
908class Module(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000909 def __init__(self, doc, node, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000910 self.doc = doc
911 self.node = node
Jeremy Hylton566d9342004-09-07 15:28:01 +0000912 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000913
914 def getChildren(self):
915 return self.doc, self.node
916
917 def getChildNodes(self):
918 return self.node,
919
920 def __repr__(self):
921 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
922
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000923class Mul(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +0000924 def __init__(self, leftright, lineno=None):
925 self.left = leftright[0]
926 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +0000927 self.lineno = lineno
Barry Warsaw52acb492001-12-21 20:04:22 +0000928
929 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000930 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000931
932 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000933 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000934
935 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000936 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000937
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000938class Name(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000939 def __init__(self, name, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000940 self.name = name
Jeremy Hylton566d9342004-09-07 15:28:01 +0000941 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000942
943 def getChildren(self):
944 return self.name,
945
946 def getChildNodes(self):
947 return ()
948
949 def __repr__(self):
950 return "Name(%s)" % (repr(self.name),)
951
952class Not(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000953 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000954 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +0000955 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000956
957 def getChildren(self):
958 return self.expr,
959
960 def getChildNodes(self):
961 return self.expr,
962
963 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000964 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000965
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000966class Or(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000967 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000968 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +0000969 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000970
971 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000972 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000973
974 def getChildNodes(self):
975 nodelist = []
976 nodelist.extend(flatten_nodes(self.nodes))
977 return tuple(nodelist)
978
979 def __repr__(self):
980 return "Or(%s)" % (repr(self.nodes),)
981
982class Pass(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +0000983 def __init__(self, lineno=None):
984 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000985
986 def getChildren(self):
987 return ()
988
989 def getChildNodes(self):
990 return ()
991
992 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000993 return "Pass()"
994
995class Power(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +0000996 def __init__(self, leftright, lineno=None):
997 self.left = leftright[0]
998 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +0000999 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001000
1001 def getChildren(self):
1002 return self.left, self.right
1003
1004 def getChildNodes(self):
1005 return self.left, self.right
1006
1007 def __repr__(self):
1008 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001009
1010class Print(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001011 def __init__(self, nodes, dest, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001012 self.nodes = nodes
1013 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +00001014 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001015
1016 def getChildren(self):
1017 children = []
1018 children.extend(flatten(self.nodes))
1019 children.append(self.dest)
1020 return tuple(children)
1021
1022 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001023 nodelist = []
1024 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001025 if self.dest is not None:
1026 nodelist.append(self.dest)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001027 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001028
1029 def __repr__(self):
1030 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1031
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001032class Printnl(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001033 def __init__(self, nodes, dest, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001034 self.nodes = nodes
1035 self.dest = dest
Jeremy Hylton566d9342004-09-07 15:28:01 +00001036 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001037
1038 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001039 children = []
1040 children.extend(flatten(self.nodes))
1041 children.append(self.dest)
1042 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001043
1044 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001045 nodelist = []
1046 nodelist.extend(flatten_nodes(self.nodes))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001047 if self.dest is not None:
1048 nodelist.append(self.dest)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001049 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001050
1051 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001052 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1053
1054class Raise(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001055 def __init__(self, expr1, expr2, expr3, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001056 self.expr1 = expr1
1057 self.expr2 = expr2
1058 self.expr3 = expr3
Jeremy Hylton566d9342004-09-07 15:28:01 +00001059 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001060
1061 def getChildren(self):
1062 children = []
1063 children.append(self.expr1)
1064 children.append(self.expr2)
1065 children.append(self.expr3)
1066 return tuple(children)
1067
1068 def getChildNodes(self):
1069 nodelist = []
Jeremy Hylton566d9342004-09-07 15:28:01 +00001070 if self.expr1 is not None:
1071 nodelist.append(self.expr1)
1072 if self.expr2 is not None:
1073 nodelist.append(self.expr2)
1074 if self.expr3 is not None:
1075 nodelist.append(self.expr3)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001076 return tuple(nodelist)
1077
1078 def __repr__(self):
1079 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1080
1081class Return(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001082 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001083 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001084 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001085
1086 def getChildren(self):
1087 return self.value,
1088
1089 def getChildNodes(self):
1090 return self.value,
1091
1092 def __repr__(self):
1093 return "Return(%s)" % (repr(self.value),)
1094
1095class RightShift(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +00001096 def __init__(self, leftright, lineno=None):
1097 self.left = leftright[0]
1098 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +00001099 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001100
1101 def getChildren(self):
1102 return self.left, self.right
1103
1104 def getChildNodes(self):
1105 return self.left, self.right
1106
1107 def __repr__(self):
1108 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1109
Alexandre Vassalottiee936a22010-01-09 23:35:54 +00001110class Set(Node):
1111 def __init__(self, nodes, lineno=None):
1112 self.nodes = nodes
1113 self.lineno = lineno
1114
1115 def getChildren(self):
1116 return tuple(flatten(self.nodes))
1117
1118 def getChildNodes(self):
1119 nodelist = []
1120 nodelist.extend(flatten_nodes(self.nodes))
1121 return tuple(nodelist)
1122
1123 def __repr__(self):
1124 return "Set(%s)" % (repr(self.nodes),)
1125
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001126class Slice(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001127 def __init__(self, expr, flags, lower, upper, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001128 self.expr = expr
1129 self.flags = flags
1130 self.lower = lower
1131 self.upper = upper
Jeremy Hylton566d9342004-09-07 15:28:01 +00001132 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001133
1134 def getChildren(self):
1135 children = []
1136 children.append(self.expr)
1137 children.append(self.flags)
1138 children.append(self.lower)
1139 children.append(self.upper)
1140 return tuple(children)
1141
1142 def getChildNodes(self):
1143 nodelist = []
1144 nodelist.append(self.expr)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001145 if self.lower is not None:
1146 nodelist.append(self.lower)
1147 if self.upper is not None:
1148 nodelist.append(self.upper)
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001149 return tuple(nodelist)
1150
1151 def __repr__(self):
1152 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1153
1154class Sliceobj(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001155 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001156 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001157 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001158
1159 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001160 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001161
1162 def getChildNodes(self):
1163 nodelist = []
1164 nodelist.extend(flatten_nodes(self.nodes))
1165 return tuple(nodelist)
1166
1167 def __repr__(self):
1168 return "Sliceobj(%s)" % (repr(self.nodes),)
1169
1170class Stmt(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001171 def __init__(self, nodes, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001172 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001173 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001174
1175 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001176 return tuple(flatten(self.nodes))
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001177
1178 def getChildNodes(self):
1179 nodelist = []
1180 nodelist.extend(flatten_nodes(self.nodes))
1181 return tuple(nodelist)
1182
1183 def __repr__(self):
1184 return "Stmt(%s)" % (repr(self.nodes),)
1185
1186class Sub(Node):
Antoine Pitroub9d49632010-01-04 23:22:44 +00001187 def __init__(self, leftright, lineno=None):
1188 self.left = leftright[0]
1189 self.right = leftright[1]
Jeremy Hylton566d9342004-09-07 15:28:01 +00001190 self.lineno = lineno
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001191
1192 def getChildren(self):
1193 return self.left, self.right
1194
1195 def getChildNodes(self):
1196 return self.left, self.right
1197
1198 def __repr__(self):
1199 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001200
1201class Subscript(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001202 def __init__(self, expr, flags, subs, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001203 self.expr = expr
1204 self.flags = flags
1205 self.subs = subs
Jeremy Hylton566d9342004-09-07 15:28:01 +00001206 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001207
1208 def getChildren(self):
1209 children = []
1210 children.append(self.expr)
1211 children.append(self.flags)
1212 children.extend(flatten(self.subs))
1213 return tuple(children)
1214
1215 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001216 nodelist = []
1217 nodelist.append(self.expr)
1218 nodelist.extend(flatten_nodes(self.subs))
1219 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001220
1221 def __repr__(self):
1222 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1223
1224class TryExcept(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001225 def __init__(self, body, handlers, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001226 self.body = body
1227 self.handlers = handlers
1228 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001229 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001230
1231 def getChildren(self):
1232 children = []
1233 children.append(self.body)
1234 children.extend(flatten(self.handlers))
1235 children.append(self.else_)
1236 return tuple(children)
1237
1238 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001239 nodelist = []
1240 nodelist.append(self.body)
1241 nodelist.extend(flatten_nodes(self.handlers))
Jeremy Hylton566d9342004-09-07 15:28:01 +00001242 if self.else_ is not None:
1243 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001244 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001245
1246 def __repr__(self):
1247 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1248
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001249class TryFinally(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001250 def __init__(self, body, final, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001251 self.body = body
1252 self.final = final
Jeremy Hylton566d9342004-09-07 15:28:01 +00001253 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001254
1255 def getChildren(self):
1256 return self.body, self.final
1257
1258 def getChildNodes(self):
1259 return self.body, self.final
1260
1261 def __repr__(self):
1262 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1263
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001264class Tuple(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001265 def __init__(self, nodes, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001266 self.nodes = nodes
Jeremy Hylton566d9342004-09-07 15:28:01 +00001267 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001268
1269 def getChildren(self):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001270 return tuple(flatten(self.nodes))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001271
1272 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001273 nodelist = []
1274 nodelist.extend(flatten_nodes(self.nodes))
1275 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001276
1277 def __repr__(self):
1278 return "Tuple(%s)" % (repr(self.nodes),)
1279
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001280class UnaryAdd(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001281 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001282 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001283 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001284
1285 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001286 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001287
1288 def getChildNodes(self):
1289 return self.expr,
1290
1291 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001292 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001293
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001294class UnarySub(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001295 def __init__(self, expr, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001296 self.expr = expr
Jeremy Hylton566d9342004-09-07 15:28:01 +00001297 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001298
1299 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001300 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001301
1302 def getChildNodes(self):
1303 return self.expr,
1304
1305 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001306 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001307
1308class While(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001309 def __init__(self, test, body, else_, lineno=None):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001310 self.test = test
1311 self.body = body
1312 self.else_ = else_
Jeremy Hylton566d9342004-09-07 15:28:01 +00001313 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001314
1315 def getChildren(self):
1316 children = []
1317 children.append(self.test)
1318 children.append(self.body)
1319 children.append(self.else_)
1320 return tuple(children)
1321
1322 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001323 nodelist = []
1324 nodelist.append(self.test)
1325 nodelist.append(self.body)
Jeremy Hylton566d9342004-09-07 15:28:01 +00001326 if self.else_ is not None:
1327 nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001328 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001329
1330 def __repr__(self):
1331 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1332
Guido van Rossumc2e20742006-02-27 22:32:47 +00001333class With(Node):
1334 def __init__(self, expr, vars, body, lineno=None):
1335 self.expr = expr
1336 self.vars = vars
1337 self.body = body
1338 self.lineno = lineno
1339
1340 def getChildren(self):
1341 children = []
1342 children.append(self.expr)
1343 children.append(self.vars)
1344 children.append(self.body)
1345 return tuple(children)
1346
1347 def getChildNodes(self):
1348 nodelist = []
1349 nodelist.append(self.expr)
1350 if self.vars is not None:
1351 nodelist.append(self.vars)
1352 nodelist.append(self.body)
1353 return tuple(nodelist)
1354
1355 def __repr__(self):
1356 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1357
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001358class Yield(Node):
Jeremy Hylton566d9342004-09-07 15:28:01 +00001359 def __init__(self, value, lineno=None):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001360 self.value = value
Jeremy Hylton566d9342004-09-07 15:28:01 +00001361 self.lineno = lineno
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001362
1363 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001364 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001365
1366 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001367 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001368
1369 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001370 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001371
Jeremy Hylton566d9342004-09-07 15:28:01 +00001372for name, obj in globals().items():
1373 if isinstance(obj, type) and issubclass(obj, Node):
Tim Peters0e9980f2004-09-12 03:49:31 +00001374 nodes[name.lower()] = obj