1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/compiler/ast.py Fri May 18 23:26:30 2012 +0200
1.3 @@ -0,0 +1,1419 @@
1.4 +"""Python abstract syntax node definitions
1.5 +
1.6 +This file is automatically generated by Tools/compiler/astgen.py
1.7 +"""
1.8 +from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
1.9 +
1.10 +def flatten(seq):
1.11 + l = []
1.12 + for elt in seq:
1.13 + t = type(elt)
1.14 + if t is tuple or t is list:
1.15 + for elt2 in flatten(elt):
1.16 + l.append(elt2)
1.17 + else:
1.18 + l.append(elt)
1.19 + return l
1.20 +
1.21 +def flatten_nodes(seq):
1.22 + return [n for n in flatten(seq) if isinstance(n, Node)]
1.23 +
1.24 +nodes = {}
1.25 +
1.26 +class Node:
1.27 + """Abstract base class for ast nodes."""
1.28 + def getChildren(self):
1.29 + pass # implemented by subclasses
1.30 + def __iter__(self):
1.31 + for n in self.getChildren():
1.32 + yield n
1.33 + def asList(self): # for backwards compatibility
1.34 + return self.getChildren()
1.35 + def getChildNodes(self):
1.36 + pass # implemented by subclasses
1.37 +
1.38 +class EmptyNode(Node):
1.39 + pass
1.40 +
1.41 +class Expression(Node):
1.42 + # Expression is an artificial node class to support "eval"
1.43 + nodes["expression"] = "Expression"
1.44 + def __init__(self, node):
1.45 + self.node = node
1.46 +
1.47 + def getChildren(self):
1.48 + return self.node,
1.49 +
1.50 + def getChildNodes(self):
1.51 + return self.node,
1.52 +
1.53 + def __repr__(self):
1.54 + return "Expression(%s)" % (repr(self.node))
1.55 +
1.56 +class Add(Node):
1.57 + def __init__(self, leftright, lineno=None):
1.58 + self.left = leftright[0]
1.59 + self.right = leftright[1]
1.60 + self.lineno = lineno
1.61 +
1.62 + def getChildren(self):
1.63 + return self.left, self.right
1.64 +
1.65 + def getChildNodes(self):
1.66 + return self.left, self.right
1.67 +
1.68 + def __repr__(self):
1.69 + return "Add((%s, %s))" % (repr(self.left), repr(self.right))
1.70 +
1.71 +class And(Node):
1.72 + def __init__(self, nodes, lineno=None):
1.73 + self.nodes = nodes
1.74 + self.lineno = lineno
1.75 +
1.76 + def getChildren(self):
1.77 + return tuple(flatten(self.nodes))
1.78 +
1.79 + def getChildNodes(self):
1.80 + nodelist = []
1.81 + nodelist.extend(flatten_nodes(self.nodes))
1.82 + return tuple(nodelist)
1.83 +
1.84 + def __repr__(self):
1.85 + return "And(%s)" % (repr(self.nodes),)
1.86 +
1.87 +class AssAttr(Node):
1.88 + def __init__(self, expr, attrname, flags, lineno=None):
1.89 + self.expr = expr
1.90 + self.attrname = attrname
1.91 + self.flags = flags
1.92 + self.lineno = lineno
1.93 +
1.94 + def getChildren(self):
1.95 + return self.expr, self.attrname, self.flags
1.96 +
1.97 + def getChildNodes(self):
1.98 + return self.expr,
1.99 +
1.100 + def __repr__(self):
1.101 + return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
1.102 +
1.103 +class AssList(Node):
1.104 + def __init__(self, nodes, lineno=None):
1.105 + self.nodes = nodes
1.106 + self.lineno = lineno
1.107 +
1.108 + def getChildren(self):
1.109 + return tuple(flatten(self.nodes))
1.110 +
1.111 + def getChildNodes(self):
1.112 + nodelist = []
1.113 + nodelist.extend(flatten_nodes(self.nodes))
1.114 + return tuple(nodelist)
1.115 +
1.116 + def __repr__(self):
1.117 + return "AssList(%s)" % (repr(self.nodes),)
1.118 +
1.119 +class AssName(Node):
1.120 + def __init__(self, name, flags, lineno=None):
1.121 + self.name = name
1.122 + self.flags = flags
1.123 + self.lineno = lineno
1.124 +
1.125 + def getChildren(self):
1.126 + return self.name, self.flags
1.127 +
1.128 + def getChildNodes(self):
1.129 + return ()
1.130 +
1.131 + def __repr__(self):
1.132 + return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
1.133 +
1.134 +class AssTuple(Node):
1.135 + def __init__(self, nodes, lineno=None):
1.136 + self.nodes = nodes
1.137 + self.lineno = lineno
1.138 +
1.139 + def getChildren(self):
1.140 + return tuple(flatten(self.nodes))
1.141 +
1.142 + def getChildNodes(self):
1.143 + nodelist = []
1.144 + nodelist.extend(flatten_nodes(self.nodes))
1.145 + return tuple(nodelist)
1.146 +
1.147 + def __repr__(self):
1.148 + return "AssTuple(%s)" % (repr(self.nodes),)
1.149 +
1.150 +class Assert(Node):
1.151 + def __init__(self, test, fail, lineno=None):
1.152 + self.test = test
1.153 + self.fail = fail
1.154 + self.lineno = lineno
1.155 +
1.156 + def getChildren(self):
1.157 + children = []
1.158 + children.append(self.test)
1.159 + children.append(self.fail)
1.160 + return tuple(children)
1.161 +
1.162 + def getChildNodes(self):
1.163 + nodelist = []
1.164 + nodelist.append(self.test)
1.165 + if self.fail is not None:
1.166 + nodelist.append(self.fail)
1.167 + return tuple(nodelist)
1.168 +
1.169 + def __repr__(self):
1.170 + return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
1.171 +
1.172 +class Assign(Node):
1.173 + def __init__(self, nodes, expr, lineno=None):
1.174 + self.nodes = nodes
1.175 + self.expr = expr
1.176 + self.lineno = lineno
1.177 +
1.178 + def getChildren(self):
1.179 + children = []
1.180 + children.extend(flatten(self.nodes))
1.181 + children.append(self.expr)
1.182 + return tuple(children)
1.183 +
1.184 + def getChildNodes(self):
1.185 + nodelist = []
1.186 + nodelist.extend(flatten_nodes(self.nodes))
1.187 + nodelist.append(self.expr)
1.188 + return tuple(nodelist)
1.189 +
1.190 + def __repr__(self):
1.191 + return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
1.192 +
1.193 +class AugAssign(Node):
1.194 + def __init__(self, node, op, expr, lineno=None):
1.195 + self.node = node
1.196 + self.op = op
1.197 + self.expr = expr
1.198 + self.lineno = lineno
1.199 +
1.200 + def getChildren(self):
1.201 + return self.node, self.op, self.expr
1.202 +
1.203 + def getChildNodes(self):
1.204 + return self.node, self.expr
1.205 +
1.206 + def __repr__(self):
1.207 + return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
1.208 +
1.209 +class Backquote(Node):
1.210 + def __init__(self, expr, lineno=None):
1.211 + self.expr = expr
1.212 + self.lineno = lineno
1.213 +
1.214 + def getChildren(self):
1.215 + return self.expr,
1.216 +
1.217 + def getChildNodes(self):
1.218 + return self.expr,
1.219 +
1.220 + def __repr__(self):
1.221 + return "Backquote(%s)" % (repr(self.expr),)
1.222 +
1.223 +class Bitand(Node):
1.224 + def __init__(self, nodes, lineno=None):
1.225 + self.nodes = nodes
1.226 + self.lineno = lineno
1.227 +
1.228 + def getChildren(self):
1.229 + return tuple(flatten(self.nodes))
1.230 +
1.231 + def getChildNodes(self):
1.232 + nodelist = []
1.233 + nodelist.extend(flatten_nodes(self.nodes))
1.234 + return tuple(nodelist)
1.235 +
1.236 + def __repr__(self):
1.237 + return "Bitand(%s)" % (repr(self.nodes),)
1.238 +
1.239 +class Bitor(Node):
1.240 + def __init__(self, nodes, lineno=None):
1.241 + self.nodes = nodes
1.242 + self.lineno = lineno
1.243 +
1.244 + def getChildren(self):
1.245 + return tuple(flatten(self.nodes))
1.246 +
1.247 + def getChildNodes(self):
1.248 + nodelist = []
1.249 + nodelist.extend(flatten_nodes(self.nodes))
1.250 + return tuple(nodelist)
1.251 +
1.252 + def __repr__(self):
1.253 + return "Bitor(%s)" % (repr(self.nodes),)
1.254 +
1.255 +class Bitxor(Node):
1.256 + def __init__(self, nodes, lineno=None):
1.257 + self.nodes = nodes
1.258 + self.lineno = lineno
1.259 +
1.260 + def getChildren(self):
1.261 + return tuple(flatten(self.nodes))
1.262 +
1.263 + def getChildNodes(self):
1.264 + nodelist = []
1.265 + nodelist.extend(flatten_nodes(self.nodes))
1.266 + return tuple(nodelist)
1.267 +
1.268 + def __repr__(self):
1.269 + return "Bitxor(%s)" % (repr(self.nodes),)
1.270 +
1.271 +class Break(Node):
1.272 + def __init__(self, lineno=None):
1.273 + self.lineno = lineno
1.274 +
1.275 + def getChildren(self):
1.276 + return ()
1.277 +
1.278 + def getChildNodes(self):
1.279 + return ()
1.280 +
1.281 + def __repr__(self):
1.282 + return "Break()"
1.283 +
1.284 +class CallFunc(Node):
1.285 + def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
1.286 + self.node = node
1.287 + self.args = args
1.288 + self.star_args = star_args
1.289 + self.dstar_args = dstar_args
1.290 + self.lineno = lineno
1.291 +
1.292 + def getChildren(self):
1.293 + children = []
1.294 + children.append(self.node)
1.295 + children.extend(flatten(self.args))
1.296 + children.append(self.star_args)
1.297 + children.append(self.dstar_args)
1.298 + return tuple(children)
1.299 +
1.300 + def getChildNodes(self):
1.301 + nodelist = []
1.302 + nodelist.append(self.node)
1.303 + nodelist.extend(flatten_nodes(self.args))
1.304 + if self.star_args is not None:
1.305 + nodelist.append(self.star_args)
1.306 + if self.dstar_args is not None:
1.307 + nodelist.append(self.dstar_args)
1.308 + return tuple(nodelist)
1.309 +
1.310 + def __repr__(self):
1.311 + return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
1.312 +
1.313 +class Class(Node):
1.314 + def __init__(self, name, bases, doc, code, decorators = None, lineno=None):
1.315 + self.name = name
1.316 + self.bases = bases
1.317 + self.doc = doc
1.318 + self.code = code
1.319 + self.decorators = decorators
1.320 + self.lineno = lineno
1.321 +
1.322 + def getChildren(self):
1.323 + children = []
1.324 + children.append(self.name)
1.325 + children.extend(flatten(self.bases))
1.326 + children.append(self.doc)
1.327 + children.append(self.code)
1.328 + children.append(self.decorators)
1.329 + return tuple(children)
1.330 +
1.331 + def getChildNodes(self):
1.332 + nodelist = []
1.333 + nodelist.extend(flatten_nodes(self.bases))
1.334 + nodelist.append(self.code)
1.335 + if self.decorators is not None:
1.336 + nodelist.append(self.decorators)
1.337 + return tuple(nodelist)
1.338 +
1.339 + def __repr__(self):
1.340 + return "Class(%s, %s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code), repr(self.decorators))
1.341 +
1.342 +class Compare(Node):
1.343 + def __init__(self, expr, ops, lineno=None):
1.344 + self.expr = expr
1.345 + self.ops = ops
1.346 + self.lineno = lineno
1.347 +
1.348 + def getChildren(self):
1.349 + children = []
1.350 + children.append(self.expr)
1.351 + children.extend(flatten(self.ops))
1.352 + return tuple(children)
1.353 +
1.354 + def getChildNodes(self):
1.355 + nodelist = []
1.356 + nodelist.append(self.expr)
1.357 + nodelist.extend(flatten_nodes(self.ops))
1.358 + return tuple(nodelist)
1.359 +
1.360 + def __repr__(self):
1.361 + return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
1.362 +
1.363 +class Const(Node):
1.364 + def __init__(self, value, lineno=None):
1.365 + self.value = value
1.366 + self.lineno = lineno
1.367 +
1.368 + def getChildren(self):
1.369 + return self.value,
1.370 +
1.371 + def getChildNodes(self):
1.372 + return ()
1.373 +
1.374 + def __repr__(self):
1.375 + return "Const(%s)" % (repr(self.value),)
1.376 +
1.377 +class Continue(Node):
1.378 + def __init__(self, lineno=None):
1.379 + self.lineno = lineno
1.380 +
1.381 + def getChildren(self):
1.382 + return ()
1.383 +
1.384 + def getChildNodes(self):
1.385 + return ()
1.386 +
1.387 + def __repr__(self):
1.388 + return "Continue()"
1.389 +
1.390 +class Decorators(Node):
1.391 + def __init__(self, nodes, lineno=None):
1.392 + self.nodes = nodes
1.393 + self.lineno = lineno
1.394 +
1.395 + def getChildren(self):
1.396 + return tuple(flatten(self.nodes))
1.397 +
1.398 + def getChildNodes(self):
1.399 + nodelist = []
1.400 + nodelist.extend(flatten_nodes(self.nodes))
1.401 + return tuple(nodelist)
1.402 +
1.403 + def __repr__(self):
1.404 + return "Decorators(%s)" % (repr(self.nodes),)
1.405 +
1.406 +class Dict(Node):
1.407 + def __init__(self, items, lineno=None):
1.408 + self.items = items
1.409 + self.lineno = lineno
1.410 +
1.411 + def getChildren(self):
1.412 + return tuple(flatten(self.items))
1.413 +
1.414 + def getChildNodes(self):
1.415 + nodelist = []
1.416 + nodelist.extend(flatten_nodes(self.items))
1.417 + return tuple(nodelist)
1.418 +
1.419 + def __repr__(self):
1.420 + return "Dict(%s)" % (repr(self.items),)
1.421 +
1.422 +class Discard(Node):
1.423 + def __init__(self, expr, lineno=None):
1.424 + self.expr = expr
1.425 + self.lineno = lineno
1.426 +
1.427 + def getChildren(self):
1.428 + return self.expr,
1.429 +
1.430 + def getChildNodes(self):
1.431 + return self.expr,
1.432 +
1.433 + def __repr__(self):
1.434 + return "Discard(%s)" % (repr(self.expr),)
1.435 +
1.436 +class Div(Node):
1.437 + def __init__(self, leftright, lineno=None):
1.438 + self.left = leftright[0]
1.439 + self.right = leftright[1]
1.440 + self.lineno = lineno
1.441 +
1.442 + def getChildren(self):
1.443 + return self.left, self.right
1.444 +
1.445 + def getChildNodes(self):
1.446 + return self.left, self.right
1.447 +
1.448 + def __repr__(self):
1.449 + return "Div((%s, %s))" % (repr(self.left), repr(self.right))
1.450 +
1.451 +class Ellipsis(Node):
1.452 + def __init__(self, lineno=None):
1.453 + self.lineno = lineno
1.454 +
1.455 + def getChildren(self):
1.456 + return ()
1.457 +
1.458 + def getChildNodes(self):
1.459 + return ()
1.460 +
1.461 + def __repr__(self):
1.462 + return "Ellipsis()"
1.463 +
1.464 +class Exec(Node):
1.465 + def __init__(self, expr, locals, globals, lineno=None):
1.466 + self.expr = expr
1.467 + self.locals = locals
1.468 + self.globals = globals
1.469 + self.lineno = lineno
1.470 +
1.471 + def getChildren(self):
1.472 + children = []
1.473 + children.append(self.expr)
1.474 + children.append(self.locals)
1.475 + children.append(self.globals)
1.476 + return tuple(children)
1.477 +
1.478 + def getChildNodes(self):
1.479 + nodelist = []
1.480 + nodelist.append(self.expr)
1.481 + if self.locals is not None:
1.482 + nodelist.append(self.locals)
1.483 + if self.globals is not None:
1.484 + nodelist.append(self.globals)
1.485 + return tuple(nodelist)
1.486 +
1.487 + def __repr__(self):
1.488 + return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
1.489 +
1.490 +class FloorDiv(Node):
1.491 + def __init__(self, leftright, lineno=None):
1.492 + self.left = leftright[0]
1.493 + self.right = leftright[1]
1.494 + self.lineno = lineno
1.495 +
1.496 + def getChildren(self):
1.497 + return self.left, self.right
1.498 +
1.499 + def getChildNodes(self):
1.500 + return self.left, self.right
1.501 +
1.502 + def __repr__(self):
1.503 + return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
1.504 +
1.505 +class For(Node):
1.506 + def __init__(self, assign, list, body, else_, lineno=None):
1.507 + self.assign = assign
1.508 + self.list = list
1.509 + self.body = body
1.510 + self.else_ = else_
1.511 + self.lineno = lineno
1.512 +
1.513 + def getChildren(self):
1.514 + children = []
1.515 + children.append(self.assign)
1.516 + children.append(self.list)
1.517 + children.append(self.body)
1.518 + children.append(self.else_)
1.519 + return tuple(children)
1.520 +
1.521 + def getChildNodes(self):
1.522 + nodelist = []
1.523 + nodelist.append(self.assign)
1.524 + nodelist.append(self.list)
1.525 + nodelist.append(self.body)
1.526 + if self.else_ is not None:
1.527 + nodelist.append(self.else_)
1.528 + return tuple(nodelist)
1.529 +
1.530 + def __repr__(self):
1.531 + return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
1.532 +
1.533 +class From(Node):
1.534 + def __init__(self, modname, names, level, lineno=None):
1.535 + self.modname = modname
1.536 + self.names = names
1.537 + self.level = level
1.538 + self.lineno = lineno
1.539 +
1.540 + def getChildren(self):
1.541 + return self.modname, self.names, self.level
1.542 +
1.543 + def getChildNodes(self):
1.544 + return ()
1.545 +
1.546 + def __repr__(self):
1.547 + return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
1.548 +
1.549 +class Function(Node):
1.550 + def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
1.551 + self.decorators = decorators
1.552 + self.name = name
1.553 + self.argnames = argnames
1.554 + self.defaults = defaults
1.555 + self.flags = flags
1.556 + self.doc = doc
1.557 + self.code = code
1.558 + self.lineno = lineno
1.559 + self.varargs = self.kwargs = None
1.560 + if flags & CO_VARARGS:
1.561 + self.varargs = 1
1.562 + if flags & CO_VARKEYWORDS:
1.563 + self.kwargs = 1
1.564 +
1.565 +
1.566 + def getChildren(self):
1.567 + children = []
1.568 + children.append(self.decorators)
1.569 + children.append(self.name)
1.570 + children.append(self.argnames)
1.571 + children.extend(flatten(self.defaults))
1.572 + children.append(self.flags)
1.573 + children.append(self.doc)
1.574 + children.append(self.code)
1.575 + return tuple(children)
1.576 +
1.577 + def getChildNodes(self):
1.578 + nodelist = []
1.579 + if self.decorators is not None:
1.580 + nodelist.append(self.decorators)
1.581 + nodelist.extend(flatten_nodes(self.defaults))
1.582 + nodelist.append(self.code)
1.583 + return tuple(nodelist)
1.584 +
1.585 + def __repr__(self):
1.586 + 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))
1.587 +
1.588 +class GenExpr(Node):
1.589 + def __init__(self, code, lineno=None):
1.590 + self.code = code
1.591 + self.lineno = lineno
1.592 + self.argnames = ['.0']
1.593 + self.varargs = self.kwargs = None
1.594 +
1.595 +
1.596 + def getChildren(self):
1.597 + return self.code,
1.598 +
1.599 + def getChildNodes(self):
1.600 + return self.code,
1.601 +
1.602 + def __repr__(self):
1.603 + return "GenExpr(%s)" % (repr(self.code),)
1.604 +
1.605 +class GenExprFor(Node):
1.606 + def __init__(self, assign, iter, ifs, lineno=None):
1.607 + self.assign = assign
1.608 + self.iter = iter
1.609 + self.ifs = ifs
1.610 + self.lineno = lineno
1.611 + self.is_outmost = False
1.612 +
1.613 + def getChildren(self):
1.614 + children = []
1.615 + children.append(self.assign)
1.616 + children.append(self.iter)
1.617 + children.extend(flatten(self.ifs))
1.618 + return tuple(children)
1.619 +
1.620 + def getChildNodes(self):
1.621 + nodelist = []
1.622 + nodelist.append(self.assign)
1.623 + nodelist.append(self.iter)
1.624 + nodelist.extend(flatten_nodes(self.ifs))
1.625 + return tuple(nodelist)
1.626 +
1.627 + def __repr__(self):
1.628 + return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
1.629 +
1.630 +class GenExprIf(Node):
1.631 + def __init__(self, test, lineno=None):
1.632 + self.test = test
1.633 + self.lineno = lineno
1.634 +
1.635 + def getChildren(self):
1.636 + return self.test,
1.637 +
1.638 + def getChildNodes(self):
1.639 + return self.test,
1.640 +
1.641 + def __repr__(self):
1.642 + return "GenExprIf(%s)" % (repr(self.test),)
1.643 +
1.644 +class GenExprInner(Node):
1.645 + def __init__(self, expr, quals, lineno=None):
1.646 + self.expr = expr
1.647 + self.quals = quals
1.648 + self.lineno = lineno
1.649 +
1.650 + def getChildren(self):
1.651 + children = []
1.652 + children.append(self.expr)
1.653 + children.extend(flatten(self.quals))
1.654 + return tuple(children)
1.655 +
1.656 + def getChildNodes(self):
1.657 + nodelist = []
1.658 + nodelist.append(self.expr)
1.659 + nodelist.extend(flatten_nodes(self.quals))
1.660 + return tuple(nodelist)
1.661 +
1.662 + def __repr__(self):
1.663 + return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
1.664 +
1.665 +class Getattr(Node):
1.666 + def __init__(self, expr, attrname, lineno=None):
1.667 + self.expr = expr
1.668 + self.attrname = attrname
1.669 + self.lineno = lineno
1.670 +
1.671 + def getChildren(self):
1.672 + return self.expr, self.attrname
1.673 +
1.674 + def getChildNodes(self):
1.675 + return self.expr,
1.676 +
1.677 + def __repr__(self):
1.678 + return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
1.679 +
1.680 +class Global(Node):
1.681 + def __init__(self, names, lineno=None):
1.682 + self.names = names
1.683 + self.lineno = lineno
1.684 +
1.685 + def getChildren(self):
1.686 + return self.names,
1.687 +
1.688 + def getChildNodes(self):
1.689 + return ()
1.690 +
1.691 + def __repr__(self):
1.692 + return "Global(%s)" % (repr(self.names),)
1.693 +
1.694 +class If(Node):
1.695 + def __init__(self, tests, else_, lineno=None):
1.696 + self.tests = tests
1.697 + self.else_ = else_
1.698 + self.lineno = lineno
1.699 +
1.700 + def getChildren(self):
1.701 + children = []
1.702 + children.extend(flatten(self.tests))
1.703 + children.append(self.else_)
1.704 + return tuple(children)
1.705 +
1.706 + def getChildNodes(self):
1.707 + nodelist = []
1.708 + nodelist.extend(flatten_nodes(self.tests))
1.709 + if self.else_ is not None:
1.710 + nodelist.append(self.else_)
1.711 + return tuple(nodelist)
1.712 +
1.713 + def __repr__(self):
1.714 + return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
1.715 +
1.716 +class IfExp(Node):
1.717 + def __init__(self, test, then, else_, lineno=None):
1.718 + self.test = test
1.719 + self.then = then
1.720 + self.else_ = else_
1.721 + self.lineno = lineno
1.722 +
1.723 + def getChildren(self):
1.724 + return self.test, self.then, self.else_
1.725 +
1.726 + def getChildNodes(self):
1.727 + return self.test, self.then, self.else_
1.728 +
1.729 + def __repr__(self):
1.730 + return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
1.731 +
1.732 +class Import(Node):
1.733 + def __init__(self, names, lineno=None):
1.734 + self.names = names
1.735 + self.lineno = lineno
1.736 +
1.737 + def getChildren(self):
1.738 + return self.names,
1.739 +
1.740 + def getChildNodes(self):
1.741 + return ()
1.742 +
1.743 + def __repr__(self):
1.744 + return "Import(%s)" % (repr(self.names),)
1.745 +
1.746 +class Invert(Node):
1.747 + def __init__(self, expr, lineno=None):
1.748 + self.expr = expr
1.749 + self.lineno = lineno
1.750 +
1.751 + def getChildren(self):
1.752 + return self.expr,
1.753 +
1.754 + def getChildNodes(self):
1.755 + return self.expr,
1.756 +
1.757 + def __repr__(self):
1.758 + return "Invert(%s)" % (repr(self.expr),)
1.759 +
1.760 +class Keyword(Node):
1.761 + def __init__(self, name, expr, lineno=None):
1.762 + self.name = name
1.763 + self.expr = expr
1.764 + self.lineno = lineno
1.765 +
1.766 + def getChildren(self):
1.767 + return self.name, self.expr
1.768 +
1.769 + def getChildNodes(self):
1.770 + return self.expr,
1.771 +
1.772 + def __repr__(self):
1.773 + return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
1.774 +
1.775 +class Lambda(Node):
1.776 + def __init__(self, argnames, defaults, flags, code, lineno=None):
1.777 + self.argnames = argnames
1.778 + self.defaults = defaults
1.779 + self.flags = flags
1.780 + self.code = code
1.781 + self.lineno = lineno
1.782 + self.varargs = self.kwargs = None
1.783 + if flags & CO_VARARGS:
1.784 + self.varargs = 1
1.785 + if flags & CO_VARKEYWORDS:
1.786 + self.kwargs = 1
1.787 +
1.788 +
1.789 + def getChildren(self):
1.790 + children = []
1.791 + children.append(self.argnames)
1.792 + children.extend(flatten(self.defaults))
1.793 + children.append(self.flags)
1.794 + children.append(self.code)
1.795 + return tuple(children)
1.796 +
1.797 + def getChildNodes(self):
1.798 + nodelist = []
1.799 + nodelist.extend(flatten_nodes(self.defaults))
1.800 + nodelist.append(self.code)
1.801 + return tuple(nodelist)
1.802 +
1.803 + def __repr__(self):
1.804 + return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
1.805 +
1.806 +class LeftShift(Node):
1.807 + def __init__(self, leftright, lineno=None):
1.808 + self.left = leftright[0]
1.809 + self.right = leftright[1]
1.810 + self.lineno = lineno
1.811 +
1.812 + def getChildren(self):
1.813 + return self.left, self.right
1.814 +
1.815 + def getChildNodes(self):
1.816 + return self.left, self.right
1.817 +
1.818 + def __repr__(self):
1.819 + return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
1.820 +
1.821 +class List(Node):
1.822 + def __init__(self, nodes, lineno=None):
1.823 + self.nodes = nodes
1.824 + self.lineno = lineno
1.825 +
1.826 + def getChildren(self):
1.827 + return tuple(flatten(self.nodes))
1.828 +
1.829 + def getChildNodes(self):
1.830 + nodelist = []
1.831 + nodelist.extend(flatten_nodes(self.nodes))
1.832 + return tuple(nodelist)
1.833 +
1.834 + def __repr__(self):
1.835 + return "List(%s)" % (repr(self.nodes),)
1.836 +
1.837 +class ListComp(Node):
1.838 + def __init__(self, expr, quals, lineno=None):
1.839 + self.expr = expr
1.840 + self.quals = quals
1.841 + self.lineno = lineno
1.842 +
1.843 + def getChildren(self):
1.844 + children = []
1.845 + children.append(self.expr)
1.846 + children.extend(flatten(self.quals))
1.847 + return tuple(children)
1.848 +
1.849 + def getChildNodes(self):
1.850 + nodelist = []
1.851 + nodelist.append(self.expr)
1.852 + nodelist.extend(flatten_nodes(self.quals))
1.853 + return tuple(nodelist)
1.854 +
1.855 + def __repr__(self):
1.856 + return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
1.857 +
1.858 +class ListCompFor(Node):
1.859 + def __init__(self, assign, list, ifs, lineno=None):
1.860 + self.assign = assign
1.861 + self.list = list
1.862 + self.ifs = ifs
1.863 + self.lineno = lineno
1.864 +
1.865 + def getChildren(self):
1.866 + children = []
1.867 + children.append(self.assign)
1.868 + children.append(self.list)
1.869 + children.extend(flatten(self.ifs))
1.870 + return tuple(children)
1.871 +
1.872 + def getChildNodes(self):
1.873 + nodelist = []
1.874 + nodelist.append(self.assign)
1.875 + nodelist.append(self.list)
1.876 + nodelist.extend(flatten_nodes(self.ifs))
1.877 + return tuple(nodelist)
1.878 +
1.879 + def __repr__(self):
1.880 + return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
1.881 +
1.882 +class ListCompIf(Node):
1.883 + def __init__(self, test, lineno=None):
1.884 + self.test = test
1.885 + self.lineno = lineno
1.886 +
1.887 + def getChildren(self):
1.888 + return self.test,
1.889 +
1.890 + def getChildNodes(self):
1.891 + return self.test,
1.892 +
1.893 + def __repr__(self):
1.894 + return "ListCompIf(%s)" % (repr(self.test),)
1.895 +
1.896 +class SetComp(Node):
1.897 + def __init__(self, expr, quals, lineno=None):
1.898 + self.expr = expr
1.899 + self.quals = quals
1.900 + self.lineno = lineno
1.901 +
1.902 + def getChildren(self):
1.903 + children = []
1.904 + children.append(self.expr)
1.905 + children.extend(flatten(self.quals))
1.906 + return tuple(children)
1.907 +
1.908 + def getChildNodes(self):
1.909 + nodelist = []
1.910 + nodelist.append(self.expr)
1.911 + nodelist.extend(flatten_nodes(self.quals))
1.912 + return tuple(nodelist)
1.913 +
1.914 + def __repr__(self):
1.915 + return "SetComp(%s, %s)" % (repr(self.expr), repr(self.quals))
1.916 +
1.917 +class DictComp(Node):
1.918 + def __init__(self, key, value, quals, lineno=None):
1.919 + self.key = key
1.920 + self.value = value
1.921 + self.quals = quals
1.922 + self.lineno = lineno
1.923 +
1.924 + def getChildren(self):
1.925 + children = []
1.926 + children.append(self.key)
1.927 + children.append(self.value)
1.928 + children.extend(flatten(self.quals))
1.929 + return tuple(children)
1.930 +
1.931 + def getChildNodes(self):
1.932 + nodelist = []
1.933 + nodelist.append(self.key)
1.934 + nodelist.append(self.value)
1.935 + nodelist.extend(flatten_nodes(self.quals))
1.936 + return tuple(nodelist)
1.937 +
1.938 + def __repr__(self):
1.939 + return "DictComp(%s, %s, %s)" % (repr(self.key), repr(self.value), repr(self.quals))
1.940 +
1.941 +class Mod(Node):
1.942 + def __init__(self, leftright, lineno=None):
1.943 + self.left = leftright[0]
1.944 + self.right = leftright[1]
1.945 + self.lineno = lineno
1.946 +
1.947 + def getChildren(self):
1.948 + return self.left, self.right
1.949 +
1.950 + def getChildNodes(self):
1.951 + return self.left, self.right
1.952 +
1.953 + def __repr__(self):
1.954 + return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
1.955 +
1.956 +class Module(Node):
1.957 + def __init__(self, doc, node, lineno=None):
1.958 + self.doc = doc
1.959 + self.node = node
1.960 + self.lineno = lineno
1.961 +
1.962 + def getChildren(self):
1.963 + return self.doc, self.node
1.964 +
1.965 + def getChildNodes(self):
1.966 + return self.node,
1.967 +
1.968 + def __repr__(self):
1.969 + return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
1.970 +
1.971 +class Mul(Node):
1.972 + def __init__(self, leftright, lineno=None):
1.973 + self.left = leftright[0]
1.974 + self.right = leftright[1]
1.975 + self.lineno = lineno
1.976 +
1.977 + def getChildren(self):
1.978 + return self.left, self.right
1.979 +
1.980 + def getChildNodes(self):
1.981 + return self.left, self.right
1.982 +
1.983 + def __repr__(self):
1.984 + return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
1.985 +
1.986 +class Name(Node):
1.987 + def __init__(self, name, lineno=None):
1.988 + self.name = name
1.989 + self.lineno = lineno
1.990 +
1.991 + def getChildren(self):
1.992 + return self.name,
1.993 +
1.994 + def getChildNodes(self):
1.995 + return ()
1.996 +
1.997 + def __repr__(self):
1.998 + return "Name(%s)" % (repr(self.name),)
1.999 +
1.1000 +class Not(Node):
1.1001 + def __init__(self, expr, lineno=None):
1.1002 + self.expr = expr
1.1003 + self.lineno = lineno
1.1004 +
1.1005 + def getChildren(self):
1.1006 + return self.expr,
1.1007 +
1.1008 + def getChildNodes(self):
1.1009 + return self.expr,
1.1010 +
1.1011 + def __repr__(self):
1.1012 + return "Not(%s)" % (repr(self.expr),)
1.1013 +
1.1014 +class Or(Node):
1.1015 + def __init__(self, nodes, lineno=None):
1.1016 + self.nodes = nodes
1.1017 + self.lineno = lineno
1.1018 +
1.1019 + def getChildren(self):
1.1020 + return tuple(flatten(self.nodes))
1.1021 +
1.1022 + def getChildNodes(self):
1.1023 + nodelist = []
1.1024 + nodelist.extend(flatten_nodes(self.nodes))
1.1025 + return tuple(nodelist)
1.1026 +
1.1027 + def __repr__(self):
1.1028 + return "Or(%s)" % (repr(self.nodes),)
1.1029 +
1.1030 +class Pass(Node):
1.1031 + def __init__(self, lineno=None):
1.1032 + self.lineno = lineno
1.1033 +
1.1034 + def getChildren(self):
1.1035 + return ()
1.1036 +
1.1037 + def getChildNodes(self):
1.1038 + return ()
1.1039 +
1.1040 + def __repr__(self):
1.1041 + return "Pass()"
1.1042 +
1.1043 +class Power(Node):
1.1044 + def __init__(self, leftright, lineno=None):
1.1045 + self.left = leftright[0]
1.1046 + self.right = leftright[1]
1.1047 + self.lineno = lineno
1.1048 +
1.1049 + def getChildren(self):
1.1050 + return self.left, self.right
1.1051 +
1.1052 + def getChildNodes(self):
1.1053 + return self.left, self.right
1.1054 +
1.1055 + def __repr__(self):
1.1056 + return "Power((%s, %s))" % (repr(self.left), repr(self.right))
1.1057 +
1.1058 +class Print(Node):
1.1059 + def __init__(self, nodes, dest, lineno=None):
1.1060 + self.nodes = nodes
1.1061 + self.dest = dest
1.1062 + self.lineno = lineno
1.1063 +
1.1064 + def getChildren(self):
1.1065 + children = []
1.1066 + children.extend(flatten(self.nodes))
1.1067 + children.append(self.dest)
1.1068 + return tuple(children)
1.1069 +
1.1070 + def getChildNodes(self):
1.1071 + nodelist = []
1.1072 + nodelist.extend(flatten_nodes(self.nodes))
1.1073 + if self.dest is not None:
1.1074 + nodelist.append(self.dest)
1.1075 + return tuple(nodelist)
1.1076 +
1.1077 + def __repr__(self):
1.1078 + return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.1079 +
1.1080 +class Printnl(Node):
1.1081 + def __init__(self, nodes, dest, lineno=None):
1.1082 + self.nodes = nodes
1.1083 + self.dest = dest
1.1084 + self.lineno = lineno
1.1085 +
1.1086 + def getChildren(self):
1.1087 + children = []
1.1088 + children.extend(flatten(self.nodes))
1.1089 + children.append(self.dest)
1.1090 + return tuple(children)
1.1091 +
1.1092 + def getChildNodes(self):
1.1093 + nodelist = []
1.1094 + nodelist.extend(flatten_nodes(self.nodes))
1.1095 + if self.dest is not None:
1.1096 + nodelist.append(self.dest)
1.1097 + return tuple(nodelist)
1.1098 +
1.1099 + def __repr__(self):
1.1100 + return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.1101 +
1.1102 +class Raise(Node):
1.1103 + def __init__(self, expr1, expr2, expr3, lineno=None):
1.1104 + self.expr1 = expr1
1.1105 + self.expr2 = expr2
1.1106 + self.expr3 = expr3
1.1107 + self.lineno = lineno
1.1108 +
1.1109 + def getChildren(self):
1.1110 + children = []
1.1111 + children.append(self.expr1)
1.1112 + children.append(self.expr2)
1.1113 + children.append(self.expr3)
1.1114 + return tuple(children)
1.1115 +
1.1116 + def getChildNodes(self):
1.1117 + nodelist = []
1.1118 + if self.expr1 is not None:
1.1119 + nodelist.append(self.expr1)
1.1120 + if self.expr2 is not None:
1.1121 + nodelist.append(self.expr2)
1.1122 + if self.expr3 is not None:
1.1123 + nodelist.append(self.expr3)
1.1124 + return tuple(nodelist)
1.1125 +
1.1126 + def __repr__(self):
1.1127 + return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1.1128 +
1.1129 +class Return(Node):
1.1130 + def __init__(self, value, lineno=None):
1.1131 + self.value = value
1.1132 + self.lineno = lineno
1.1133 +
1.1134 + def getChildren(self):
1.1135 + return self.value,
1.1136 +
1.1137 + def getChildNodes(self):
1.1138 + return self.value,
1.1139 +
1.1140 + def __repr__(self):
1.1141 + return "Return(%s)" % (repr(self.value),)
1.1142 +
1.1143 +class RightShift(Node):
1.1144 + def __init__(self, leftright, lineno=None):
1.1145 + self.left = leftright[0]
1.1146 + self.right = leftright[1]
1.1147 + self.lineno = lineno
1.1148 +
1.1149 + def getChildren(self):
1.1150 + return self.left, self.right
1.1151 +
1.1152 + def getChildNodes(self):
1.1153 + return self.left, self.right
1.1154 +
1.1155 + def __repr__(self):
1.1156 + return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1.1157 +
1.1158 +class Set(Node):
1.1159 + def __init__(self, nodes, lineno=None):
1.1160 + self.nodes = nodes
1.1161 + self.lineno = lineno
1.1162 +
1.1163 + def getChildren(self):
1.1164 + return tuple(flatten(self.nodes))
1.1165 +
1.1166 + def getChildNodes(self):
1.1167 + nodelist = []
1.1168 + nodelist.extend(flatten_nodes(self.nodes))
1.1169 + return tuple(nodelist)
1.1170 +
1.1171 + def __repr__(self):
1.1172 + return "Set(%s)" % (repr(self.nodes),)
1.1173 +
1.1174 +class Slice(Node):
1.1175 + def __init__(self, expr, flags, lower, upper, lineno=None):
1.1176 + self.expr = expr
1.1177 + self.flags = flags
1.1178 + self.lower = lower
1.1179 + self.upper = upper
1.1180 + self.lineno = lineno
1.1181 +
1.1182 + def getChildren(self):
1.1183 + children = []
1.1184 + children.append(self.expr)
1.1185 + children.append(self.flags)
1.1186 + children.append(self.lower)
1.1187 + children.append(self.upper)
1.1188 + return tuple(children)
1.1189 +
1.1190 + def getChildNodes(self):
1.1191 + nodelist = []
1.1192 + nodelist.append(self.expr)
1.1193 + if self.lower is not None:
1.1194 + nodelist.append(self.lower)
1.1195 + if self.upper is not None:
1.1196 + nodelist.append(self.upper)
1.1197 + return tuple(nodelist)
1.1198 +
1.1199 + def __repr__(self):
1.1200 + return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1.1201 +
1.1202 +class Sliceobj(Node):
1.1203 + def __init__(self, nodes, lineno=None):
1.1204 + self.nodes = nodes
1.1205 + self.lineno = lineno
1.1206 +
1.1207 + def getChildren(self):
1.1208 + return tuple(flatten(self.nodes))
1.1209 +
1.1210 + def getChildNodes(self):
1.1211 + nodelist = []
1.1212 + nodelist.extend(flatten_nodes(self.nodes))
1.1213 + return tuple(nodelist)
1.1214 +
1.1215 + def __repr__(self):
1.1216 + return "Sliceobj(%s)" % (repr(self.nodes),)
1.1217 +
1.1218 +class Stmt(Node):
1.1219 + def __init__(self, nodes, lineno=None):
1.1220 + self.nodes = nodes
1.1221 + self.lineno = lineno
1.1222 +
1.1223 + def getChildren(self):
1.1224 + return tuple(flatten(self.nodes))
1.1225 +
1.1226 + def getChildNodes(self):
1.1227 + nodelist = []
1.1228 + nodelist.extend(flatten_nodes(self.nodes))
1.1229 + return tuple(nodelist)
1.1230 +
1.1231 + def __repr__(self):
1.1232 + return "Stmt(%s)" % (repr(self.nodes),)
1.1233 +
1.1234 +class Sub(Node):
1.1235 + def __init__(self, leftright, lineno=None):
1.1236 + self.left = leftright[0]
1.1237 + self.right = leftright[1]
1.1238 + self.lineno = lineno
1.1239 +
1.1240 + def getChildren(self):
1.1241 + return self.left, self.right
1.1242 +
1.1243 + def getChildNodes(self):
1.1244 + return self.left, self.right
1.1245 +
1.1246 + def __repr__(self):
1.1247 + return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
1.1248 +
1.1249 +class Subscript(Node):
1.1250 + def __init__(self, expr, flags, subs, lineno=None):
1.1251 + self.expr = expr
1.1252 + self.flags = flags
1.1253 + self.subs = subs
1.1254 + self.lineno = lineno
1.1255 +
1.1256 + def getChildren(self):
1.1257 + children = []
1.1258 + children.append(self.expr)
1.1259 + children.append(self.flags)
1.1260 + children.extend(flatten(self.subs))
1.1261 + return tuple(children)
1.1262 +
1.1263 + def getChildNodes(self):
1.1264 + nodelist = []
1.1265 + nodelist.append(self.expr)
1.1266 + nodelist.extend(flatten_nodes(self.subs))
1.1267 + return tuple(nodelist)
1.1268 +
1.1269 + def __repr__(self):
1.1270 + return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1.1271 +
1.1272 +class TryExcept(Node):
1.1273 + def __init__(self, body, handlers, else_, lineno=None):
1.1274 + self.body = body
1.1275 + self.handlers = handlers
1.1276 + self.else_ = else_
1.1277 + self.lineno = lineno
1.1278 +
1.1279 + def getChildren(self):
1.1280 + children = []
1.1281 + children.append(self.body)
1.1282 + children.extend(flatten(self.handlers))
1.1283 + children.append(self.else_)
1.1284 + return tuple(children)
1.1285 +
1.1286 + def getChildNodes(self):
1.1287 + nodelist = []
1.1288 + nodelist.append(self.body)
1.1289 + nodelist.extend(flatten_nodes(self.handlers))
1.1290 + if self.else_ is not None:
1.1291 + nodelist.append(self.else_)
1.1292 + return tuple(nodelist)
1.1293 +
1.1294 + def __repr__(self):
1.1295 + return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1.1296 +
1.1297 +class TryFinally(Node):
1.1298 + def __init__(self, body, final, lineno=None):
1.1299 + self.body = body
1.1300 + self.final = final
1.1301 + self.lineno = lineno
1.1302 +
1.1303 + def getChildren(self):
1.1304 + return self.body, self.final
1.1305 +
1.1306 + def getChildNodes(self):
1.1307 + return self.body, self.final
1.1308 +
1.1309 + def __repr__(self):
1.1310 + return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1.1311 +
1.1312 +class Tuple(Node):
1.1313 + def __init__(self, nodes, lineno=None):
1.1314 + self.nodes = nodes
1.1315 + self.lineno = lineno
1.1316 +
1.1317 + def getChildren(self):
1.1318 + return tuple(flatten(self.nodes))
1.1319 +
1.1320 + def getChildNodes(self):
1.1321 + nodelist = []
1.1322 + nodelist.extend(flatten_nodes(self.nodes))
1.1323 + return tuple(nodelist)
1.1324 +
1.1325 + def __repr__(self):
1.1326 + return "Tuple(%s)" % (repr(self.nodes),)
1.1327 +
1.1328 +class UnaryAdd(Node):
1.1329 + def __init__(self, expr, lineno=None):
1.1330 + self.expr = expr
1.1331 + self.lineno = lineno
1.1332 +
1.1333 + def getChildren(self):
1.1334 + return self.expr,
1.1335 +
1.1336 + def getChildNodes(self):
1.1337 + return self.expr,
1.1338 +
1.1339 + def __repr__(self):
1.1340 + return "UnaryAdd(%s)" % (repr(self.expr),)
1.1341 +
1.1342 +class UnarySub(Node):
1.1343 + def __init__(self, expr, lineno=None):
1.1344 + self.expr = expr
1.1345 + self.lineno = lineno
1.1346 +
1.1347 + def getChildren(self):
1.1348 + return self.expr,
1.1349 +
1.1350 + def getChildNodes(self):
1.1351 + return self.expr,
1.1352 +
1.1353 + def __repr__(self):
1.1354 + return "UnarySub(%s)" % (repr(self.expr),)
1.1355 +
1.1356 +class While(Node):
1.1357 + def __init__(self, test, body, else_, lineno=None):
1.1358 + self.test = test
1.1359 + self.body = body
1.1360 + self.else_ = else_
1.1361 + self.lineno = lineno
1.1362 +
1.1363 + def getChildren(self):
1.1364 + children = []
1.1365 + children.append(self.test)
1.1366 + children.append(self.body)
1.1367 + children.append(self.else_)
1.1368 + return tuple(children)
1.1369 +
1.1370 + def getChildNodes(self):
1.1371 + nodelist = []
1.1372 + nodelist.append(self.test)
1.1373 + nodelist.append(self.body)
1.1374 + if self.else_ is not None:
1.1375 + nodelist.append(self.else_)
1.1376 + return tuple(nodelist)
1.1377 +
1.1378 + def __repr__(self):
1.1379 + return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1.1380 +
1.1381 +class With(Node):
1.1382 + def __init__(self, expr, vars, body, lineno=None):
1.1383 + self.expr = expr
1.1384 + self.vars = vars
1.1385 + self.body = body
1.1386 + self.lineno = lineno
1.1387 +
1.1388 + def getChildren(self):
1.1389 + children = []
1.1390 + children.append(self.expr)
1.1391 + children.append(self.vars)
1.1392 + children.append(self.body)
1.1393 + return tuple(children)
1.1394 +
1.1395 + def getChildNodes(self):
1.1396 + nodelist = []
1.1397 + nodelist.append(self.expr)
1.1398 + if self.vars is not None:
1.1399 + nodelist.append(self.vars)
1.1400 + nodelist.append(self.body)
1.1401 + return tuple(nodelist)
1.1402 +
1.1403 + def __repr__(self):
1.1404 + return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1.1405 +
1.1406 +class Yield(Node):
1.1407 + def __init__(self, value, lineno=None):
1.1408 + self.value = value
1.1409 + self.lineno = lineno
1.1410 +
1.1411 + def getChildren(self):
1.1412 + return self.value,
1.1413 +
1.1414 + def getChildNodes(self):
1.1415 + return self.value,
1.1416 +
1.1417 + def __repr__(self):
1.1418 + return "Yield(%s)" % (repr(self.value),)
1.1419 +
1.1420 +for name, obj in globals().items():
1.1421 + if isinstance(obj, type) and issubclass(obj, Node):
1.1422 + nodes[name.lower()] = obj