1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/compiler/ast.py Tue May 01 22:04:53 2012 +0200
1.3 @@ -0,0 +1,1356 @@
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, (left, right), lineno=None):
1.58 + self.left = left
1.59 + self.right = right
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, 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.lineno = lineno
1.320 +
1.321 + def getChildren(self):
1.322 + children = []
1.323 + children.append(self.name)
1.324 + children.extend(flatten(self.bases))
1.325 + children.append(self.doc)
1.326 + children.append(self.code)
1.327 + return tuple(children)
1.328 +
1.329 + def getChildNodes(self):
1.330 + nodelist = []
1.331 + nodelist.extend(flatten_nodes(self.bases))
1.332 + nodelist.append(self.code)
1.333 + return tuple(nodelist)
1.334 +
1.335 + def __repr__(self):
1.336 + return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
1.337 +
1.338 +class Compare(Node):
1.339 + def __init__(self, expr, ops, lineno=None):
1.340 + self.expr = expr
1.341 + self.ops = ops
1.342 + self.lineno = lineno
1.343 +
1.344 + def getChildren(self):
1.345 + children = []
1.346 + children.append(self.expr)
1.347 + children.extend(flatten(self.ops))
1.348 + return tuple(children)
1.349 +
1.350 + def getChildNodes(self):
1.351 + nodelist = []
1.352 + nodelist.append(self.expr)
1.353 + nodelist.extend(flatten_nodes(self.ops))
1.354 + return tuple(nodelist)
1.355 +
1.356 + def __repr__(self):
1.357 + return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
1.358 +
1.359 +class Const(Node):
1.360 + def __init__(self, value, lineno=None):
1.361 + self.value = value
1.362 + self.lineno = lineno
1.363 +
1.364 + def getChildren(self):
1.365 + return self.value,
1.366 +
1.367 + def getChildNodes(self):
1.368 + return ()
1.369 +
1.370 + def __repr__(self):
1.371 + return "Const(%s)" % (repr(self.value),)
1.372 +
1.373 +class Continue(Node):
1.374 + def __init__(self, lineno=None):
1.375 + self.lineno = lineno
1.376 +
1.377 + def getChildren(self):
1.378 + return ()
1.379 +
1.380 + def getChildNodes(self):
1.381 + return ()
1.382 +
1.383 + def __repr__(self):
1.384 + return "Continue()"
1.385 +
1.386 +class Decorators(Node):
1.387 + def __init__(self, nodes, lineno=None):
1.388 + self.nodes = nodes
1.389 + self.lineno = lineno
1.390 +
1.391 + def getChildren(self):
1.392 + return tuple(flatten(self.nodes))
1.393 +
1.394 + def getChildNodes(self):
1.395 + nodelist = []
1.396 + nodelist.extend(flatten_nodes(self.nodes))
1.397 + return tuple(nodelist)
1.398 +
1.399 + def __repr__(self):
1.400 + return "Decorators(%s)" % (repr(self.nodes),)
1.401 +
1.402 +class Dict(Node):
1.403 + def __init__(self, items, lineno=None):
1.404 + self.items = items
1.405 + self.lineno = lineno
1.406 +
1.407 + def getChildren(self):
1.408 + return tuple(flatten(self.items))
1.409 +
1.410 + def getChildNodes(self):
1.411 + nodelist = []
1.412 + nodelist.extend(flatten_nodes(self.items))
1.413 + return tuple(nodelist)
1.414 +
1.415 + def __repr__(self):
1.416 + return "Dict(%s)" % (repr(self.items),)
1.417 +
1.418 +class Discard(Node):
1.419 + def __init__(self, expr, lineno=None):
1.420 + self.expr = expr
1.421 + self.lineno = lineno
1.422 +
1.423 + def getChildren(self):
1.424 + return self.expr,
1.425 +
1.426 + def getChildNodes(self):
1.427 + return self.expr,
1.428 +
1.429 + def __repr__(self):
1.430 + return "Discard(%s)" % (repr(self.expr),)
1.431 +
1.432 +class Div(Node):
1.433 + def __init__(self, (left, right), lineno=None):
1.434 + self.left = left
1.435 + self.right = right
1.436 + self.lineno = lineno
1.437 +
1.438 + def getChildren(self):
1.439 + return self.left, self.right
1.440 +
1.441 + def getChildNodes(self):
1.442 + return self.left, self.right
1.443 +
1.444 + def __repr__(self):
1.445 + return "Div((%s, %s))" % (repr(self.left), repr(self.right))
1.446 +
1.447 +class Ellipsis(Node):
1.448 + def __init__(self, lineno=None):
1.449 + self.lineno = lineno
1.450 +
1.451 + def getChildren(self):
1.452 + return ()
1.453 +
1.454 + def getChildNodes(self):
1.455 + return ()
1.456 +
1.457 + def __repr__(self):
1.458 + return "Ellipsis()"
1.459 +
1.460 +class Exec(Node):
1.461 + def __init__(self, expr, locals, globals, lineno=None):
1.462 + self.expr = expr
1.463 + self.locals = locals
1.464 + self.globals = globals
1.465 + self.lineno = lineno
1.466 +
1.467 + def getChildren(self):
1.468 + children = []
1.469 + children.append(self.expr)
1.470 + children.append(self.locals)
1.471 + children.append(self.globals)
1.472 + return tuple(children)
1.473 +
1.474 + def getChildNodes(self):
1.475 + nodelist = []
1.476 + nodelist.append(self.expr)
1.477 + if self.locals is not None:
1.478 + nodelist.append(self.locals)
1.479 + if self.globals is not None:
1.480 + nodelist.append(self.globals)
1.481 + return tuple(nodelist)
1.482 +
1.483 + def __repr__(self):
1.484 + return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
1.485 +
1.486 +class FloorDiv(Node):
1.487 + def __init__(self, (left, right), lineno=None):
1.488 + self.left = left
1.489 + self.right = right
1.490 + self.lineno = lineno
1.491 +
1.492 + def getChildren(self):
1.493 + return self.left, self.right
1.494 +
1.495 + def getChildNodes(self):
1.496 + return self.left, self.right
1.497 +
1.498 + def __repr__(self):
1.499 + return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
1.500 +
1.501 +class For(Node):
1.502 + def __init__(self, assign, list, body, else_, lineno=None):
1.503 + self.assign = assign
1.504 + self.list = list
1.505 + self.body = body
1.506 + self.else_ = else_
1.507 + self.lineno = lineno
1.508 +
1.509 + def getChildren(self):
1.510 + children = []
1.511 + children.append(self.assign)
1.512 + children.append(self.list)
1.513 + children.append(self.body)
1.514 + children.append(self.else_)
1.515 + return tuple(children)
1.516 +
1.517 + def getChildNodes(self):
1.518 + nodelist = []
1.519 + nodelist.append(self.assign)
1.520 + nodelist.append(self.list)
1.521 + nodelist.append(self.body)
1.522 + if self.else_ is not None:
1.523 + nodelist.append(self.else_)
1.524 + return tuple(nodelist)
1.525 +
1.526 + def __repr__(self):
1.527 + return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
1.528 +
1.529 +class From(Node):
1.530 + def __init__(self, modname, names, level, lineno=None):
1.531 + self.modname = modname
1.532 + self.names = names
1.533 + self.level = level
1.534 + self.lineno = lineno
1.535 +
1.536 + def getChildren(self):
1.537 + return self.modname, self.names, self.level
1.538 +
1.539 + def getChildNodes(self):
1.540 + return ()
1.541 +
1.542 + def __repr__(self):
1.543 + return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
1.544 +
1.545 +class Function(Node):
1.546 + def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
1.547 + self.decorators = decorators
1.548 + self.name = name
1.549 + self.argnames = argnames
1.550 + self.defaults = defaults
1.551 + self.flags = flags
1.552 + self.doc = doc
1.553 + self.code = code
1.554 + self.lineno = lineno
1.555 + self.varargs = self.kwargs = None
1.556 + if flags & CO_VARARGS:
1.557 + self.varargs = 1
1.558 + if flags & CO_VARKEYWORDS:
1.559 + self.kwargs = 1
1.560 +
1.561 +
1.562 +
1.563 + def getChildren(self):
1.564 + children = []
1.565 + children.append(self.decorators)
1.566 + children.append(self.name)
1.567 + children.append(self.argnames)
1.568 + children.extend(flatten(self.defaults))
1.569 + children.append(self.flags)
1.570 + children.append(self.doc)
1.571 + children.append(self.code)
1.572 + return tuple(children)
1.573 +
1.574 + def getChildNodes(self):
1.575 + nodelist = []
1.576 + if self.decorators is not None:
1.577 + nodelist.append(self.decorators)
1.578 + nodelist.extend(flatten_nodes(self.defaults))
1.579 + nodelist.append(self.code)
1.580 + return tuple(nodelist)
1.581 +
1.582 + def __repr__(self):
1.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))
1.584 +
1.585 +class GenExpr(Node):
1.586 + def __init__(self, code, lineno=None):
1.587 + self.code = code
1.588 + self.lineno = lineno
1.589 + self.argnames = ['.0']
1.590 + self.varargs = self.kwargs = None
1.591 +
1.592 + def getChildren(self):
1.593 + return self.code,
1.594 +
1.595 + def getChildNodes(self):
1.596 + return self.code,
1.597 +
1.598 + def __repr__(self):
1.599 + return "GenExpr(%s)" % (repr(self.code),)
1.600 +
1.601 +class GenExprFor(Node):
1.602 + def __init__(self, assign, iter, ifs, lineno=None):
1.603 + self.assign = assign
1.604 + self.iter = iter
1.605 + self.ifs = ifs
1.606 + self.lineno = lineno
1.607 + self.is_outmost = False
1.608 +
1.609 +
1.610 + def getChildren(self):
1.611 + children = []
1.612 + children.append(self.assign)
1.613 + children.append(self.iter)
1.614 + children.extend(flatten(self.ifs))
1.615 + return tuple(children)
1.616 +
1.617 + def getChildNodes(self):
1.618 + nodelist = []
1.619 + nodelist.append(self.assign)
1.620 + nodelist.append(self.iter)
1.621 + nodelist.extend(flatten_nodes(self.ifs))
1.622 + return tuple(nodelist)
1.623 +
1.624 + def __repr__(self):
1.625 + return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
1.626 +
1.627 +class GenExprIf(Node):
1.628 + def __init__(self, test, lineno=None):
1.629 + self.test = test
1.630 + self.lineno = lineno
1.631 +
1.632 + def getChildren(self):
1.633 + return self.test,
1.634 +
1.635 + def getChildNodes(self):
1.636 + return self.test,
1.637 +
1.638 + def __repr__(self):
1.639 + return "GenExprIf(%s)" % (repr(self.test),)
1.640 +
1.641 +class GenExprInner(Node):
1.642 + def __init__(self, expr, quals, lineno=None):
1.643 + self.expr = expr
1.644 + self.quals = quals
1.645 + self.lineno = lineno
1.646 +
1.647 + def getChildren(self):
1.648 + children = []
1.649 + children.append(self.expr)
1.650 + children.extend(flatten(self.quals))
1.651 + return tuple(children)
1.652 +
1.653 + def getChildNodes(self):
1.654 + nodelist = []
1.655 + nodelist.append(self.expr)
1.656 + nodelist.extend(flatten_nodes(self.quals))
1.657 + return tuple(nodelist)
1.658 +
1.659 + def __repr__(self):
1.660 + return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
1.661 +
1.662 +class Getattr(Node):
1.663 + def __init__(self, expr, attrname, lineno=None):
1.664 + self.expr = expr
1.665 + self.attrname = attrname
1.666 + self.lineno = lineno
1.667 +
1.668 + def getChildren(self):
1.669 + return self.expr, self.attrname
1.670 +
1.671 + def getChildNodes(self):
1.672 + return self.expr,
1.673 +
1.674 + def __repr__(self):
1.675 + return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
1.676 +
1.677 +class Global(Node):
1.678 + def __init__(self, names, lineno=None):
1.679 + self.names = names
1.680 + self.lineno = lineno
1.681 +
1.682 + def getChildren(self):
1.683 + return self.names,
1.684 +
1.685 + def getChildNodes(self):
1.686 + return ()
1.687 +
1.688 + def __repr__(self):
1.689 + return "Global(%s)" % (repr(self.names),)
1.690 +
1.691 +class If(Node):
1.692 + def __init__(self, tests, else_, lineno=None):
1.693 + self.tests = tests
1.694 + self.else_ = else_
1.695 + self.lineno = lineno
1.696 +
1.697 + def getChildren(self):
1.698 + children = []
1.699 + children.extend(flatten(self.tests))
1.700 + children.append(self.else_)
1.701 + return tuple(children)
1.702 +
1.703 + def getChildNodes(self):
1.704 + nodelist = []
1.705 + nodelist.extend(flatten_nodes(self.tests))
1.706 + if self.else_ is not None:
1.707 + nodelist.append(self.else_)
1.708 + return tuple(nodelist)
1.709 +
1.710 + def __repr__(self):
1.711 + return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
1.712 +
1.713 +class IfExp(Node):
1.714 + def __init__(self, test, then, else_, lineno=None):
1.715 + self.test = test
1.716 + self.then = then
1.717 + self.else_ = else_
1.718 + self.lineno = lineno
1.719 +
1.720 + def getChildren(self):
1.721 + return self.test, self.then, self.else_
1.722 +
1.723 + def getChildNodes(self):
1.724 + return self.test, self.then, self.else_
1.725 +
1.726 + def __repr__(self):
1.727 + return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
1.728 +
1.729 +class Import(Node):
1.730 + def __init__(self, names, lineno=None):
1.731 + self.names = names
1.732 + self.lineno = lineno
1.733 +
1.734 + def getChildren(self):
1.735 + return self.names,
1.736 +
1.737 + def getChildNodes(self):
1.738 + return ()
1.739 +
1.740 + def __repr__(self):
1.741 + return "Import(%s)" % (repr(self.names),)
1.742 +
1.743 +class Invert(Node):
1.744 + def __init__(self, expr, lineno=None):
1.745 + self.expr = expr
1.746 + self.lineno = lineno
1.747 +
1.748 + def getChildren(self):
1.749 + return self.expr,
1.750 +
1.751 + def getChildNodes(self):
1.752 + return self.expr,
1.753 +
1.754 + def __repr__(self):
1.755 + return "Invert(%s)" % (repr(self.expr),)
1.756 +
1.757 +class Keyword(Node):
1.758 + def __init__(self, name, expr, lineno=None):
1.759 + self.name = name
1.760 + self.expr = expr
1.761 + self.lineno = lineno
1.762 +
1.763 + def getChildren(self):
1.764 + return self.name, self.expr
1.765 +
1.766 + def getChildNodes(self):
1.767 + return self.expr,
1.768 +
1.769 + def __repr__(self):
1.770 + return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
1.771 +
1.772 +class Lambda(Node):
1.773 + def __init__(self, argnames, defaults, flags, code, lineno=None):
1.774 + self.argnames = argnames
1.775 + self.defaults = defaults
1.776 + self.flags = flags
1.777 + self.code = code
1.778 + self.lineno = lineno
1.779 + self.varargs = self.kwargs = None
1.780 + if flags & CO_VARARGS:
1.781 + self.varargs = 1
1.782 + if flags & CO_VARKEYWORDS:
1.783 + self.kwargs = 1
1.784 +
1.785 +
1.786 +
1.787 + def getChildren(self):
1.788 + children = []
1.789 + children.append(self.argnames)
1.790 + children.extend(flatten(self.defaults))
1.791 + children.append(self.flags)
1.792 + children.append(self.code)
1.793 + return tuple(children)
1.794 +
1.795 + def getChildNodes(self):
1.796 + nodelist = []
1.797 + nodelist.extend(flatten_nodes(self.defaults))
1.798 + nodelist.append(self.code)
1.799 + return tuple(nodelist)
1.800 +
1.801 + def __repr__(self):
1.802 + return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
1.803 +
1.804 +class LeftShift(Node):
1.805 + def __init__(self, (left, right), lineno=None):
1.806 + self.left = left
1.807 + self.right = right
1.808 + self.lineno = lineno
1.809 +
1.810 + def getChildren(self):
1.811 + return self.left, self.right
1.812 +
1.813 + def getChildNodes(self):
1.814 + return self.left, self.right
1.815 +
1.816 + def __repr__(self):
1.817 + return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
1.818 +
1.819 +class List(Node):
1.820 + def __init__(self, nodes, lineno=None):
1.821 + self.nodes = nodes
1.822 + self.lineno = lineno
1.823 +
1.824 + def getChildren(self):
1.825 + return tuple(flatten(self.nodes))
1.826 +
1.827 + def getChildNodes(self):
1.828 + nodelist = []
1.829 + nodelist.extend(flatten_nodes(self.nodes))
1.830 + return tuple(nodelist)
1.831 +
1.832 + def __repr__(self):
1.833 + return "List(%s)" % (repr(self.nodes),)
1.834 +
1.835 +class ListComp(Node):
1.836 + def __init__(self, expr, quals, lineno=None):
1.837 + self.expr = expr
1.838 + self.quals = quals
1.839 + self.lineno = lineno
1.840 +
1.841 + def getChildren(self):
1.842 + children = []
1.843 + children.append(self.expr)
1.844 + children.extend(flatten(self.quals))
1.845 + return tuple(children)
1.846 +
1.847 + def getChildNodes(self):
1.848 + nodelist = []
1.849 + nodelist.append(self.expr)
1.850 + nodelist.extend(flatten_nodes(self.quals))
1.851 + return tuple(nodelist)
1.852 +
1.853 + def __repr__(self):
1.854 + return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
1.855 +
1.856 +class ListCompFor(Node):
1.857 + def __init__(self, assign, list, ifs, lineno=None):
1.858 + self.assign = assign
1.859 + self.list = list
1.860 + self.ifs = ifs
1.861 + self.lineno = lineno
1.862 +
1.863 + def getChildren(self):
1.864 + children = []
1.865 + children.append(self.assign)
1.866 + children.append(self.list)
1.867 + children.extend(flatten(self.ifs))
1.868 + return tuple(children)
1.869 +
1.870 + def getChildNodes(self):
1.871 + nodelist = []
1.872 + nodelist.append(self.assign)
1.873 + nodelist.append(self.list)
1.874 + nodelist.extend(flatten_nodes(self.ifs))
1.875 + return tuple(nodelist)
1.876 +
1.877 + def __repr__(self):
1.878 + return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
1.879 +
1.880 +class ListCompIf(Node):
1.881 + def __init__(self, test, lineno=None):
1.882 + self.test = test
1.883 + self.lineno = lineno
1.884 +
1.885 + def getChildren(self):
1.886 + return self.test,
1.887 +
1.888 + def getChildNodes(self):
1.889 + return self.test,
1.890 +
1.891 + def __repr__(self):
1.892 + return "ListCompIf(%s)" % (repr(self.test),)
1.893 +
1.894 +class Mod(Node):
1.895 + def __init__(self, (left, right), lineno=None):
1.896 + self.left = left
1.897 + self.right = right
1.898 + self.lineno = lineno
1.899 +
1.900 + def getChildren(self):
1.901 + return self.left, self.right
1.902 +
1.903 + def getChildNodes(self):
1.904 + return self.left, self.right
1.905 +
1.906 + def __repr__(self):
1.907 + return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
1.908 +
1.909 +class Module(Node):
1.910 + def __init__(self, doc, node, lineno=None):
1.911 + self.doc = doc
1.912 + self.node = node
1.913 + self.lineno = lineno
1.914 +
1.915 + def getChildren(self):
1.916 + return self.doc, self.node
1.917 +
1.918 + def getChildNodes(self):
1.919 + return self.node,
1.920 +
1.921 + def __repr__(self):
1.922 + return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
1.923 +
1.924 +class Mul(Node):
1.925 + def __init__(self, (left, right), lineno=None):
1.926 + self.left = left
1.927 + self.right = right
1.928 + self.lineno = lineno
1.929 +
1.930 + def getChildren(self):
1.931 + return self.left, self.right
1.932 +
1.933 + def getChildNodes(self):
1.934 + return self.left, self.right
1.935 +
1.936 + def __repr__(self):
1.937 + return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
1.938 +
1.939 +class Name(Node):
1.940 + def __init__(self, name, lineno=None):
1.941 + self.name = name
1.942 + self.lineno = lineno
1.943 +
1.944 + def getChildren(self):
1.945 + return self.name,
1.946 +
1.947 + def getChildNodes(self):
1.948 + return ()
1.949 +
1.950 + def __repr__(self):
1.951 + return "Name(%s)" % (repr(self.name),)
1.952 +
1.953 +class Not(Node):
1.954 + def __init__(self, expr, lineno=None):
1.955 + self.expr = expr
1.956 + self.lineno = lineno
1.957 +
1.958 + def getChildren(self):
1.959 + return self.expr,
1.960 +
1.961 + def getChildNodes(self):
1.962 + return self.expr,
1.963 +
1.964 + def __repr__(self):
1.965 + return "Not(%s)" % (repr(self.expr),)
1.966 +
1.967 +class Or(Node):
1.968 + def __init__(self, nodes, lineno=None):
1.969 + self.nodes = nodes
1.970 + self.lineno = lineno
1.971 +
1.972 + def getChildren(self):
1.973 + return tuple(flatten(self.nodes))
1.974 +
1.975 + def getChildNodes(self):
1.976 + nodelist = []
1.977 + nodelist.extend(flatten_nodes(self.nodes))
1.978 + return tuple(nodelist)
1.979 +
1.980 + def __repr__(self):
1.981 + return "Or(%s)" % (repr(self.nodes),)
1.982 +
1.983 +class Pass(Node):
1.984 + def __init__(self, lineno=None):
1.985 + self.lineno = lineno
1.986 +
1.987 + def getChildren(self):
1.988 + return ()
1.989 +
1.990 + def getChildNodes(self):
1.991 + return ()
1.992 +
1.993 + def __repr__(self):
1.994 + return "Pass()"
1.995 +
1.996 +class Power(Node):
1.997 + def __init__(self, (left, right), lineno=None):
1.998 + self.left = left
1.999 + self.right = right
1.1000 + self.lineno = lineno
1.1001 +
1.1002 + def getChildren(self):
1.1003 + return self.left, self.right
1.1004 +
1.1005 + def getChildNodes(self):
1.1006 + return self.left, self.right
1.1007 +
1.1008 + def __repr__(self):
1.1009 + return "Power((%s, %s))" % (repr(self.left), repr(self.right))
1.1010 +
1.1011 +class Print(Node):
1.1012 + def __init__(self, nodes, dest, lineno=None):
1.1013 + self.nodes = nodes
1.1014 + self.dest = dest
1.1015 + self.lineno = lineno
1.1016 +
1.1017 + def getChildren(self):
1.1018 + children = []
1.1019 + children.extend(flatten(self.nodes))
1.1020 + children.append(self.dest)
1.1021 + return tuple(children)
1.1022 +
1.1023 + def getChildNodes(self):
1.1024 + nodelist = []
1.1025 + nodelist.extend(flatten_nodes(self.nodes))
1.1026 + if self.dest is not None:
1.1027 + nodelist.append(self.dest)
1.1028 + return tuple(nodelist)
1.1029 +
1.1030 + def __repr__(self):
1.1031 + return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.1032 +
1.1033 +class Printnl(Node):
1.1034 + def __init__(self, nodes, dest, lineno=None):
1.1035 + self.nodes = nodes
1.1036 + self.dest = dest
1.1037 + self.lineno = lineno
1.1038 +
1.1039 + def getChildren(self):
1.1040 + children = []
1.1041 + children.extend(flatten(self.nodes))
1.1042 + children.append(self.dest)
1.1043 + return tuple(children)
1.1044 +
1.1045 + def getChildNodes(self):
1.1046 + nodelist = []
1.1047 + nodelist.extend(flatten_nodes(self.nodes))
1.1048 + if self.dest is not None:
1.1049 + nodelist.append(self.dest)
1.1050 + return tuple(nodelist)
1.1051 +
1.1052 + def __repr__(self):
1.1053 + return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.1054 +
1.1055 +class Raise(Node):
1.1056 + def __init__(self, expr1, expr2, expr3, lineno=None):
1.1057 + self.expr1 = expr1
1.1058 + self.expr2 = expr2
1.1059 + self.expr3 = expr3
1.1060 + self.lineno = lineno
1.1061 +
1.1062 + def getChildren(self):
1.1063 + children = []
1.1064 + children.append(self.expr1)
1.1065 + children.append(self.expr2)
1.1066 + children.append(self.expr3)
1.1067 + return tuple(children)
1.1068 +
1.1069 + def getChildNodes(self):
1.1070 + nodelist = []
1.1071 + if self.expr1 is not None:
1.1072 + nodelist.append(self.expr1)
1.1073 + if self.expr2 is not None:
1.1074 + nodelist.append(self.expr2)
1.1075 + if self.expr3 is not None:
1.1076 + nodelist.append(self.expr3)
1.1077 + return tuple(nodelist)
1.1078 +
1.1079 + def __repr__(self):
1.1080 + return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1.1081 +
1.1082 +class Return(Node):
1.1083 + def __init__(self, value, lineno=None):
1.1084 + self.value = value
1.1085 + self.lineno = lineno
1.1086 +
1.1087 + def getChildren(self):
1.1088 + return self.value,
1.1089 +
1.1090 + def getChildNodes(self):
1.1091 + return self.value,
1.1092 +
1.1093 + def __repr__(self):
1.1094 + return "Return(%s)" % (repr(self.value),)
1.1095 +
1.1096 +class RightShift(Node):
1.1097 + def __init__(self, (left, right), lineno=None):
1.1098 + self.left = left
1.1099 + self.right = right
1.1100 + self.lineno = lineno
1.1101 +
1.1102 + def getChildren(self):
1.1103 + return self.left, self.right
1.1104 +
1.1105 + def getChildNodes(self):
1.1106 + return self.left, self.right
1.1107 +
1.1108 + def __repr__(self):
1.1109 + return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1.1110 +
1.1111 +class Slice(Node):
1.1112 + def __init__(self, expr, flags, lower, upper, lineno=None):
1.1113 + self.expr = expr
1.1114 + self.flags = flags
1.1115 + self.lower = lower
1.1116 + self.upper = upper
1.1117 + self.lineno = lineno
1.1118 +
1.1119 + def getChildren(self):
1.1120 + children = []
1.1121 + children.append(self.expr)
1.1122 + children.append(self.flags)
1.1123 + children.append(self.lower)
1.1124 + children.append(self.upper)
1.1125 + return tuple(children)
1.1126 +
1.1127 + def getChildNodes(self):
1.1128 + nodelist = []
1.1129 + nodelist.append(self.expr)
1.1130 + if self.lower is not None:
1.1131 + nodelist.append(self.lower)
1.1132 + if self.upper is not None:
1.1133 + nodelist.append(self.upper)
1.1134 + return tuple(nodelist)
1.1135 +
1.1136 + def __repr__(self):
1.1137 + return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1.1138 +
1.1139 +class Sliceobj(Node):
1.1140 + def __init__(self, nodes, lineno=None):
1.1141 + self.nodes = nodes
1.1142 + self.lineno = lineno
1.1143 +
1.1144 + def getChildren(self):
1.1145 + return tuple(flatten(self.nodes))
1.1146 +
1.1147 + def getChildNodes(self):
1.1148 + nodelist = []
1.1149 + nodelist.extend(flatten_nodes(self.nodes))
1.1150 + return tuple(nodelist)
1.1151 +
1.1152 + def __repr__(self):
1.1153 + return "Sliceobj(%s)" % (repr(self.nodes),)
1.1154 +
1.1155 +class Stmt(Node):
1.1156 + def __init__(self, nodes, lineno=None):
1.1157 + self.nodes = nodes
1.1158 + self.lineno = lineno
1.1159 +
1.1160 + def getChildren(self):
1.1161 + return tuple(flatten(self.nodes))
1.1162 +
1.1163 + def getChildNodes(self):
1.1164 + nodelist = []
1.1165 + nodelist.extend(flatten_nodes(self.nodes))
1.1166 + return tuple(nodelist)
1.1167 +
1.1168 + def __repr__(self):
1.1169 + return "Stmt(%s)" % (repr(self.nodes),)
1.1170 +
1.1171 +class Sub(Node):
1.1172 + def __init__(self, (left, right), lineno=None):
1.1173 + self.left = left
1.1174 + self.right = right
1.1175 + self.lineno = lineno
1.1176 +
1.1177 + def getChildren(self):
1.1178 + return self.left, self.right
1.1179 +
1.1180 + def getChildNodes(self):
1.1181 + return self.left, self.right
1.1182 +
1.1183 + def __repr__(self):
1.1184 + return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
1.1185 +
1.1186 +class Subscript(Node):
1.1187 + def __init__(self, expr, flags, subs, lineno=None):
1.1188 + self.expr = expr
1.1189 + self.flags = flags
1.1190 + self.subs = subs
1.1191 + self.lineno = lineno
1.1192 +
1.1193 + def getChildren(self):
1.1194 + children = []
1.1195 + children.append(self.expr)
1.1196 + children.append(self.flags)
1.1197 + children.extend(flatten(self.subs))
1.1198 + return tuple(children)
1.1199 +
1.1200 + def getChildNodes(self):
1.1201 + nodelist = []
1.1202 + nodelist.append(self.expr)
1.1203 + nodelist.extend(flatten_nodes(self.subs))
1.1204 + return tuple(nodelist)
1.1205 +
1.1206 + def __repr__(self):
1.1207 + return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1.1208 +
1.1209 +class TryExcept(Node):
1.1210 + def __init__(self, body, handlers, else_, lineno=None):
1.1211 + self.body = body
1.1212 + self.handlers = handlers
1.1213 + self.else_ = else_
1.1214 + self.lineno = lineno
1.1215 +
1.1216 + def getChildren(self):
1.1217 + children = []
1.1218 + children.append(self.body)
1.1219 + children.extend(flatten(self.handlers))
1.1220 + children.append(self.else_)
1.1221 + return tuple(children)
1.1222 +
1.1223 + def getChildNodes(self):
1.1224 + nodelist = []
1.1225 + nodelist.append(self.body)
1.1226 + nodelist.extend(flatten_nodes(self.handlers))
1.1227 + if self.else_ is not None:
1.1228 + nodelist.append(self.else_)
1.1229 + return tuple(nodelist)
1.1230 +
1.1231 + def __repr__(self):
1.1232 + return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1.1233 +
1.1234 +class TryFinally(Node):
1.1235 + def __init__(self, body, final, lineno=None):
1.1236 + self.body = body
1.1237 + self.final = final
1.1238 + self.lineno = lineno
1.1239 +
1.1240 + def getChildren(self):
1.1241 + return self.body, self.final
1.1242 +
1.1243 + def getChildNodes(self):
1.1244 + return self.body, self.final
1.1245 +
1.1246 + def __repr__(self):
1.1247 + return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1.1248 +
1.1249 +class Tuple(Node):
1.1250 + def __init__(self, nodes, lineno=None):
1.1251 + self.nodes = nodes
1.1252 + self.lineno = lineno
1.1253 +
1.1254 + def getChildren(self):
1.1255 + return tuple(flatten(self.nodes))
1.1256 +
1.1257 + def getChildNodes(self):
1.1258 + nodelist = []
1.1259 + nodelist.extend(flatten_nodes(self.nodes))
1.1260 + return tuple(nodelist)
1.1261 +
1.1262 + def __repr__(self):
1.1263 + return "Tuple(%s)" % (repr(self.nodes),)
1.1264 +
1.1265 +class UnaryAdd(Node):
1.1266 + def __init__(self, expr, lineno=None):
1.1267 + self.expr = expr
1.1268 + self.lineno = lineno
1.1269 +
1.1270 + def getChildren(self):
1.1271 + return self.expr,
1.1272 +
1.1273 + def getChildNodes(self):
1.1274 + return self.expr,
1.1275 +
1.1276 + def __repr__(self):
1.1277 + return "UnaryAdd(%s)" % (repr(self.expr),)
1.1278 +
1.1279 +class UnarySub(Node):
1.1280 + def __init__(self, expr, lineno=None):
1.1281 + self.expr = expr
1.1282 + self.lineno = lineno
1.1283 +
1.1284 + def getChildren(self):
1.1285 + return self.expr,
1.1286 +
1.1287 + def getChildNodes(self):
1.1288 + return self.expr,
1.1289 +
1.1290 + def __repr__(self):
1.1291 + return "UnarySub(%s)" % (repr(self.expr),)
1.1292 +
1.1293 +class While(Node):
1.1294 + def __init__(self, test, body, else_, lineno=None):
1.1295 + self.test = test
1.1296 + self.body = body
1.1297 + self.else_ = else_
1.1298 + self.lineno = lineno
1.1299 +
1.1300 + def getChildren(self):
1.1301 + children = []
1.1302 + children.append(self.test)
1.1303 + children.append(self.body)
1.1304 + children.append(self.else_)
1.1305 + return tuple(children)
1.1306 +
1.1307 + def getChildNodes(self):
1.1308 + nodelist = []
1.1309 + nodelist.append(self.test)
1.1310 + nodelist.append(self.body)
1.1311 + if self.else_ is not None:
1.1312 + nodelist.append(self.else_)
1.1313 + return tuple(nodelist)
1.1314 +
1.1315 + def __repr__(self):
1.1316 + return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1.1317 +
1.1318 +class With(Node):
1.1319 + def __init__(self, expr, vars, body, lineno=None):
1.1320 + self.expr = expr
1.1321 + self.vars = vars
1.1322 + self.body = body
1.1323 + self.lineno = lineno
1.1324 +
1.1325 + def getChildren(self):
1.1326 + children = []
1.1327 + children.append(self.expr)
1.1328 + children.append(self.vars)
1.1329 + children.append(self.body)
1.1330 + return tuple(children)
1.1331 +
1.1332 + def getChildNodes(self):
1.1333 + nodelist = []
1.1334 + nodelist.append(self.expr)
1.1335 + if self.vars is not None:
1.1336 + nodelist.append(self.vars)
1.1337 + nodelist.append(self.body)
1.1338 + return tuple(nodelist)
1.1339 +
1.1340 + def __repr__(self):
1.1341 + return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1.1342 +
1.1343 +class Yield(Node):
1.1344 + def __init__(self, value, lineno=None):
1.1345 + self.value = value
1.1346 + self.lineno = lineno
1.1347 +
1.1348 + def getChildren(self):
1.1349 + return self.value,
1.1350 +
1.1351 + def getChildNodes(self):
1.1352 + return self.value,
1.1353 +
1.1354 + def __repr__(self):
1.1355 + return "Yield(%s)" % (repr(self.value),)
1.1356 +
1.1357 +for name, obj in globals().items():
1.1358 + if isinstance(obj, type) and issubclass(obj, Node):
1.1359 + nodes[name.lower()] = obj