Issue #7092: Fix the DeprecationWarnings emitted by the standard library
[python.git] / Lib / compiler / ast.py
blobf92307759ef9358a9a92a4d595a322ef50044fb2
1 """Python abstract syntax node definitions
3 This file is automatically generated by Tools/compiler/astgen.py
4 """
5 from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
7 def flatten(seq):
8 l = []
9 for elt in seq:
10 t = type(elt)
11 if t is tuple or t is list:
12 for elt2 in flatten(elt):
13 l.append(elt2)
14 else:
15 l.append(elt)
16 return l
18 def flatten_nodes(seq):
19 return [n for n in flatten(seq) if isinstance(n, Node)]
21 nodes = {}
23 class Node:
24 """Abstract base class for ast nodes."""
25 def getChildren(self):
26 pass # implemented by subclasses
27 def __iter__(self):
28 for n in self.getChildren():
29 yield n
30 def asList(self): # for backwards compatibility
31 return self.getChildren()
32 def getChildNodes(self):
33 pass # implemented by subclasses
35 class EmptyNode(Node):
36 pass
38 class 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
44 def getChildren(self):
45 return self.node,
47 def getChildNodes(self):
48 return self.node,
50 def __repr__(self):
51 return "Expression(%s)" % (repr(self.node))
53 class Add(Node):
54 def __init__(self, leftright, lineno=None):
55 self.left = leftright[0]
56 self.right = leftright[1]
57 self.lineno = lineno
59 def getChildren(self):
60 return self.left, self.right
62 def getChildNodes(self):
63 return self.left, self.right
65 def __repr__(self):
66 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
68 class And(Node):
69 def __init__(self, nodes, lineno=None):
70 self.nodes = nodes
71 self.lineno = lineno
73 def getChildren(self):
74 return tuple(flatten(self.nodes))
76 def getChildNodes(self):
77 nodelist = []
78 nodelist.extend(flatten_nodes(self.nodes))
79 return tuple(nodelist)
81 def __repr__(self):
82 return "And(%s)" % (repr(self.nodes),)
84 class AssAttr(Node):
85 def __init__(self, expr, attrname, flags, lineno=None):
86 self.expr = expr
87 self.attrname = attrname
88 self.flags = flags
89 self.lineno = lineno
91 def getChildren(self):
92 return self.expr, self.attrname, self.flags
94 def getChildNodes(self):
95 return self.expr,
97 def __repr__(self):
98 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
100 class AssList(Node):
101 def __init__(self, nodes, lineno=None):
102 self.nodes = nodes
103 self.lineno = lineno
105 def getChildren(self):
106 return tuple(flatten(self.nodes))
108 def getChildNodes(self):
109 nodelist = []
110 nodelist.extend(flatten_nodes(self.nodes))
111 return tuple(nodelist)
113 def __repr__(self):
114 return "AssList(%s)" % (repr(self.nodes),)
116 class AssName(Node):
117 def __init__(self, name, flags, lineno=None):
118 self.name = name
119 self.flags = flags
120 self.lineno = lineno
122 def getChildren(self):
123 return self.name, self.flags
125 def getChildNodes(self):
126 return ()
128 def __repr__(self):
129 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
131 class AssTuple(Node):
132 def __init__(self, nodes, lineno=None):
133 self.nodes = nodes
134 self.lineno = lineno
136 def getChildren(self):
137 return tuple(flatten(self.nodes))
139 def getChildNodes(self):
140 nodelist = []
141 nodelist.extend(flatten_nodes(self.nodes))
142 return tuple(nodelist)
144 def __repr__(self):
145 return "AssTuple(%s)" % (repr(self.nodes),)
147 class Assert(Node):
148 def __init__(self, test, fail, lineno=None):
149 self.test = test
150 self.fail = fail
151 self.lineno = lineno
153 def getChildren(self):
154 children = []
155 children.append(self.test)
156 children.append(self.fail)
157 return tuple(children)
159 def getChildNodes(self):
160 nodelist = []
161 nodelist.append(self.test)
162 if self.fail is not None:
163 nodelist.append(self.fail)
164 return tuple(nodelist)
166 def __repr__(self):
167 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
169 class Assign(Node):
170 def __init__(self, nodes, expr, lineno=None):
171 self.nodes = nodes
172 self.expr = expr
173 self.lineno = lineno
175 def getChildren(self):
176 children = []
177 children.extend(flatten(self.nodes))
178 children.append(self.expr)
179 return tuple(children)
181 def getChildNodes(self):
182 nodelist = []
183 nodelist.extend(flatten_nodes(self.nodes))
184 nodelist.append(self.expr)
185 return tuple(nodelist)
187 def __repr__(self):
188 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
190 class AugAssign(Node):
191 def __init__(self, node, op, expr, lineno=None):
192 self.node = node
193 self.op = op
194 self.expr = expr
195 self.lineno = lineno
197 def getChildren(self):
198 return self.node, self.op, self.expr
200 def getChildNodes(self):
201 return self.node, self.expr
203 def __repr__(self):
204 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
206 class Backquote(Node):
207 def __init__(self, expr, lineno=None):
208 self.expr = expr
209 self.lineno = lineno
211 def getChildren(self):
212 return self.expr,
214 def getChildNodes(self):
215 return self.expr,
217 def __repr__(self):
218 return "Backquote(%s)" % (repr(self.expr),)
220 class Bitand(Node):
221 def __init__(self, nodes, lineno=None):
222 self.nodes = nodes
223 self.lineno = lineno
225 def getChildren(self):
226 return tuple(flatten(self.nodes))
228 def getChildNodes(self):
229 nodelist = []
230 nodelist.extend(flatten_nodes(self.nodes))
231 return tuple(nodelist)
233 def __repr__(self):
234 return "Bitand(%s)" % (repr(self.nodes),)
236 class Bitor(Node):
237 def __init__(self, nodes, lineno=None):
238 self.nodes = nodes
239 self.lineno = lineno
241 def getChildren(self):
242 return tuple(flatten(self.nodes))
244 def getChildNodes(self):
245 nodelist = []
246 nodelist.extend(flatten_nodes(self.nodes))
247 return tuple(nodelist)
249 def __repr__(self):
250 return "Bitor(%s)" % (repr(self.nodes),)
252 class Bitxor(Node):
253 def __init__(self, nodes, lineno=None):
254 self.nodes = nodes
255 self.lineno = lineno
257 def getChildren(self):
258 return tuple(flatten(self.nodes))
260 def getChildNodes(self):
261 nodelist = []
262 nodelist.extend(flatten_nodes(self.nodes))
263 return tuple(nodelist)
265 def __repr__(self):
266 return "Bitxor(%s)" % (repr(self.nodes),)
268 class Break(Node):
269 def __init__(self, lineno=None):
270 self.lineno = lineno
272 def getChildren(self):
273 return ()
275 def getChildNodes(self):
276 return ()
278 def __repr__(self):
279 return "Break()"
281 class CallFunc(Node):
282 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
283 self.node = node
284 self.args = args
285 self.star_args = star_args
286 self.dstar_args = dstar_args
287 self.lineno = lineno
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)
297 def getChildNodes(self):
298 nodelist = []
299 nodelist.append(self.node)
300 nodelist.extend(flatten_nodes(self.args))
301 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)
305 return tuple(nodelist)
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))
310 class Class(Node):
311 def __init__(self, name, bases, doc, code, decorators = None, lineno=None):
312 self.name = name
313 self.bases = bases
314 self.doc = doc
315 self.code = code
316 self.decorators = decorators
317 self.lineno = lineno
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)
325 children.append(self.decorators)
326 return tuple(children)
328 def getChildNodes(self):
329 nodelist = []
330 nodelist.extend(flatten_nodes(self.bases))
331 nodelist.append(self.code)
332 if self.decorators is not None:
333 nodelist.append(self.decorators)
334 return tuple(nodelist)
336 def __repr__(self):
337 return "Class(%s, %s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code), repr(self.decorators))
339 class Compare(Node):
340 def __init__(self, expr, ops, lineno=None):
341 self.expr = expr
342 self.ops = ops
343 self.lineno = lineno
345 def getChildren(self):
346 children = []
347 children.append(self.expr)
348 children.extend(flatten(self.ops))
349 return tuple(children)
351 def getChildNodes(self):
352 nodelist = []
353 nodelist.append(self.expr)
354 nodelist.extend(flatten_nodes(self.ops))
355 return tuple(nodelist)
357 def __repr__(self):
358 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
360 class Const(Node):
361 def __init__(self, value, lineno=None):
362 self.value = value
363 self.lineno = lineno
365 def getChildren(self):
366 return self.value,
368 def getChildNodes(self):
369 return ()
371 def __repr__(self):
372 return "Const(%s)" % (repr(self.value),)
374 class Continue(Node):
375 def __init__(self, lineno=None):
376 self.lineno = lineno
378 def getChildren(self):
379 return ()
381 def getChildNodes(self):
382 return ()
384 def __repr__(self):
385 return "Continue()"
387 class Decorators(Node):
388 def __init__(self, nodes, lineno=None):
389 self.nodes = nodes
390 self.lineno = lineno
392 def getChildren(self):
393 return tuple(flatten(self.nodes))
395 def getChildNodes(self):
396 nodelist = []
397 nodelist.extend(flatten_nodes(self.nodes))
398 return tuple(nodelist)
400 def __repr__(self):
401 return "Decorators(%s)" % (repr(self.nodes),)
403 class Dict(Node):
404 def __init__(self, items, lineno=None):
405 self.items = items
406 self.lineno = lineno
408 def getChildren(self):
409 return tuple(flatten(self.items))
411 def getChildNodes(self):
412 nodelist = []
413 nodelist.extend(flatten_nodes(self.items))
414 return tuple(nodelist)
416 def __repr__(self):
417 return "Dict(%s)" % (repr(self.items),)
419 class Discard(Node):
420 def __init__(self, expr, lineno=None):
421 self.expr = expr
422 self.lineno = lineno
424 def getChildren(self):
425 return self.expr,
427 def getChildNodes(self):
428 return self.expr,
430 def __repr__(self):
431 return "Discard(%s)" % (repr(self.expr),)
433 class Div(Node):
434 def __init__(self, leftright, lineno=None):
435 self.left = leftright[0]
436 self.right = leftright[1]
437 self.lineno = lineno
439 def getChildren(self):
440 return self.left, self.right
442 def getChildNodes(self):
443 return self.left, self.right
445 def __repr__(self):
446 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
448 class Ellipsis(Node):
449 def __init__(self, lineno=None):
450 self.lineno = lineno
452 def getChildren(self):
453 return ()
455 def getChildNodes(self):
456 return ()
458 def __repr__(self):
459 return "Ellipsis()"
461 class Exec(Node):
462 def __init__(self, expr, locals, globals, lineno=None):
463 self.expr = expr
464 self.locals = locals
465 self.globals = globals
466 self.lineno = lineno
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)
475 def getChildNodes(self):
476 nodelist = []
477 nodelist.append(self.expr)
478 if self.locals is not None:
479 nodelist.append(self.locals)
480 if self.globals is not None:
481 nodelist.append(self.globals)
482 return tuple(nodelist)
484 def __repr__(self):
485 return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
487 class FloorDiv(Node):
488 def __init__(self, leftright, lineno=None):
489 self.left = leftright[0]
490 self.right = leftright[1]
491 self.lineno = lineno
493 def getChildren(self):
494 return self.left, self.right
496 def getChildNodes(self):
497 return self.left, self.right
499 def __repr__(self):
500 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
502 class For(Node):
503 def __init__(self, assign, list, body, else_, lineno=None):
504 self.assign = assign
505 self.list = list
506 self.body = body
507 self.else_ = else_
508 self.lineno = lineno
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)
518 def getChildNodes(self):
519 nodelist = []
520 nodelist.append(self.assign)
521 nodelist.append(self.list)
522 nodelist.append(self.body)
523 if self.else_ is not None:
524 nodelist.append(self.else_)
525 return tuple(nodelist)
527 def __repr__(self):
528 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
530 class From(Node):
531 def __init__(self, modname, names, level, lineno=None):
532 self.modname = modname
533 self.names = names
534 self.level = level
535 self.lineno = lineno
537 def getChildren(self):
538 return self.modname, self.names, self.level
540 def getChildNodes(self):
541 return ()
543 def __repr__(self):
544 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
546 class Function(Node):
547 def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
548 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
555 self.lineno = lineno
556 self.varargs = self.kwargs = None
557 if flags & CO_VARARGS:
558 self.varargs = 1
559 if flags & CO_VARKEYWORDS:
560 self.kwargs = 1
563 def getChildren(self):
564 children = []
565 children.append(self.decorators)
566 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)
574 def getChildNodes(self):
575 nodelist = []
576 if self.decorators is not None:
577 nodelist.append(self.decorators)
578 nodelist.extend(flatten_nodes(self.defaults))
579 nodelist.append(self.code)
580 return tuple(nodelist)
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))
585 class GenExpr(Node):
586 def __init__(self, code, lineno=None):
587 self.code = code
588 self.lineno = lineno
589 self.argnames = ['.0']
590 self.varargs = self.kwargs = None
593 def getChildren(self):
594 return self.code,
596 def getChildNodes(self):
597 return self.code,
599 def __repr__(self):
600 return "GenExpr(%s)" % (repr(self.code),)
602 class GenExprFor(Node):
603 def __init__(self, assign, iter, ifs, lineno=None):
604 self.assign = assign
605 self.iter = iter
606 self.ifs = ifs
607 self.lineno = lineno
608 self.is_outmost = False
610 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)
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)
624 def __repr__(self):
625 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
627 class GenExprIf(Node):
628 def __init__(self, test, lineno=None):
629 self.test = test
630 self.lineno = lineno
632 def getChildren(self):
633 return self.test,
635 def getChildNodes(self):
636 return self.test,
638 def __repr__(self):
639 return "GenExprIf(%s)" % (repr(self.test),)
641 class GenExprInner(Node):
642 def __init__(self, expr, quals, lineno=None):
643 self.expr = expr
644 self.quals = quals
645 self.lineno = lineno
647 def getChildren(self):
648 children = []
649 children.append(self.expr)
650 children.extend(flatten(self.quals))
651 return tuple(children)
653 def getChildNodes(self):
654 nodelist = []
655 nodelist.append(self.expr)
656 nodelist.extend(flatten_nodes(self.quals))
657 return tuple(nodelist)
659 def __repr__(self):
660 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
662 class Getattr(Node):
663 def __init__(self, expr, attrname, lineno=None):
664 self.expr = expr
665 self.attrname = attrname
666 self.lineno = lineno
668 def getChildren(self):
669 return self.expr, self.attrname
671 def getChildNodes(self):
672 return self.expr,
674 def __repr__(self):
675 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
677 class Global(Node):
678 def __init__(self, names, lineno=None):
679 self.names = names
680 self.lineno = lineno
682 def getChildren(self):
683 return self.names,
685 def getChildNodes(self):
686 return ()
688 def __repr__(self):
689 return "Global(%s)" % (repr(self.names),)
691 class If(Node):
692 def __init__(self, tests, else_, lineno=None):
693 self.tests = tests
694 self.else_ = else_
695 self.lineno = lineno
697 def getChildren(self):
698 children = []
699 children.extend(flatten(self.tests))
700 children.append(self.else_)
701 return tuple(children)
703 def getChildNodes(self):
704 nodelist = []
705 nodelist.extend(flatten_nodes(self.tests))
706 if self.else_ is not None:
707 nodelist.append(self.else_)
708 return tuple(nodelist)
710 def __repr__(self):
711 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
713 class 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
720 def getChildren(self):
721 return self.test, self.then, self.else_
723 def getChildNodes(self):
724 return self.test, self.then, self.else_
726 def __repr__(self):
727 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
729 class Import(Node):
730 def __init__(self, names, lineno=None):
731 self.names = names
732 self.lineno = lineno
734 def getChildren(self):
735 return self.names,
737 def getChildNodes(self):
738 return ()
740 def __repr__(self):
741 return "Import(%s)" % (repr(self.names),)
743 class Invert(Node):
744 def __init__(self, expr, lineno=None):
745 self.expr = expr
746 self.lineno = lineno
748 def getChildren(self):
749 return self.expr,
751 def getChildNodes(self):
752 return self.expr,
754 def __repr__(self):
755 return "Invert(%s)" % (repr(self.expr),)
757 class Keyword(Node):
758 def __init__(self, name, expr, lineno=None):
759 self.name = name
760 self.expr = expr
761 self.lineno = lineno
763 def getChildren(self):
764 return self.name, self.expr
766 def getChildNodes(self):
767 return self.expr,
769 def __repr__(self):
770 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
772 class Lambda(Node):
773 def __init__(self, argnames, defaults, flags, code, lineno=None):
774 self.argnames = argnames
775 self.defaults = defaults
776 self.flags = flags
777 self.code = code
778 self.lineno = lineno
779 self.varargs = self.kwargs = None
780 if flags & CO_VARARGS:
781 self.varargs = 1
782 if flags & CO_VARKEYWORDS:
783 self.kwargs = 1
786 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)
794 def getChildNodes(self):
795 nodelist = []
796 nodelist.extend(flatten_nodes(self.defaults))
797 nodelist.append(self.code)
798 return tuple(nodelist)
800 def __repr__(self):
801 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
803 class LeftShift(Node):
804 def __init__(self, leftright, lineno=None):
805 self.left = leftright[0]
806 self.right = leftright[1]
807 self.lineno = lineno
809 def getChildren(self):
810 return self.left, self.right
812 def getChildNodes(self):
813 return self.left, self.right
815 def __repr__(self):
816 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
818 class List(Node):
819 def __init__(self, nodes, lineno=None):
820 self.nodes = nodes
821 self.lineno = lineno
823 def getChildren(self):
824 return tuple(flatten(self.nodes))
826 def getChildNodes(self):
827 nodelist = []
828 nodelist.extend(flatten_nodes(self.nodes))
829 return tuple(nodelist)
831 def __repr__(self):
832 return "List(%s)" % (repr(self.nodes),)
834 class ListComp(Node):
835 def __init__(self, expr, quals, lineno=None):
836 self.expr = expr
837 self.quals = quals
838 self.lineno = lineno
840 def getChildren(self):
841 children = []
842 children.append(self.expr)
843 children.extend(flatten(self.quals))
844 return tuple(children)
846 def getChildNodes(self):
847 nodelist = []
848 nodelist.append(self.expr)
849 nodelist.extend(flatten_nodes(self.quals))
850 return tuple(nodelist)
852 def __repr__(self):
853 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
855 class ListCompFor(Node):
856 def __init__(self, assign, list, ifs, lineno=None):
857 self.assign = assign
858 self.list = list
859 self.ifs = ifs
860 self.lineno = lineno
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)
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)
876 def __repr__(self):
877 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
879 class ListCompIf(Node):
880 def __init__(self, test, lineno=None):
881 self.test = test
882 self.lineno = lineno
884 def getChildren(self):
885 return self.test,
887 def getChildNodes(self):
888 return self.test,
890 def __repr__(self):
891 return "ListCompIf(%s)" % (repr(self.test),)
893 class Mod(Node):
894 def __init__(self, leftright, lineno=None):
895 self.left = leftright[0]
896 self.right = leftright[1]
897 self.lineno = lineno
899 def getChildren(self):
900 return self.left, self.right
902 def getChildNodes(self):
903 return self.left, self.right
905 def __repr__(self):
906 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
908 class Module(Node):
909 def __init__(self, doc, node, lineno=None):
910 self.doc = doc
911 self.node = node
912 self.lineno = lineno
914 def getChildren(self):
915 return self.doc, self.node
917 def getChildNodes(self):
918 return self.node,
920 def __repr__(self):
921 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
923 class Mul(Node):
924 def __init__(self, leftright, lineno=None):
925 self.left = leftright[0]
926 self.right = leftright[1]
927 self.lineno = lineno
929 def getChildren(self):
930 return self.left, self.right
932 def getChildNodes(self):
933 return self.left, self.right
935 def __repr__(self):
936 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
938 class Name(Node):
939 def __init__(self, name, lineno=None):
940 self.name = name
941 self.lineno = lineno
943 def getChildren(self):
944 return self.name,
946 def getChildNodes(self):
947 return ()
949 def __repr__(self):
950 return "Name(%s)" % (repr(self.name),)
952 class Not(Node):
953 def __init__(self, expr, lineno=None):
954 self.expr = expr
955 self.lineno = lineno
957 def getChildren(self):
958 return self.expr,
960 def getChildNodes(self):
961 return self.expr,
963 def __repr__(self):
964 return "Not(%s)" % (repr(self.expr),)
966 class Or(Node):
967 def __init__(self, nodes, lineno=None):
968 self.nodes = nodes
969 self.lineno = lineno
971 def getChildren(self):
972 return tuple(flatten(self.nodes))
974 def getChildNodes(self):
975 nodelist = []
976 nodelist.extend(flatten_nodes(self.nodes))
977 return tuple(nodelist)
979 def __repr__(self):
980 return "Or(%s)" % (repr(self.nodes),)
982 class Pass(Node):
983 def __init__(self, lineno=None):
984 self.lineno = lineno
986 def getChildren(self):
987 return ()
989 def getChildNodes(self):
990 return ()
992 def __repr__(self):
993 return "Pass()"
995 class Power(Node):
996 def __init__(self, leftright, lineno=None):
997 self.left = leftright[0]
998 self.right = leftright[1]
999 self.lineno = lineno
1001 def getChildren(self):
1002 return self.left, self.right
1004 def getChildNodes(self):
1005 return self.left, self.right
1007 def __repr__(self):
1008 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
1010 class Print(Node):
1011 def __init__(self, nodes, dest, lineno=None):
1012 self.nodes = nodes
1013 self.dest = dest
1014 self.lineno = lineno
1016 def getChildren(self):
1017 children = []
1018 children.extend(flatten(self.nodes))
1019 children.append(self.dest)
1020 return tuple(children)
1022 def getChildNodes(self):
1023 nodelist = []
1024 nodelist.extend(flatten_nodes(self.nodes))
1025 if self.dest is not None:
1026 nodelist.append(self.dest)
1027 return tuple(nodelist)
1029 def __repr__(self):
1030 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1032 class Printnl(Node):
1033 def __init__(self, nodes, dest, lineno=None):
1034 self.nodes = nodes
1035 self.dest = dest
1036 self.lineno = lineno
1038 def getChildren(self):
1039 children = []
1040 children.extend(flatten(self.nodes))
1041 children.append(self.dest)
1042 return tuple(children)
1044 def getChildNodes(self):
1045 nodelist = []
1046 nodelist.extend(flatten_nodes(self.nodes))
1047 if self.dest is not None:
1048 nodelist.append(self.dest)
1049 return tuple(nodelist)
1051 def __repr__(self):
1052 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1054 class Raise(Node):
1055 def __init__(self, expr1, expr2, expr3, lineno=None):
1056 self.expr1 = expr1
1057 self.expr2 = expr2
1058 self.expr3 = expr3
1059 self.lineno = lineno
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)
1068 def getChildNodes(self):
1069 nodelist = []
1070 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)
1076 return tuple(nodelist)
1078 def __repr__(self):
1079 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1081 class Return(Node):
1082 def __init__(self, value, lineno=None):
1083 self.value = value
1084 self.lineno = lineno
1086 def getChildren(self):
1087 return self.value,
1089 def getChildNodes(self):
1090 return self.value,
1092 def __repr__(self):
1093 return "Return(%s)" % (repr(self.value),)
1095 class RightShift(Node):
1096 def __init__(self, leftright, lineno=None):
1097 self.left = leftright[0]
1098 self.right = leftright[1]
1099 self.lineno = lineno
1101 def getChildren(self):
1102 return self.left, self.right
1104 def getChildNodes(self):
1105 return self.left, self.right
1107 def __repr__(self):
1108 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1110 class Slice(Node):
1111 def __init__(self, expr, flags, lower, upper, lineno=None):
1112 self.expr = expr
1113 self.flags = flags
1114 self.lower = lower
1115 self.upper = upper
1116 self.lineno = lineno
1118 def getChildren(self):
1119 children = []
1120 children.append(self.expr)
1121 children.append(self.flags)
1122 children.append(self.lower)
1123 children.append(self.upper)
1124 return tuple(children)
1126 def getChildNodes(self):
1127 nodelist = []
1128 nodelist.append(self.expr)
1129 if self.lower is not None:
1130 nodelist.append(self.lower)
1131 if self.upper is not None:
1132 nodelist.append(self.upper)
1133 return tuple(nodelist)
1135 def __repr__(self):
1136 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1138 class Sliceobj(Node):
1139 def __init__(self, nodes, lineno=None):
1140 self.nodes = nodes
1141 self.lineno = lineno
1143 def getChildren(self):
1144 return tuple(flatten(self.nodes))
1146 def getChildNodes(self):
1147 nodelist = []
1148 nodelist.extend(flatten_nodes(self.nodes))
1149 return tuple(nodelist)
1151 def __repr__(self):
1152 return "Sliceobj(%s)" % (repr(self.nodes),)
1154 class Stmt(Node):
1155 def __init__(self, nodes, lineno=None):
1156 self.nodes = nodes
1157 self.lineno = lineno
1159 def getChildren(self):
1160 return tuple(flatten(self.nodes))
1162 def getChildNodes(self):
1163 nodelist = []
1164 nodelist.extend(flatten_nodes(self.nodes))
1165 return tuple(nodelist)
1167 def __repr__(self):
1168 return "Stmt(%s)" % (repr(self.nodes),)
1170 class Sub(Node):
1171 def __init__(self, leftright, lineno=None):
1172 self.left = leftright[0]
1173 self.right = leftright[1]
1174 self.lineno = lineno
1176 def getChildren(self):
1177 return self.left, self.right
1179 def getChildNodes(self):
1180 return self.left, self.right
1182 def __repr__(self):
1183 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
1185 class Subscript(Node):
1186 def __init__(self, expr, flags, subs, lineno=None):
1187 self.expr = expr
1188 self.flags = flags
1189 self.subs = subs
1190 self.lineno = lineno
1192 def getChildren(self):
1193 children = []
1194 children.append(self.expr)
1195 children.append(self.flags)
1196 children.extend(flatten(self.subs))
1197 return tuple(children)
1199 def getChildNodes(self):
1200 nodelist = []
1201 nodelist.append(self.expr)
1202 nodelist.extend(flatten_nodes(self.subs))
1203 return tuple(nodelist)
1205 def __repr__(self):
1206 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1208 class TryExcept(Node):
1209 def __init__(self, body, handlers, else_, lineno=None):
1210 self.body = body
1211 self.handlers = handlers
1212 self.else_ = else_
1213 self.lineno = lineno
1215 def getChildren(self):
1216 children = []
1217 children.append(self.body)
1218 children.extend(flatten(self.handlers))
1219 children.append(self.else_)
1220 return tuple(children)
1222 def getChildNodes(self):
1223 nodelist = []
1224 nodelist.append(self.body)
1225 nodelist.extend(flatten_nodes(self.handlers))
1226 if self.else_ is not None:
1227 nodelist.append(self.else_)
1228 return tuple(nodelist)
1230 def __repr__(self):
1231 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1233 class TryFinally(Node):
1234 def __init__(self, body, final, lineno=None):
1235 self.body = body
1236 self.final = final
1237 self.lineno = lineno
1239 def getChildren(self):
1240 return self.body, self.final
1242 def getChildNodes(self):
1243 return self.body, self.final
1245 def __repr__(self):
1246 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1248 class Tuple(Node):
1249 def __init__(self, nodes, lineno=None):
1250 self.nodes = nodes
1251 self.lineno = lineno
1253 def getChildren(self):
1254 return tuple(flatten(self.nodes))
1256 def getChildNodes(self):
1257 nodelist = []
1258 nodelist.extend(flatten_nodes(self.nodes))
1259 return tuple(nodelist)
1261 def __repr__(self):
1262 return "Tuple(%s)" % (repr(self.nodes),)
1264 class UnaryAdd(Node):
1265 def __init__(self, expr, lineno=None):
1266 self.expr = expr
1267 self.lineno = lineno
1269 def getChildren(self):
1270 return self.expr,
1272 def getChildNodes(self):
1273 return self.expr,
1275 def __repr__(self):
1276 return "UnaryAdd(%s)" % (repr(self.expr),)
1278 class UnarySub(Node):
1279 def __init__(self, expr, lineno=None):
1280 self.expr = expr
1281 self.lineno = lineno
1283 def getChildren(self):
1284 return self.expr,
1286 def getChildNodes(self):
1287 return self.expr,
1289 def __repr__(self):
1290 return "UnarySub(%s)" % (repr(self.expr),)
1292 class While(Node):
1293 def __init__(self, test, body, else_, lineno=None):
1294 self.test = test
1295 self.body = body
1296 self.else_ = else_
1297 self.lineno = lineno
1299 def getChildren(self):
1300 children = []
1301 children.append(self.test)
1302 children.append(self.body)
1303 children.append(self.else_)
1304 return tuple(children)
1306 def getChildNodes(self):
1307 nodelist = []
1308 nodelist.append(self.test)
1309 nodelist.append(self.body)
1310 if self.else_ is not None:
1311 nodelist.append(self.else_)
1312 return tuple(nodelist)
1314 def __repr__(self):
1315 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1317 class With(Node):
1318 def __init__(self, expr, vars, body, lineno=None):
1319 self.expr = expr
1320 self.vars = vars
1321 self.body = body
1322 self.lineno = lineno
1324 def getChildren(self):
1325 children = []
1326 children.append(self.expr)
1327 children.append(self.vars)
1328 children.append(self.body)
1329 return tuple(children)
1331 def getChildNodes(self):
1332 nodelist = []
1333 nodelist.append(self.expr)
1334 if self.vars is not None:
1335 nodelist.append(self.vars)
1336 nodelist.append(self.body)
1337 return tuple(nodelist)
1339 def __repr__(self):
1340 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1342 class Yield(Node):
1343 def __init__(self, value, lineno=None):
1344 self.value = value
1345 self.lineno = lineno
1347 def getChildren(self):
1348 return self.value,
1350 def getChildNodes(self):
1351 return self.value,
1353 def __repr__(self):
1354 return "Yield(%s)" % (repr(self.value),)
1356 for name, obj in globals().items():
1357 if isinstance(obj, type) and issubclass(obj, Node):
1358 nodes[name.lower()] = obj