blob: 6f585b717e692de8b88d4c9ebbc749e24b9782f5 [file] [log] [blame]
Jeremy Hylton628d2892000-10-25 18:02:59 +00001"""Python abstract syntax node definitions
2
3This file is automatically generated.
4"""
5from types import TupleType, ListType
Jeremy Hylton9605c112000-02-08 18:57:32 +00006from consts import CO_VARARGS, CO_VARKEYWORDS
Jeremy Hyltonf968e852000-02-04 00:25:23 +00007
Jeremy Hylton628d2892000-10-25 18:02:59 +00008def flatten(list):
9 l = []
10 for elt in list:
11 t = type(elt)
12 if t is TupleType or t is ListType:
13 for elt2 in flatten(elt):
14 l.append(elt2)
15 else:
16 l.append(elt)
17 return l
18
Jeremy Hylton5477f522001-08-29 18:08:02 +000019def flatten_nodes(list):
20 return [n for n in flatten(list) if isinstance(n, Node)]
21
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +000022def asList(nodearg):
Jeremy Hylton628d2892000-10-25 18:02:59 +000023 l = []
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +000024 for item in nodearg:
Jeremy Hylton628d2892000-10-25 18:02:59 +000025 if hasattr(item, "asList"):
26 l.append(item.asList())
27 else:
28 t = type(item)
29 if t is TupleType or t is ListType:
30 l.append(tuple(asList(item)))
31 else:
32 l.append(item)
33 return l
34
Jeremy Hyltonf968e852000-02-04 00:25:23 +000035nodes = {}
36
Jeremy Hylton5477f522001-08-29 18:08:02 +000037class Node: # an abstract base class
38 lineno = None # provide a lineno for nodes that don't have one
Jeremy Hylton628d2892000-10-25 18:02:59 +000039 def getType(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000040 pass # implemented by subclass
Jeremy Hylton628d2892000-10-25 18:02:59 +000041 def getChildren(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000042 pass # implemented by subclasses
Jeremy Hylton628d2892000-10-25 18:02:59 +000043 def asList(self):
44 return tuple(asList(self.getChildren()))
Jeremy Hylton7713ac22001-08-14 18:59:01 +000045 def getChildNodes(self):
Jeremy Hylton5477f522001-08-29 18:08:02 +000046 pass # implemented by subclasses
Jeremy Hyltonf968e852000-02-04 00:25:23 +000047
48class EmptyNode(Node):
Jeremy Hylton5477f522001-08-29 18:08:02 +000049 pass
Jeremy Hyltonf968e852000-02-04 00:25:23 +000050
Anthony Baxterc2a5a632004-08-02 06:10:11 +000051class Expression(Node):
52 # Expression is an artificial node class to support "eval"
53 nodes["expression"] = "Expression"
54 def __init__(self, node):
55 self.node = node
56
57 def getChildren(self):
58 return self.node,
59
60 def getChildNodes(self):
61 return self.node,
62
63 def __repr__(self):
64 return "Expression(%s)" % (repr(self.node))
65
66class Add(Node):
67 nodes["add"] = "Add"
68 def __init__(self, (left, right)):
69 self.left = left
70 self.right = right
71
72 def getChildren(self):
73 return self.left, self.right
74
75 def getChildNodes(self):
76 return self.left, self.right
77
78 def __repr__(self):
79 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
80
81class And(Node):
82 nodes["and"] = "And"
83 def __init__(self, nodes):
84 self.nodes = nodes
85
86 def getChildren(self):
87 children = []
88 children.extend(flatten(self.nodes))
89 return tuple(children)
90
91 def getChildNodes(self):
92 nodelist = []
93 nodelist.extend(flatten_nodes(self.nodes))
94 return tuple(nodelist)
95
96 def __repr__(self):
97 return "And(%s)" % (repr(self.nodes),)
98
99class AssAttr(Node):
100 nodes["assattr"] = "AssAttr"
101 def __init__(self, expr, attrname, flags):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000102 self.expr = expr
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000103 self.attrname = attrname
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000104 self.flags = flags
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000105
106 def getChildren(self):
107 return self.expr, self.attrname, self.flags
108
109 def getChildNodes(self):
110 return self.expr,
111
112 def __repr__(self):
113 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
114
115class AssList(Node):
116 nodes["asslist"] = "AssList"
117 def __init__(self, nodes):
118 self.nodes = nodes
119
120 def getChildren(self):
121 children = []
122 children.extend(flatten(self.nodes))
123 return tuple(children)
124
125 def getChildNodes(self):
126 nodelist = []
127 nodelist.extend(flatten_nodes(self.nodes))
128 return tuple(nodelist)
129
130 def __repr__(self):
131 return "AssList(%s)" % (repr(self.nodes),)
132
133class AssName(Node):
134 nodes["assname"] = "AssName"
135 def __init__(self, name, flags):
136 self.name = name
137 self.flags = flags
138
139 def getChildren(self):
140 return self.name, self.flags
141
142 def getChildNodes(self):
143 return ()
144
145 def __repr__(self):
146 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
147
148class AssTuple(Node):
149 nodes["asstuple"] = "AssTuple"
150 def __init__(self, nodes):
151 self.nodes = nodes
152
153 def getChildren(self):
154 children = []
155 children.extend(flatten(self.nodes))
156 return tuple(children)
157
158 def getChildNodes(self):
159 nodelist = []
160 nodelist.extend(flatten_nodes(self.nodes))
161 return tuple(nodelist)
162
163 def __repr__(self):
164 return "AssTuple(%s)" % (repr(self.nodes),)
165
166class Assert(Node):
167 nodes["assert"] = "Assert"
168 def __init__(self, test, fail):
169 self.test = test
170 self.fail = fail
171
172 def getChildren(self):
173 children = []
174 children.append(self.test)
175 children.append(self.fail)
176 return tuple(children)
177
178 def getChildNodes(self):
179 nodelist = []
180 nodelist.append(self.test)
181 if self.fail is not None: nodelist.append(self.fail)
182 return tuple(nodelist)
183
184 def __repr__(self):
185 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
186
187class Assign(Node):
188 nodes["assign"] = "Assign"
189 def __init__(self, nodes, expr):
190 self.nodes = nodes
191 self.expr = expr
192
193 def getChildren(self):
194 children = []
195 children.extend(flatten(self.nodes))
196 children.append(self.expr)
197 return tuple(children)
198
199 def getChildNodes(self):
200 nodelist = []
201 nodelist.extend(flatten_nodes(self.nodes))
202 nodelist.append(self.expr)
203 return tuple(nodelist)
204
205 def __repr__(self):
206 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
207
208class AugAssign(Node):
209 nodes["augassign"] = "AugAssign"
210 def __init__(self, node, op, expr):
211 self.node = node
212 self.op = op
213 self.expr = expr
214
215 def getChildren(self):
216 return self.node, self.op, self.expr
217
218 def getChildNodes(self):
219 return self.node, self.expr
220
221 def __repr__(self):
222 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
223
224class Backquote(Node):
225 nodes["backquote"] = "Backquote"
226 def __init__(self, expr):
227 self.expr = expr
228
229 def getChildren(self):
230 return self.expr,
231
232 def getChildNodes(self):
233 return self.expr,
234
235 def __repr__(self):
236 return "Backquote(%s)" % (repr(self.expr),)
237
238class Bitand(Node):
239 nodes["bitand"] = "Bitand"
240 def __init__(self, nodes):
241 self.nodes = nodes
242
243 def getChildren(self):
244 children = []
245 children.extend(flatten(self.nodes))
246 return tuple(children)
247
248 def getChildNodes(self):
249 nodelist = []
250 nodelist.extend(flatten_nodes(self.nodes))
251 return tuple(nodelist)
252
253 def __repr__(self):
254 return "Bitand(%s)" % (repr(self.nodes),)
255
256class Bitor(Node):
257 nodes["bitor"] = "Bitor"
258 def __init__(self, nodes):
259 self.nodes = nodes
260
261 def getChildren(self):
262 children = []
263 children.extend(flatten(self.nodes))
264 return tuple(children)
265
266 def getChildNodes(self):
267 nodelist = []
268 nodelist.extend(flatten_nodes(self.nodes))
269 return tuple(nodelist)
270
271 def __repr__(self):
272 return "Bitor(%s)" % (repr(self.nodes),)
273
274class Bitxor(Node):
275 nodes["bitxor"] = "Bitxor"
276 def __init__(self, nodes):
277 self.nodes = nodes
278
279 def getChildren(self):
280 children = []
281 children.extend(flatten(self.nodes))
282 return tuple(children)
283
284 def getChildNodes(self):
285 nodelist = []
286 nodelist.extend(flatten_nodes(self.nodes))
287 return tuple(nodelist)
288
289 def __repr__(self):
290 return "Bitxor(%s)" % (repr(self.nodes),)
291
292class Break(Node):
293 nodes["break"] = "Break"
294 def __init__(self, ):
295 pass
296
297 def getChildren(self):
298 return ()
299
300 def getChildNodes(self):
301 return ()
302
303 def __repr__(self):
304 return "Break()"
305
306class CallFunc(Node):
307 nodes["callfunc"] = "CallFunc"
308 def __init__(self, node, args, star_args = None, dstar_args = None):
309 self.node = node
310 self.args = args
311 self.star_args = star_args
312 self.dstar_args = dstar_args
313
314 def getChildren(self):
315 children = []
316 children.append(self.node)
317 children.extend(flatten(self.args))
318 children.append(self.star_args)
319 children.append(self.dstar_args)
320 return tuple(children)
321
322 def getChildNodes(self):
323 nodelist = []
324 nodelist.append(self.node)
325 nodelist.extend(flatten_nodes(self.args))
326 if self.star_args is not None: nodelist.append(self.star_args)
327 if self.dstar_args is not None: nodelist.append(self.dstar_args)
328 return tuple(nodelist)
329
330 def __repr__(self):
331 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
332
333class Class(Node):
334 nodes["class"] = "Class"
335 def __init__(self, name, bases, doc, code):
336 self.name = name
337 self.bases = bases
338 self.doc = doc
339 self.code = code
340
341 def getChildren(self):
342 children = []
343 children.append(self.name)
344 children.extend(flatten(self.bases))
345 children.append(self.doc)
346 children.append(self.code)
347 return tuple(children)
348
349 def getChildNodes(self):
350 nodelist = []
351 nodelist.extend(flatten_nodes(self.bases))
352 nodelist.append(self.code)
353 return tuple(nodelist)
354
355 def __repr__(self):
356 return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
357
358class Compare(Node):
359 nodes["compare"] = "Compare"
360 def __init__(self, expr, ops):
361 self.expr = expr
362 self.ops = ops
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000363
364 def getChildren(self):
365 children = []
366 children.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000367 children.extend(flatten(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000368 return tuple(children)
369
370 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000371 nodelist = []
372 nodelist.append(self.expr)
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000373 nodelist.extend(flatten_nodes(self.ops))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000374 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000375
376 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000377 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000378
379class Const(Node):
380 nodes["const"] = "Const"
381 def __init__(self, value):
382 self.value = value
383
384 def getChildren(self):
385 return self.value,
386
387 def getChildNodes(self):
388 return ()
389
390 def __repr__(self):
391 return "Const(%s)" % (repr(self.value),)
392
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000393class Continue(Node):
394 nodes["continue"] = "Continue"
395 def __init__(self, ):
396 pass
397
398 def getChildren(self):
399 return ()
400
401 def getChildNodes(self):
402 return ()
403
404 def __repr__(self):
405 return "Continue()"
406
407class Decorators(Node):
408 nodes["decorators"] = "Decorators"
409 def __init__(self, nodes):
410 self.nodes = nodes
411
412 def getChildren(self):
413 return tuple(flatten(self.nodes))
414
415 def getChildNodes(self):
416 return flatten_nodes(self.nodes)
417
418 def __repr__(self):
419 return "Decorators(%s)" % (repr(self.nodes),)
420
421class Dict(Node):
422 nodes["dict"] = "Dict"
423 def __init__(self, items):
424 self.items = items
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000425
426 def getChildren(self):
427 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000428 children.extend(flatten(self.items))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000429 return tuple(children)
430
431 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000432 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000433 nodelist.extend(flatten_nodes(self.items))
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000434 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000435
436 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000437 return "Dict(%s)" % (repr(self.items),)
438
439class Discard(Node):
440 nodes["discard"] = "Discard"
441 def __init__(self, expr):
442 self.expr = expr
443
444 def getChildren(self):
445 return self.expr,
446
447 def getChildNodes(self):
448 return self.expr,
449
450 def __repr__(self):
451 return "Discard(%s)" % (repr(self.expr),)
452
453class Div(Node):
454 nodes["div"] = "Div"
455 def __init__(self, (left, right)):
456 self.left = left
457 self.right = right
458
459 def getChildren(self):
460 return self.left, self.right
461
462 def getChildNodes(self):
463 return self.left, self.right
464
465 def __repr__(self):
466 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
467
468class Ellipsis(Node):
469 nodes["ellipsis"] = "Ellipsis"
470 def __init__(self, ):
471 pass
472
473 def getChildren(self):
474 return ()
475
476 def getChildNodes(self):
477 return ()
478
479 def __repr__(self):
480 return "Ellipsis()"
481
482class Exec(Node):
483 nodes["exec"] = "Exec"
484 def __init__(self, expr, locals, globals):
485 self.expr = expr
486 self.locals = locals
487 self.globals = globals
488
489 def getChildren(self):
490 children = []
491 children.append(self.expr)
492 children.append(self.locals)
493 children.append(self.globals)
494 return tuple(children)
495
496 def getChildNodes(self):
497 nodelist = []
498 nodelist.append(self.expr)
499 if self.locals is not None: nodelist.append(self.locals)
500 if self.globals is not None: nodelist.append(self.globals)
501 return tuple(nodelist)
502
503 def __repr__(self):
504 return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
505
506class FloorDiv(Node):
507 nodes["floordiv"] = "FloorDiv"
508 def __init__(self, (left, right)):
509 self.left = left
510 self.right = right
511
512 def getChildren(self):
513 return self.left, self.right
514
515 def getChildNodes(self):
516 return self.left, self.right
517
518 def __repr__(self):
519 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000520
521class For(Node):
522 nodes["for"] = "For"
523 def __init__(self, assign, list, body, else_):
524 self.assign = assign
525 self.list = list
526 self.body = body
527 self.else_ = else_
528
529 def getChildren(self):
530 children = []
531 children.append(self.assign)
532 children.append(self.list)
533 children.append(self.body)
534 children.append(self.else_)
535 return tuple(children)
536
537 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000538 nodelist = []
539 nodelist.append(self.assign)
540 nodelist.append(self.list)
541 nodelist.append(self.body)
542 if self.else_ is not None: nodelist.append(self.else_)
543 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000544
545 def __repr__(self):
546 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
547
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000548class From(Node):
549 nodes["from"] = "From"
550 def __init__(self, modname, names):
551 self.modname = modname
552 self.names = names
553
554 def getChildren(self):
555 return self.modname, self.names
556
557 def getChildNodes(self):
558 return ()
559
560 def __repr__(self):
561 return "From(%s, %s)" % (repr(self.modname), repr(self.names))
562
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000563class Function(Node):
564 nodes["function"] = "Function"
565 def __init__(self, decorators, name, argnames, defaults, flags, doc, code):
566 self.decorators = decorators
567 self.name = name
568 self.argnames = argnames
569 self.defaults = defaults
570 self.flags = flags
571 self.doc = doc
572 self.code = code
573 self.varargs = self.kwargs = None
574 if flags & CO_VARARGS:
575 self.varargs = 1
576 if flags & CO_VARKEYWORDS:
577 self.kwargs = 1
578
579
580
581 def getChildren(self):
582 children = []
583 if self.decorators:
584 children.append(flatten(self.decorators.nodes))
585 children.append(self.name)
586 children.append(self.argnames)
587 children.extend(flatten(self.defaults))
588 children.append(self.flags)
589 children.append(self.doc)
590 children.append(self.code)
591 return tuple(children)
592
593 def getChildNodes(self):
594 nodelist = []
595 if self.decorators:
596 nodelist.extend(flatten_nodes(self.decorators.nodes))
597 nodelist.extend(flatten_nodes(self.defaults))
598 nodelist.append(self.code)
599 return tuple(nodelist)
600
601 def __repr__(self):
602 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))
603
604class GenExpr(Node):
605 nodes["genexpr"] = "GenExpr"
606 def __init__(self, code):
607 self.code = code
608 self.argnames = ['[outmost-iterable]']
609 self.varargs = self.kwargs = None
Tim Peters6db15d72004-08-04 02:36:18 +0000610
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000611
612
613 def getChildren(self):
614 return self.code,
615
616 def getChildNodes(self):
617 return self.code,
618
619 def __repr__(self):
620 return "GenExpr(%s)" % (repr(self.code),)
621
622class GenExprFor(Node):
623 nodes["genexprfor"] = "GenExprFor"
624 def __init__(self, assign, iter, ifs):
625 self.assign = assign
626 self.iter = iter
627 self.ifs = ifs
628 self.is_outmost = False
629
630
631 def getChildren(self):
632 children = []
633 children.append(self.assign)
634 children.append(self.iter)
635 children.extend(flatten(self.ifs))
636 return tuple(children)
637
638 def getChildNodes(self):
639 nodelist = []
640 nodelist.append(self.assign)
641 nodelist.append(self.iter)
642 nodelist.extend(flatten_nodes(self.ifs))
643 return tuple(nodelist)
644
645 def __repr__(self):
646 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
647
648class GenExprIf(Node):
649 nodes["genexprif"] = "GenExprIf"
650 def __init__(self, test):
651 self.test = test
652
653 def getChildren(self):
654 return self.test,
655
656 def getChildNodes(self):
657 return self.test,
658
659 def __repr__(self):
660 return "GenExprIf(%s)" % (repr(self.test),)
661
662class GenExprInner(Node):
663 nodes["genexprinner"] = "GenExprInner"
664 def __init__(self, expr, quals):
665 self.expr = expr
666 self.quals = quals
667
668 def getChildren(self):
669 children = []
670 children.append(self.expr)
671 children.extend(flatten(self.quals))
672 return tuple(children)
673
674 def getChildNodes(self):
675 nodelist = []
676 nodelist.append(self.expr)
677 nodelist.extend(flatten_nodes(self.quals))
678 return tuple(nodelist)
679
680 def __repr__(self):
681 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
682
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000683class Getattr(Node):
684 nodes["getattr"] = "Getattr"
685 def __init__(self, expr, attrname):
686 self.expr = expr
687 self.attrname = attrname
688
689 def getChildren(self):
690 return self.expr, self.attrname
691
692 def getChildNodes(self):
693 return self.expr,
694
695 def __repr__(self):
696 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
697
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000698class Global(Node):
699 nodes["global"] = "Global"
700 def __init__(self, names):
701 self.names = names
702
703 def getChildren(self):
704 return self.names,
705
706 def getChildNodes(self):
707 return ()
708
709 def __repr__(self):
710 return "Global(%s)" % (repr(self.names),)
711
712class If(Node):
713 nodes["if"] = "If"
714 def __init__(self, tests, else_):
715 self.tests = tests
716 self.else_ = else_
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000717
718 def getChildren(self):
719 children = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000720 children.extend(flatten(self.tests))
721 children.append(self.else_)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000722 return tuple(children)
723
724 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000725 nodelist = []
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000726 nodelist.extend(flatten_nodes(self.tests))
727 if self.else_ is not None: nodelist.append(self.else_)
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000728 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000729
730 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000731 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
732
733class Import(Node):
734 nodes["import"] = "Import"
735 def __init__(self, names):
736 self.names = names
737
738 def getChildren(self):
739 return self.names,
740
741 def getChildNodes(self):
742 return ()
743
744 def __repr__(self):
745 return "Import(%s)" % (repr(self.names),)
746
747class Invert(Node):
748 nodes["invert"] = "Invert"
749 def __init__(self, expr):
750 self.expr = expr
751
752 def getChildren(self):
753 return self.expr,
754
755 def getChildNodes(self):
756 return self.expr,
757
758 def __repr__(self):
759 return "Invert(%s)" % (repr(self.expr),)
760
761class Keyword(Node):
762 nodes["keyword"] = "Keyword"
763 def __init__(self, name, expr):
764 self.name = name
765 self.expr = expr
766
767 def getChildren(self):
768 return self.name, self.expr
769
770 def getChildNodes(self):
771 return self.expr,
772
773 def __repr__(self):
774 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
775
776class Lambda(Node):
777 nodes["lambda"] = "Lambda"
778 def __init__(self, argnames, defaults, flags, code):
779 self.argnames = argnames
780 self.defaults = defaults
781 self.flags = flags
782 self.code = code
783 self.varargs = self.kwargs = None
784 if flags & CO_VARARGS:
785 self.varargs = 1
786 if flags & CO_VARKEYWORDS:
787 self.kwargs = 1
Tim Peters6db15d72004-08-04 02:36:18 +0000788
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000789
790
791 def getChildren(self):
792 children = []
793 children.append(self.argnames)
794 children.extend(flatten(self.defaults))
795 children.append(self.flags)
796 children.append(self.code)
797 return tuple(children)
798
799 def getChildNodes(self):
800 nodelist = []
801 nodelist.extend(flatten_nodes(self.defaults))
802 nodelist.append(self.code)
803 return tuple(nodelist)
804
805 def __repr__(self):
806 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
807
808class LeftShift(Node):
809 nodes["leftshift"] = "LeftShift"
810 def __init__(self, (left, right)):
811 self.left = left
812 self.right = right
813
814 def getChildren(self):
815 return self.left, self.right
816
817 def getChildNodes(self):
818 return self.left, self.right
819
820 def __repr__(self):
821 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
822
823class List(Node):
824 nodes["list"] = "List"
825 def __init__(self, nodes):
826 self.nodes = nodes
827
828 def getChildren(self):
829 children = []
830 children.extend(flatten(self.nodes))
831 return tuple(children)
832
833 def getChildNodes(self):
834 nodelist = []
835 nodelist.extend(flatten_nodes(self.nodes))
836 return tuple(nodelist)
837
838 def __repr__(self):
839 return "List(%s)" % (repr(self.nodes),)
840
841class ListComp(Node):
842 nodes["listcomp"] = "ListComp"
843 def __init__(self, expr, quals):
844 self.expr = expr
845 self.quals = quals
846
847 def getChildren(self):
848 children = []
849 children.append(self.expr)
850 children.extend(flatten(self.quals))
851 return tuple(children)
852
853 def getChildNodes(self):
854 nodelist = []
855 nodelist.append(self.expr)
856 nodelist.extend(flatten_nodes(self.quals))
857 return tuple(nodelist)
858
859 def __repr__(self):
860 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
861
862class ListCompFor(Node):
863 nodes["listcompfor"] = "ListCompFor"
864 def __init__(self, assign, list, ifs):
865 self.assign = assign
866 self.list = list
867 self.ifs = ifs
868
869 def getChildren(self):
870 children = []
871 children.append(self.assign)
872 children.append(self.list)
873 children.extend(flatten(self.ifs))
874 return tuple(children)
875
876 def getChildNodes(self):
877 nodelist = []
878 nodelist.append(self.assign)
879 nodelist.append(self.list)
880 nodelist.extend(flatten_nodes(self.ifs))
881 return tuple(nodelist)
882
883 def __repr__(self):
884 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
885
886class ListCompIf(Node):
887 nodes["listcompif"] = "ListCompIf"
888 def __init__(self, test):
889 self.test = test
890
891 def getChildren(self):
892 return self.test,
893
894 def getChildNodes(self):
895 return self.test,
896
897 def __repr__(self):
898 return "ListCompIf(%s)" % (repr(self.test),)
899
900class Mod(Node):
901 nodes["mod"] = "Mod"
902 def __init__(self, (left, right)):
903 self.left = left
904 self.right = right
905
906 def getChildren(self):
907 return self.left, self.right
908
909 def getChildNodes(self):
910 return self.left, self.right
911
912 def __repr__(self):
913 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000914
915class Module(Node):
916 nodes["module"] = "Module"
917 def __init__(self, doc, node):
918 self.doc = doc
919 self.node = node
920
921 def getChildren(self):
922 return self.doc, self.node
923
924 def getChildNodes(self):
925 return self.node,
926
927 def __repr__(self):
928 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
929
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000930class Mul(Node):
931 nodes["mul"] = "Mul"
932 def __init__(self, (left, right)):
933 self.left = left
934 self.right = right
Barry Warsaw52acb492001-12-21 20:04:22 +0000935
936 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000937 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000938
939 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000940 return self.left, self.right
Barry Warsaw52acb492001-12-21 20:04:22 +0000941
942 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000943 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
Barry Warsaw52acb492001-12-21 20:04:22 +0000944
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000945class Name(Node):
946 nodes["name"] = "Name"
947 def __init__(self, name):
948 self.name = name
949
950 def getChildren(self):
951 return self.name,
952
953 def getChildNodes(self):
954 return ()
955
956 def __repr__(self):
957 return "Name(%s)" % (repr(self.name),)
958
959class Not(Node):
960 nodes["not"] = "Not"
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000961 def __init__(self, expr):
962 self.expr = expr
963
964 def getChildren(self):
965 return self.expr,
966
967 def getChildNodes(self):
968 return self.expr,
969
970 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000971 return "Not(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000972
Anthony Baxterc2a5a632004-08-02 06:10:11 +0000973class Or(Node):
974 nodes["or"] = "Or"
975 def __init__(self, nodes):
976 self.nodes = nodes
977
978 def getChildren(self):
979 children = []
980 children.extend(flatten(self.nodes))
981 return tuple(children)
982
983 def getChildNodes(self):
984 nodelist = []
985 nodelist.extend(flatten_nodes(self.nodes))
986 return tuple(nodelist)
987
988 def __repr__(self):
989 return "Or(%s)" % (repr(self.nodes),)
990
991class Pass(Node):
992 nodes["pass"] = "Pass"
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000993 def __init__(self, ):
994 pass
995
996 def getChildren(self):
997 return ()
998
999 def getChildNodes(self):
1000 return ()
1001
1002 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001003 return "Pass()"
1004
1005class Power(Node):
1006 nodes["power"] = "Power"
1007 def __init__(self, (left, right)):
1008 self.left = left
1009 self.right = right
1010
1011 def getChildren(self):
1012 return self.left, self.right
1013
1014 def getChildNodes(self):
1015 return self.left, self.right
1016
1017 def __repr__(self):
1018 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001019
1020class Print(Node):
1021 nodes["print"] = "Print"
1022 def __init__(self, nodes, dest):
1023 self.nodes = nodes
1024 self.dest = dest
1025
1026 def getChildren(self):
1027 children = []
1028 children.extend(flatten(self.nodes))
1029 children.append(self.dest)
1030 return tuple(children)
1031
1032 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001033 nodelist = []
1034 nodelist.extend(flatten_nodes(self.nodes))
1035 if self.dest is not None: nodelist.append(self.dest)
1036 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001037
1038 def __repr__(self):
1039 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1040
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001041class Printnl(Node):
1042 nodes["printnl"] = "Printnl"
1043 def __init__(self, nodes, dest):
1044 self.nodes = nodes
1045 self.dest = dest
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001046
1047 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001048 children = []
1049 children.extend(flatten(self.nodes))
1050 children.append(self.dest)
1051 return tuple(children)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001052
1053 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001054 nodelist = []
1055 nodelist.extend(flatten_nodes(self.nodes))
1056 if self.dest is not None: nodelist.append(self.dest)
1057 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001058
1059 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001060 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1061
1062class Raise(Node):
1063 nodes["raise"] = "Raise"
1064 def __init__(self, expr1, expr2, expr3):
1065 self.expr1 = expr1
1066 self.expr2 = expr2
1067 self.expr3 = expr3
1068
1069 def getChildren(self):
1070 children = []
1071 children.append(self.expr1)
1072 children.append(self.expr2)
1073 children.append(self.expr3)
1074 return tuple(children)
1075
1076 def getChildNodes(self):
1077 nodelist = []
1078 if self.expr1 is not None: nodelist.append(self.expr1)
1079 if self.expr2 is not None: nodelist.append(self.expr2)
1080 if self.expr3 is not None: nodelist.append(self.expr3)
1081 return tuple(nodelist)
1082
1083 def __repr__(self):
1084 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1085
1086class Return(Node):
1087 nodes["return"] = "Return"
1088 def __init__(self, value):
1089 self.value = value
1090
1091 def getChildren(self):
1092 return self.value,
1093
1094 def getChildNodes(self):
1095 return self.value,
1096
1097 def __repr__(self):
1098 return "Return(%s)" % (repr(self.value),)
1099
1100class RightShift(Node):
1101 nodes["rightshift"] = "RightShift"
1102 def __init__(self, (left, right)):
1103 self.left = left
1104 self.right = right
1105
1106 def getChildren(self):
1107 return self.left, self.right
1108
1109 def getChildNodes(self):
1110 return self.left, self.right
1111
1112 def __repr__(self):
1113 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1114
1115class Slice(Node):
1116 nodes["slice"] = "Slice"
1117 def __init__(self, expr, flags, lower, upper):
1118 self.expr = expr
1119 self.flags = flags
1120 self.lower = lower
1121 self.upper = upper
1122
1123 def getChildren(self):
1124 children = []
1125 children.append(self.expr)
1126 children.append(self.flags)
1127 children.append(self.lower)
1128 children.append(self.upper)
1129 return tuple(children)
1130
1131 def getChildNodes(self):
1132 nodelist = []
1133 nodelist.append(self.expr)
1134 if self.lower is not None: nodelist.append(self.lower)
1135 if self.upper is not None: nodelist.append(self.upper)
1136 return tuple(nodelist)
1137
1138 def __repr__(self):
1139 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1140
1141class Sliceobj(Node):
1142 nodes["sliceobj"] = "Sliceobj"
1143 def __init__(self, nodes):
1144 self.nodes = nodes
1145
1146 def getChildren(self):
1147 children = []
1148 children.extend(flatten(self.nodes))
1149 return tuple(children)
1150
1151 def getChildNodes(self):
1152 nodelist = []
1153 nodelist.extend(flatten_nodes(self.nodes))
1154 return tuple(nodelist)
1155
1156 def __repr__(self):
1157 return "Sliceobj(%s)" % (repr(self.nodes),)
1158
1159class Stmt(Node):
1160 nodes["stmt"] = "Stmt"
1161 def __init__(self, nodes):
1162 self.nodes = nodes
1163
1164 def getChildren(self):
1165 children = []
1166 children.extend(flatten(self.nodes))
1167 return tuple(children)
1168
1169 def getChildNodes(self):
1170 nodelist = []
1171 nodelist.extend(flatten_nodes(self.nodes))
1172 return tuple(nodelist)
1173
1174 def __repr__(self):
1175 return "Stmt(%s)" % (repr(self.nodes),)
1176
1177class Sub(Node):
1178 nodes["sub"] = "Sub"
1179 def __init__(self, (left, right)):
1180 self.left = left
1181 self.right = right
1182
1183 def getChildren(self):
1184 return self.left, self.right
1185
1186 def getChildNodes(self):
1187 return self.left, self.right
1188
1189 def __repr__(self):
1190 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001191
1192class Subscript(Node):
1193 nodes["subscript"] = "Subscript"
1194 def __init__(self, expr, flags, subs):
1195 self.expr = expr
1196 self.flags = flags
1197 self.subs = subs
1198
1199 def getChildren(self):
1200 children = []
1201 children.append(self.expr)
1202 children.append(self.flags)
1203 children.extend(flatten(self.subs))
1204 return tuple(children)
1205
1206 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001207 nodelist = []
1208 nodelist.append(self.expr)
1209 nodelist.extend(flatten_nodes(self.subs))
1210 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001211
1212 def __repr__(self):
1213 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1214
1215class TryExcept(Node):
1216 nodes["tryexcept"] = "TryExcept"
1217 def __init__(self, body, handlers, else_):
1218 self.body = body
1219 self.handlers = handlers
1220 self.else_ = else_
1221
1222 def getChildren(self):
1223 children = []
1224 children.append(self.body)
1225 children.extend(flatten(self.handlers))
1226 children.append(self.else_)
1227 return tuple(children)
1228
1229 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001230 nodelist = []
1231 nodelist.append(self.body)
1232 nodelist.extend(flatten_nodes(self.handlers))
1233 if self.else_ is not None: nodelist.append(self.else_)
1234 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001235
1236 def __repr__(self):
1237 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1238
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001239class TryFinally(Node):
1240 nodes["tryfinally"] = "TryFinally"
1241 def __init__(self, body, final):
1242 self.body = body
1243 self.final = final
1244
1245 def getChildren(self):
1246 return self.body, self.final
1247
1248 def getChildNodes(self):
1249 return self.body, self.final
1250
1251 def __repr__(self):
1252 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1253
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001254class Tuple(Node):
1255 nodes["tuple"] = "Tuple"
1256 def __init__(self, nodes):
1257 self.nodes = nodes
1258
1259 def getChildren(self):
1260 children = []
1261 children.extend(flatten(self.nodes))
1262 return tuple(children)
1263
1264 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001265 nodelist = []
1266 nodelist.extend(flatten_nodes(self.nodes))
1267 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001268
1269 def __repr__(self):
1270 return "Tuple(%s)" % (repr(self.nodes),)
1271
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001272class UnaryAdd(Node):
1273 nodes["unaryadd"] = "UnaryAdd"
1274 def __init__(self, expr):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001275 self.expr = expr
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001276
1277 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001278 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001279
1280 def getChildNodes(self):
1281 return self.expr,
1282
1283 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001284 return "UnaryAdd(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001285
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001286class UnarySub(Node):
1287 nodes["unarysub"] = "UnarySub"
1288 def __init__(self, expr):
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001289 self.expr = expr
1290
1291 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001292 return self.expr,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001293
1294 def getChildNodes(self):
1295 return self.expr,
1296
1297 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001298 return "UnarySub(%s)" % (repr(self.expr),)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001299
1300class While(Node):
1301 nodes["while"] = "While"
1302 def __init__(self, test, body, else_):
1303 self.test = test
1304 self.body = body
1305 self.else_ = else_
1306
1307 def getChildren(self):
1308 children = []
1309 children.append(self.test)
1310 children.append(self.body)
1311 children.append(self.else_)
1312 return tuple(children)
1313
1314 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001315 nodelist = []
1316 nodelist.append(self.test)
1317 nodelist.append(self.body)
1318 if self.else_ is not None: nodelist.append(self.else_)
1319 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001320
1321 def __repr__(self):
1322 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1323
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001324class Yield(Node):
1325 nodes["yield"] = "Yield"
1326 def __init__(self, value):
1327 self.value = value
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001328
1329 def getChildren(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001330 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001331
1332 def getChildNodes(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001333 return self.value,
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001334
1335 def __repr__(self):
Anthony Baxterc2a5a632004-08-02 06:10:11 +00001336 return "Yield(%s)" % (repr(self.value),)
Raymond Hettinger354433a2004-05-19 08:20:33 +00001337
Jeremy Hyltonf968e852000-02-04 00:25:23 +00001338klasses = globals()
1339for k in nodes.keys():
Jeremy Hylton628d2892000-10-25 18:02:59 +00001340 nodes[k] = klasses[nodes[k]]