blob: 064df50ed5b822670caea843e4c3c6347a665eaa [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
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000051class Slice(Node):
52 nodes["slice"] = "Slice"
53 def __init__(self, expr, flags, lower, upper):
54 self.expr = expr
55 self.flags = flags
56 self.lower = lower
57 self.upper = upper
58
59 def getChildren(self):
60 children = []
61 children.append(self.expr)
62 children.append(self.flags)
63 children.append(self.lower)
64 children.append(self.upper)
65 return tuple(children)
66
67 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +000068 nodelist = []
69 nodelist.append(self.expr)
70 if self.lower is not None: nodelist.append(self.lower)
71 if self.upper is not None: nodelist.append(self.upper)
72 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +000073
74 def __repr__(self):
75 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
76
77class Const(Node):
78 nodes["const"] = "Const"
79 def __init__(self, value):
80 self.value = value
81
82 def getChildren(self):
83 return self.value,
84
85 def getChildNodes(self):
86 return ()
87
88 def __repr__(self):
89 return "Const(%s)" % (repr(self.value),)
90
91class Raise(Node):
92 nodes["raise"] = "Raise"
93 def __init__(self, expr1, expr2, expr3):
94 self.expr1 = expr1
95 self.expr2 = expr2
96 self.expr3 = expr3
97
98 def getChildren(self):
99 children = []
100 children.append(self.expr1)
101 children.append(self.expr2)
102 children.append(self.expr3)
103 return tuple(children)
104
105 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000106 nodelist = []
107 if self.expr1 is not None: nodelist.append(self.expr1)
108 if self.expr2 is not None: nodelist.append(self.expr2)
109 if self.expr3 is not None: nodelist.append(self.expr3)
110 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000111
112 def __repr__(self):
113 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
114
115class For(Node):
116 nodes["for"] = "For"
117 def __init__(self, assign, list, body, else_):
118 self.assign = assign
119 self.list = list
120 self.body = body
121 self.else_ = else_
122
123 def getChildren(self):
124 children = []
125 children.append(self.assign)
126 children.append(self.list)
127 children.append(self.body)
128 children.append(self.else_)
129 return tuple(children)
130
131 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000132 nodelist = []
133 nodelist.append(self.assign)
134 nodelist.append(self.list)
135 nodelist.append(self.body)
136 if self.else_ is not None: nodelist.append(self.else_)
137 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000138
139 def __repr__(self):
140 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
141
142class AssTuple(Node):
143 nodes["asstuple"] = "AssTuple"
144 def __init__(self, nodes):
145 self.nodes = nodes
146
147 def getChildren(self):
148 children = []
149 children.extend(flatten(self.nodes))
150 return tuple(children)
151
152 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000153 nodelist = []
154 nodelist.extend(flatten_nodes(self.nodes))
155 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000156
157 def __repr__(self):
158 return "AssTuple(%s)" % (repr(self.nodes),)
159
160class Mul(Node):
161 nodes["mul"] = "Mul"
162 def __init__(self, (left, right)):
163 self.left = left
164 self.right = right
165
166 def getChildren(self):
167 return self.left, self.right
168
169 def getChildNodes(self):
170 return self.left, self.right
171
172 def __repr__(self):
173 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
174
175class Invert(Node):
176 nodes["invert"] = "Invert"
177 def __init__(self, expr):
178 self.expr = expr
179
180 def getChildren(self):
181 return self.expr,
182
183 def getChildNodes(self):
184 return self.expr,
185
186 def __repr__(self):
187 return "Invert(%s)" % (repr(self.expr),)
188
189class RightShift(Node):
190 nodes["rightshift"] = "RightShift"
191 def __init__(self, (left, right)):
192 self.left = left
193 self.right = right
194
195 def getChildren(self):
196 return self.left, self.right
197
198 def getChildNodes(self):
199 return self.left, self.right
200
201 def __repr__(self):
202 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
203
204class AssList(Node):
205 nodes["asslist"] = "AssList"
206 def __init__(self, nodes):
207 self.nodes = nodes
208
209 def getChildren(self):
210 children = []
211 children.extend(flatten(self.nodes))
212 return tuple(children)
213
214 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000215 nodelist = []
216 nodelist.extend(flatten_nodes(self.nodes))
217 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000218
219 def __repr__(self):
220 return "AssList(%s)" % (repr(self.nodes),)
221
222class From(Node):
223 nodes["from"] = "From"
224 def __init__(self, modname, names):
225 self.modname = modname
226 self.names = names
227
228 def getChildren(self):
229 return self.modname, self.names
230
231 def getChildNodes(self):
232 return ()
233
234 def __repr__(self):
235 return "From(%s, %s)" % (repr(self.modname), repr(self.names))
236
237class Getattr(Node):
238 nodes["getattr"] = "Getattr"
239 def __init__(self, expr, attrname):
240 self.expr = expr
241 self.attrname = attrname
242
243 def getChildren(self):
244 return self.expr, self.attrname
245
246 def getChildNodes(self):
247 return self.expr,
248
249 def __repr__(self):
250 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
251
252class Dict(Node):
253 nodes["dict"] = "Dict"
254 def __init__(self, items):
255 self.items = items
256
257 def getChildren(self):
258 children = []
259 children.extend(flatten(self.items))
260 return tuple(children)
261
262 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000263 nodelist = []
264 nodelist.extend(flatten_nodes(self.items))
265 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000266
267 def __repr__(self):
268 return "Dict(%s)" % (repr(self.items),)
269
270class Module(Node):
271 nodes["module"] = "Module"
272 def __init__(self, doc, node):
273 self.doc = doc
274 self.node = node
275
276 def getChildren(self):
277 return self.doc, self.node
278
279 def getChildNodes(self):
280 return self.node,
281
282 def __repr__(self):
283 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
284
Barry Warsaw52acb492001-12-21 20:04:22 +0000285class Expression(Node):
Andrew M. Kuchlingb2f89ee2003-08-11 16:20:39 +0000286 # Expression is an artificial node class to support "eval"
Barry Warsaw52acb492001-12-21 20:04:22 +0000287 nodes["expression"] = "Expression"
288 def __init__(self, node):
289 self.node = node
290
291 def getChildren(self):
292 return self.node,
293
294 def getChildNodes(self):
295 return self.node,
296
297 def __repr__(self):
298 return "Expression(%s)" % (repr(self.node))
299
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000300class UnaryAdd(Node):
301 nodes["unaryadd"] = "UnaryAdd"
302 def __init__(self, expr):
303 self.expr = expr
304
305 def getChildren(self):
306 return self.expr,
307
308 def getChildNodes(self):
309 return self.expr,
310
311 def __repr__(self):
312 return "UnaryAdd(%s)" % (repr(self.expr),)
313
314class Ellipsis(Node):
315 nodes["ellipsis"] = "Ellipsis"
316 def __init__(self, ):
317 pass
318
319 def getChildren(self):
320 return ()
321
322 def getChildNodes(self):
323 return ()
324
325 def __repr__(self):
326 return "Ellipsis()"
327
328class Print(Node):
329 nodes["print"] = "Print"
330 def __init__(self, nodes, dest):
331 self.nodes = nodes
332 self.dest = dest
333
334 def getChildren(self):
335 children = []
336 children.extend(flatten(self.nodes))
337 children.append(self.dest)
338 return tuple(children)
339
340 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000341 nodelist = []
342 nodelist.extend(flatten_nodes(self.nodes))
343 if self.dest is not None: nodelist.append(self.dest)
344 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000345
346 def __repr__(self):
347 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
348
349class Import(Node):
350 nodes["import"] = "Import"
351 def __init__(self, names):
352 self.names = names
353
354 def getChildren(self):
355 return self.names,
356
357 def getChildNodes(self):
358 return ()
359
360 def __repr__(self):
361 return "Import(%s)" % (repr(self.names),)
362
363class Subscript(Node):
364 nodes["subscript"] = "Subscript"
365 def __init__(self, expr, flags, subs):
366 self.expr = expr
367 self.flags = flags
368 self.subs = subs
369
370 def getChildren(self):
371 children = []
372 children.append(self.expr)
373 children.append(self.flags)
374 children.extend(flatten(self.subs))
375 return tuple(children)
376
377 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000378 nodelist = []
379 nodelist.append(self.expr)
380 nodelist.extend(flatten_nodes(self.subs))
381 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000382
383 def __repr__(self):
384 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
385
386class TryExcept(Node):
387 nodes["tryexcept"] = "TryExcept"
388 def __init__(self, body, handlers, else_):
389 self.body = body
390 self.handlers = handlers
391 self.else_ = else_
392
393 def getChildren(self):
394 children = []
395 children.append(self.body)
396 children.extend(flatten(self.handlers))
397 children.append(self.else_)
398 return tuple(children)
399
400 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000401 nodelist = []
402 nodelist.append(self.body)
403 nodelist.extend(flatten_nodes(self.handlers))
404 if self.else_ is not None: nodelist.append(self.else_)
405 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000406
407 def __repr__(self):
408 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
409
410class Or(Node):
411 nodes["or"] = "Or"
412 def __init__(self, nodes):
413 self.nodes = nodes
414
415 def getChildren(self):
416 children = []
417 children.extend(flatten(self.nodes))
418 return tuple(children)
419
420 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000421 nodelist = []
422 nodelist.extend(flatten_nodes(self.nodes))
423 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000424
425 def __repr__(self):
426 return "Or(%s)" % (repr(self.nodes),)
427
428class Name(Node):
429 nodes["name"] = "Name"
430 def __init__(self, name):
431 self.name = name
432
433 def getChildren(self):
434 return self.name,
435
436 def getChildNodes(self):
437 return ()
438
439 def __repr__(self):
440 return "Name(%s)" % (repr(self.name),)
441
442class Function(Node):
443 nodes["function"] = "Function"
444 def __init__(self, name, argnames, defaults, flags, doc, code):
445 self.name = name
446 self.argnames = argnames
447 self.defaults = defaults
448 self.flags = flags
449 self.doc = doc
450 self.code = code
451 self.varargs = self.kwargs = None
452 if flags & CO_VARARGS:
453 self.varargs = 1
454 if flags & CO_VARKEYWORDS:
455 self.kwargs = 1
Tim Peterse0c446b2001-10-18 21:57:37 +0000456
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000457
458
459 def getChildren(self):
460 children = []
461 children.append(self.name)
462 children.append(self.argnames)
463 children.extend(flatten(self.defaults))
464 children.append(self.flags)
465 children.append(self.doc)
466 children.append(self.code)
467 return tuple(children)
468
469 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000470 nodelist = []
471 nodelist.extend(flatten_nodes(self.defaults))
472 nodelist.append(self.code)
473 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000474
475 def __repr__(self):
476 return "Function(%s, %s, %s, %s, %s, %s)" % (repr(self.name), repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.doc), repr(self.code))
477
478class Assert(Node):
479 nodes["assert"] = "Assert"
480 def __init__(self, test, fail):
481 self.test = test
482 self.fail = fail
483
484 def getChildren(self):
485 children = []
486 children.append(self.test)
487 children.append(self.fail)
488 return tuple(children)
489
490 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000491 nodelist = []
492 nodelist.append(self.test)
493 if self.fail is not None: nodelist.append(self.fail)
494 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000495
496 def __repr__(self):
497 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
498
499class Return(Node):
500 nodes["return"] = "Return"
501 def __init__(self, value):
502 self.value = value
503
504 def getChildren(self):
505 return self.value,
506
507 def getChildNodes(self):
508 return self.value,
509
510 def __repr__(self):
511 return "Return(%s)" % (repr(self.value),)
512
513class Power(Node):
514 nodes["power"] = "Power"
515 def __init__(self, (left, right)):
516 self.left = left
517 self.right = right
518
519 def getChildren(self):
520 return self.left, self.right
521
522 def getChildNodes(self):
523 return self.left, self.right
524
525 def __repr__(self):
526 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
527
528class Exec(Node):
529 nodes["exec"] = "Exec"
530 def __init__(self, expr, locals, globals):
531 self.expr = expr
532 self.locals = locals
533 self.globals = globals
534
535 def getChildren(self):
536 children = []
537 children.append(self.expr)
538 children.append(self.locals)
539 children.append(self.globals)
540 return tuple(children)
541
542 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000543 nodelist = []
544 nodelist.append(self.expr)
545 if self.locals is not None: nodelist.append(self.locals)
546 if self.globals is not None: nodelist.append(self.globals)
547 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000548
549 def __repr__(self):
550 return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
551
552class Stmt(Node):
553 nodes["stmt"] = "Stmt"
554 def __init__(self, nodes):
555 self.nodes = nodes
556
557 def getChildren(self):
558 children = []
559 children.extend(flatten(self.nodes))
560 return tuple(children)
561
562 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000563 nodelist = []
564 nodelist.extend(flatten_nodes(self.nodes))
565 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000566
567 def __repr__(self):
568 return "Stmt(%s)" % (repr(self.nodes),)
569
570class Sliceobj(Node):
571 nodes["sliceobj"] = "Sliceobj"
572 def __init__(self, nodes):
573 self.nodes = nodes
574
575 def getChildren(self):
576 children = []
577 children.extend(flatten(self.nodes))
578 return tuple(children)
579
580 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000581 nodelist = []
582 nodelist.extend(flatten_nodes(self.nodes))
583 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000584
585 def __repr__(self):
586 return "Sliceobj(%s)" % (repr(self.nodes),)
587
588class Break(Node):
589 nodes["break"] = "Break"
590 def __init__(self, ):
591 pass
592
593 def getChildren(self):
594 return ()
595
596 def getChildNodes(self):
597 return ()
598
599 def __repr__(self):
600 return "Break()"
601
602class Bitand(Node):
603 nodes["bitand"] = "Bitand"
604 def __init__(self, nodes):
605 self.nodes = nodes
606
607 def getChildren(self):
608 children = []
609 children.extend(flatten(self.nodes))
610 return tuple(children)
611
612 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000613 nodelist = []
614 nodelist.extend(flatten_nodes(self.nodes))
615 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000616
617 def __repr__(self):
618 return "Bitand(%s)" % (repr(self.nodes),)
619
620class FloorDiv(Node):
621 nodes["floordiv"] = "FloorDiv"
622 def __init__(self, (left, right)):
623 self.left = left
624 self.right = right
625
626 def getChildren(self):
627 return self.left, self.right
628
629 def getChildNodes(self):
630 return self.left, self.right
631
632 def __repr__(self):
633 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
634
635class TryFinally(Node):
636 nodes["tryfinally"] = "TryFinally"
637 def __init__(self, body, final):
638 self.body = body
639 self.final = final
640
641 def getChildren(self):
642 return self.body, self.final
643
644 def getChildNodes(self):
645 return self.body, self.final
646
647 def __repr__(self):
648 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
649
650class Not(Node):
651 nodes["not"] = "Not"
652 def __init__(self, expr):
653 self.expr = expr
654
655 def getChildren(self):
656 return self.expr,
657
658 def getChildNodes(self):
659 return self.expr,
660
661 def __repr__(self):
662 return "Not(%s)" % (repr(self.expr),)
663
664class Class(Node):
665 nodes["class"] = "Class"
666 def __init__(self, name, bases, doc, code):
667 self.name = name
668 self.bases = bases
669 self.doc = doc
670 self.code = code
671
672 def getChildren(self):
673 children = []
674 children.append(self.name)
675 children.extend(flatten(self.bases))
676 children.append(self.doc)
677 children.append(self.code)
678 return tuple(children)
679
680 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000681 nodelist = []
682 nodelist.extend(flatten_nodes(self.bases))
683 nodelist.append(self.code)
684 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000685
686 def __repr__(self):
687 return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
688
689class Mod(Node):
690 nodes["mod"] = "Mod"
691 def __init__(self, (left, right)):
692 self.left = left
693 self.right = right
694
695 def getChildren(self):
696 return self.left, self.right
697
698 def getChildNodes(self):
699 return self.left, self.right
700
701 def __repr__(self):
702 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
703
704class Printnl(Node):
705 nodes["printnl"] = "Printnl"
706 def __init__(self, nodes, dest):
707 self.nodes = nodes
708 self.dest = dest
709
710 def getChildren(self):
711 children = []
712 children.extend(flatten(self.nodes))
713 children.append(self.dest)
714 return tuple(children)
715
716 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000717 nodelist = []
718 nodelist.extend(flatten_nodes(self.nodes))
719 if self.dest is not None: nodelist.append(self.dest)
720 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000721
722 def __repr__(self):
723 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
724
725class Tuple(Node):
726 nodes["tuple"] = "Tuple"
727 def __init__(self, nodes):
728 self.nodes = nodes
729
730 def getChildren(self):
731 children = []
732 children.extend(flatten(self.nodes))
733 return tuple(children)
734
735 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000736 nodelist = []
737 nodelist.extend(flatten_nodes(self.nodes))
738 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000739
740 def __repr__(self):
741 return "Tuple(%s)" % (repr(self.nodes),)
742
743class AssAttr(Node):
744 nodes["assattr"] = "AssAttr"
745 def __init__(self, expr, attrname, flags):
746 self.expr = expr
747 self.attrname = attrname
748 self.flags = flags
749
750 def getChildren(self):
751 return self.expr, self.attrname, self.flags
752
753 def getChildNodes(self):
754 return self.expr,
755
756 def __repr__(self):
757 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
758
759class Keyword(Node):
760 nodes["keyword"] = "Keyword"
761 def __init__(self, name, expr):
762 self.name = name
763 self.expr = expr
764
765 def getChildren(self):
766 return self.name, self.expr
767
768 def getChildNodes(self):
769 return self.expr,
770
771 def __repr__(self):
772 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
773
774class AugAssign(Node):
775 nodes["augassign"] = "AugAssign"
776 def __init__(self, node, op, expr):
777 self.node = node
778 self.op = op
779 self.expr = expr
780
781 def getChildren(self):
782 return self.node, self.op, self.expr
783
784 def getChildNodes(self):
785 return self.node, self.expr
786
787 def __repr__(self):
788 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
789
790class List(Node):
791 nodes["list"] = "List"
792 def __init__(self, nodes):
793 self.nodes = nodes
794
795 def getChildren(self):
796 children = []
797 children.extend(flatten(self.nodes))
798 return tuple(children)
799
800 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000801 nodelist = []
802 nodelist.extend(flatten_nodes(self.nodes))
803 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000804
805 def __repr__(self):
806 return "List(%s)" % (repr(self.nodes),)
807
808class Yield(Node):
809 nodes["yield"] = "Yield"
810 def __init__(self, value):
811 self.value = value
812
813 def getChildren(self):
814 return self.value,
815
816 def getChildNodes(self):
817 return self.value,
818
819 def __repr__(self):
820 return "Yield(%s)" % (repr(self.value),)
821
822class LeftShift(Node):
823 nodes["leftshift"] = "LeftShift"
824 def __init__(self, (left, right)):
825 self.left = left
826 self.right = right
827
828 def getChildren(self):
829 return self.left, self.right
830
831 def getChildNodes(self):
832 return self.left, self.right
833
834 def __repr__(self):
835 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
836
837class AssName(Node):
838 nodes["assname"] = "AssName"
839 def __init__(self, name, flags):
840 self.name = name
841 self.flags = flags
842
843 def getChildren(self):
844 return self.name, self.flags
845
846 def getChildNodes(self):
847 return ()
848
849 def __repr__(self):
850 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
851
852class While(Node):
853 nodes["while"] = "While"
854 def __init__(self, test, body, else_):
855 self.test = test
856 self.body = body
857 self.else_ = else_
858
859 def getChildren(self):
860 children = []
861 children.append(self.test)
862 children.append(self.body)
863 children.append(self.else_)
864 return tuple(children)
865
866 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000867 nodelist = []
868 nodelist.append(self.test)
869 nodelist.append(self.body)
870 if self.else_ is not None: nodelist.append(self.else_)
871 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000872
873 def __repr__(self):
874 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
875
876class Continue(Node):
877 nodes["continue"] = "Continue"
878 def __init__(self, ):
879 pass
880
881 def getChildren(self):
882 return ()
883
884 def getChildNodes(self):
885 return ()
886
887 def __repr__(self):
888 return "Continue()"
889
890class Backquote(Node):
891 nodes["backquote"] = "Backquote"
892 def __init__(self, expr):
893 self.expr = expr
894
895 def getChildren(self):
896 return self.expr,
897
898 def getChildNodes(self):
899 return self.expr,
900
901 def __repr__(self):
902 return "Backquote(%s)" % (repr(self.expr),)
903
904class Discard(Node):
905 nodes["discard"] = "Discard"
906 def __init__(self, expr):
907 self.expr = expr
908
909 def getChildren(self):
910 return self.expr,
911
912 def getChildNodes(self):
913 return self.expr,
914
915 def __repr__(self):
916 return "Discard(%s)" % (repr(self.expr),)
917
918class Div(Node):
919 nodes["div"] = "Div"
920 def __init__(self, (left, right)):
921 self.left = left
922 self.right = right
923
924 def getChildren(self):
925 return self.left, self.right
926
927 def getChildNodes(self):
928 return self.left, self.right
929
930 def __repr__(self):
931 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
932
933class Assign(Node):
934 nodes["assign"] = "Assign"
935 def __init__(self, nodes, expr):
936 self.nodes = nodes
937 self.expr = expr
938
939 def getChildren(self):
940 children = []
941 children.extend(flatten(self.nodes))
942 children.append(self.expr)
943 return tuple(children)
944
945 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000946 nodelist = []
947 nodelist.extend(flatten_nodes(self.nodes))
948 nodelist.append(self.expr)
949 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000950
951 def __repr__(self):
952 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
953
954class Lambda(Node):
955 nodes["lambda"] = "Lambda"
956 def __init__(self, argnames, defaults, flags, code):
957 self.argnames = argnames
958 self.defaults = defaults
959 self.flags = flags
960 self.code = code
961 self.varargs = self.kwargs = None
962 if flags & CO_VARARGS:
963 self.varargs = 1
964 if flags & CO_VARKEYWORDS:
965 self.kwargs = 1
966
967
968 def getChildren(self):
969 children = []
970 children.append(self.argnames)
971 children.extend(flatten(self.defaults))
972 children.append(self.flags)
973 children.append(self.code)
974 return tuple(children)
975
976 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000977 nodelist = []
978 nodelist.extend(flatten_nodes(self.defaults))
979 nodelist.append(self.code)
980 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000981
982 def __repr__(self):
983 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
984
985class And(Node):
986 nodes["and"] = "And"
987 def __init__(self, nodes):
988 self.nodes = nodes
989
990 def getChildren(self):
991 children = []
992 children.extend(flatten(self.nodes))
993 return tuple(children)
994
995 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +0000996 nodelist = []
997 nodelist.extend(flatten_nodes(self.nodes))
998 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +0000999
1000 def __repr__(self):
1001 return "And(%s)" % (repr(self.nodes),)
1002
1003class Compare(Node):
1004 nodes["compare"] = "Compare"
1005 def __init__(self, expr, ops):
1006 self.expr = expr
1007 self.ops = ops
1008
1009 def getChildren(self):
1010 children = []
1011 children.append(self.expr)
1012 children.extend(flatten(self.ops))
1013 return tuple(children)
1014
1015 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001016 nodelist = []
1017 nodelist.append(self.expr)
1018 nodelist.extend(flatten_nodes(self.ops))
1019 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001020
1021 def __repr__(self):
1022 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
1023
1024class Bitor(Node):
1025 nodes["bitor"] = "Bitor"
1026 def __init__(self, nodes):
1027 self.nodes = nodes
1028
1029 def getChildren(self):
1030 children = []
1031 children.extend(flatten(self.nodes))
1032 return tuple(children)
1033
1034 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001035 nodelist = []
1036 nodelist.extend(flatten_nodes(self.nodes))
1037 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001038
1039 def __repr__(self):
1040 return "Bitor(%s)" % (repr(self.nodes),)
1041
1042class Bitxor(Node):
1043 nodes["bitxor"] = "Bitxor"
1044 def __init__(self, nodes):
1045 self.nodes = nodes
1046
1047 def getChildren(self):
1048 children = []
1049 children.extend(flatten(self.nodes))
1050 return tuple(children)
1051
1052 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001053 nodelist = []
1054 nodelist.extend(flatten_nodes(self.nodes))
1055 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001056
1057 def __repr__(self):
1058 return "Bitxor(%s)" % (repr(self.nodes),)
1059
1060class CallFunc(Node):
1061 nodes["callfunc"] = "CallFunc"
1062 def __init__(self, node, args, star_args = None, dstar_args = None):
1063 self.node = node
1064 self.args = args
1065 self.star_args = star_args
1066 self.dstar_args = dstar_args
1067
1068 def getChildren(self):
1069 children = []
1070 children.append(self.node)
1071 children.extend(flatten(self.args))
1072 children.append(self.star_args)
1073 children.append(self.dstar_args)
1074 return tuple(children)
1075
1076 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001077 nodelist = []
1078 nodelist.append(self.node)
1079 nodelist.extend(flatten_nodes(self.args))
1080 if self.star_args is not None: nodelist.append(self.star_args)
1081 if self.dstar_args is not None: nodelist.append(self.dstar_args)
1082 return tuple(nodelist)
Jeremy Hyltonc8ed18a2001-09-17 20:17:02 +00001083
1084 def __repr__(self):
1085 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
1086
1087class Global(Node):
1088 nodes["global"] = "Global"
1089 def __init__(self, names):
1090 self.names = names
1091
1092 def getChildren(self):
1093 return self.names,
1094
1095 def getChildNodes(self):
1096 return ()
1097
1098 def __repr__(self):
1099 return "Global(%s)" % (repr(self.names),)
1100
1101class Add(Node):
1102 nodes["add"] = "Add"
1103 def __init__(self, (left, right)):
1104 self.left = left
1105 self.right = right
1106
1107 def getChildren(self):
1108 return self.left, self.right
1109
1110 def getChildNodes(self):
1111 return self.left, self.right
1112
1113 def __repr__(self):
1114 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
1115
1116class ListCompIf(Node):
1117 nodes["listcompif"] = "ListCompIf"
1118 def __init__(self, test):
1119 self.test = test
1120
1121 def getChildren(self):
1122 return self.test,
1123
1124 def getChildNodes(self):
1125 return self.test,
1126
1127 def __repr__(self):
1128 return "ListCompIf(%s)" % (repr(self.test),)
1129
1130class Sub(Node):
1131 nodes["sub"] = "Sub"
1132 def __init__(self, (left, right)):
1133 self.left = left
1134 self.right = right
1135
1136 def getChildren(self):
1137 return self.left, self.right
1138
1139 def getChildNodes(self):
1140 return self.left, self.right
1141
1142 def __repr__(self):
1143 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
1144
1145class Pass(Node):
1146 nodes["pass"] = "Pass"
1147 def __init__(self, ):
1148 pass
1149
1150 def getChildren(self):
1151 return ()
1152
1153 def getChildNodes(self):
1154 return ()
1155
1156 def __repr__(self):
1157 return "Pass()"
1158
1159class UnarySub(Node):
1160 nodes["unarysub"] = "UnarySub"
1161 def __init__(self, expr):
1162 self.expr = expr
1163
1164 def getChildren(self):
1165 return self.expr,
1166
1167 def getChildNodes(self):
1168 return self.expr,
1169
1170 def __repr__(self):
1171 return "UnarySub(%s)" % (repr(self.expr),)
1172
Jeremy Hyltonf968e852000-02-04 00:25:23 +00001173class If(Node):
Jeremy Hylton628d2892000-10-25 18:02:59 +00001174 nodes["if"] = "If"
1175 def __init__(self, tests, else_):
1176 self.tests = tests
1177 self.else_ = else_
Jeremy Hylton5477f522001-08-29 18:08:02 +00001178
1179 def getChildren(self):
1180 children = []
1181 children.extend(flatten(self.tests))
1182 children.append(self.else_)
1183 return tuple(children)
1184
1185 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001186 nodelist = []
1187 nodelist.extend(flatten_nodes(self.tests))
1188 if self.else_ is not None: nodelist.append(self.else_)
1189 return tuple(nodelist)
Jeremy Hylton5477f522001-08-29 18:08:02 +00001190
Jeremy Hylton628d2892000-10-25 18:02:59 +00001191 def __repr__(self):
1192 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
Jeremy Hyltonf968e852000-02-04 00:25:23 +00001193
Jeremy Hylton9c048f92000-10-13 21:58:13 +00001194class ListComp(Node):
Jeremy Hylton628d2892000-10-25 18:02:59 +00001195 nodes["listcomp"] = "ListComp"
1196 def __init__(self, expr, quals):
1197 self.expr = expr
1198 self.quals = quals
Jeremy Hylton5477f522001-08-29 18:08:02 +00001199
1200 def getChildren(self):
1201 children = []
1202 children.append(self.expr)
1203 children.extend(flatten(self.quals))
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.quals))
1210 return tuple(nodelist)
Jeremy Hylton5477f522001-08-29 18:08:02 +00001211
Jeremy Hylton628d2892000-10-25 18:02:59 +00001212 def __repr__(self):
1213 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
Jeremy Hyltonf968e852000-02-04 00:25:23 +00001214
Jeremy Hylton628d2892000-10-25 18:02:59 +00001215class ListCompFor(Node):
1216 nodes["listcompfor"] = "ListCompFor"
1217 def __init__(self, assign, list, ifs):
1218 self.assign = assign
1219 self.list = list
1220 self.ifs = ifs
Jeremy Hylton5477f522001-08-29 18:08:02 +00001221
1222 def getChildren(self):
1223 children = []
1224 children.append(self.assign)
1225 children.append(self.list)
1226 children.extend(flatten(self.ifs))
1227 return tuple(children)
1228
1229 def getChildNodes(self):
Martin v. Löwis0ac16ec2002-02-23 22:35:33 +00001230 nodelist = []
1231 nodelist.append(self.assign)
1232 nodelist.append(self.list)
1233 nodelist.extend(flatten_nodes(self.ifs))
1234 return tuple(nodelist)
Jeremy Hylton5477f522001-08-29 18:08:02 +00001235
Jeremy Hylton628d2892000-10-25 18:02:59 +00001236 def __repr__(self):
1237 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
Jeremy Hyltonf968e852000-02-04 00:25:23 +00001238
Raymond Hettinger354433a2004-05-19 08:20:33 +00001239class GenExpr(Node):
1240 nodes["genexpr"] = "GenExpr"
1241 def __init__(self, code):
1242 self.code = code
1243 self.argnames = ['[outmost-iterable]']
1244 self.varargs = self.kwargs = None
1245
1246 def getChildren(self):
1247 return self.code,
1248
1249 def getChildNodes(self):
1250 return self.code,
1251
1252 def __repr__(self):
1253 return "GenExpr(%s)" % (repr(self.code),)
1254
1255class GenExprInner(Node):
1256 nodes["genexprinner"] = "GenExprInner"
1257 def __init__(self, expr, quals):
1258 self.expr = expr
1259 self.quals = quals
1260
1261 def getChildren(self):
1262 children = []
1263 children.append(self.expr)
1264 children.extend(flatten(self.quals))
1265 return tuple(children)
1266
1267 def getChildNodes(self):
1268 nodelist = []
1269 nodelist.append(self.expr)
1270 nodelist.extend(flatten_nodes(self.quals))
1271 return tuple(nodelist)
1272
1273 def __repr__(self):
1274 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
1275
1276class GenExprFor(Node):
1277 nodes["genexprfor"] = "GenExprFor"
1278 def __init__(self, assign, iter, ifs):
1279 self.assign = assign
1280 self.iter = iter
1281 self.ifs = ifs
1282 self.is_outmost = False
1283
1284 def getChildren(self):
1285 children = []
1286 children.append(self.assign)
1287 children.append(self.iter)
1288 children.extend(flatten(self.ifs))
1289 return tuple(children)
1290
1291 def getChildNodes(self):
1292 nodelist = []
1293 nodelist.append(self.assign)
1294 nodelist.append(self.iter)
1295 nodelist.extend(flatten_nodes(self.ifs))
1296 return tuple(nodelist)
1297
1298 def __repr__(self):
1299 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
1300
1301class GenExprIf(Node):
1302 nodes["genexprif"] = "GenExprIf"
1303 def __init__(self, test):
1304 self.test = test
1305
1306 def getChildren(self):
1307 return self.test,
1308
1309 def getChildNodes(self):
1310 return self.test,
1311
1312 def __repr__(self):
1313 return "GenExprIf(%s)" % (repr(self.test),)
1314
Jeremy Hyltonf968e852000-02-04 00:25:23 +00001315klasses = globals()
1316for k in nodes.keys():
Jeremy Hylton628d2892000-10-25 18:02:59 +00001317 nodes[k] = klasses[nodes[k]]