1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/compiler/ast.py Fri May 18 20:51:41 2012 +0200
1.3 @@ -0,0 +1,1358 @@
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 Mod(Node):
1.897 + def __init__(self, leftright, lineno=None):
1.898 + self.left = leftright[0]
1.899 + self.right = leftright[1]
1.900 + self.lineno = lineno
1.901 +
1.902 + def getChildren(self):
1.903 + return self.left, self.right
1.904 +
1.905 + def getChildNodes(self):
1.906 + return self.left, self.right
1.907 +
1.908 + def __repr__(self):
1.909 + return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
1.910 +
1.911 +class Module(Node):
1.912 + def __init__(self, doc, node, lineno=None):
1.913 + self.doc = doc
1.914 + self.node = node
1.915 + self.lineno = lineno
1.916 +
1.917 + def getChildren(self):
1.918 + return self.doc, self.node
1.919 +
1.920 + def getChildNodes(self):
1.921 + return self.node,
1.922 +
1.923 + def __repr__(self):
1.924 + return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
1.925 +
1.926 +class Mul(Node):
1.927 + def __init__(self, leftright, lineno=None):
1.928 + self.left = leftright[0]
1.929 + self.right = leftright[1]
1.930 + self.lineno = lineno
1.931 +
1.932 + def getChildren(self):
1.933 + return self.left, self.right
1.934 +
1.935 + def getChildNodes(self):
1.936 + return self.left, self.right
1.937 +
1.938 + def __repr__(self):
1.939 + return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
1.940 +
1.941 +class Name(Node):
1.942 + def __init__(self, name, lineno=None):
1.943 + self.name = name
1.944 + self.lineno = lineno
1.945 +
1.946 + def getChildren(self):
1.947 + return self.name,
1.948 +
1.949 + def getChildNodes(self):
1.950 + return ()
1.951 +
1.952 + def __repr__(self):
1.953 + return "Name(%s)" % (repr(self.name),)
1.954 +
1.955 +class Not(Node):
1.956 + def __init__(self, expr, lineno=None):
1.957 + self.expr = expr
1.958 + self.lineno = lineno
1.959 +
1.960 + def getChildren(self):
1.961 + return self.expr,
1.962 +
1.963 + def getChildNodes(self):
1.964 + return self.expr,
1.965 +
1.966 + def __repr__(self):
1.967 + return "Not(%s)" % (repr(self.expr),)
1.968 +
1.969 +class Or(Node):
1.970 + def __init__(self, nodes, lineno=None):
1.971 + self.nodes = nodes
1.972 + self.lineno = lineno
1.973 +
1.974 + def getChildren(self):
1.975 + return tuple(flatten(self.nodes))
1.976 +
1.977 + def getChildNodes(self):
1.978 + nodelist = []
1.979 + nodelist.extend(flatten_nodes(self.nodes))
1.980 + return tuple(nodelist)
1.981 +
1.982 + def __repr__(self):
1.983 + return "Or(%s)" % (repr(self.nodes),)
1.984 +
1.985 +class Pass(Node):
1.986 + def __init__(self, lineno=None):
1.987 + self.lineno = lineno
1.988 +
1.989 + def getChildren(self):
1.990 + return ()
1.991 +
1.992 + def getChildNodes(self):
1.993 + return ()
1.994 +
1.995 + def __repr__(self):
1.996 + return "Pass()"
1.997 +
1.998 +class Power(Node):
1.999 + def __init__(self, leftright, lineno=None):
1.1000 + self.left = leftright[0]
1.1001 + self.right = leftright[1]
1.1002 + self.lineno = lineno
1.1003 +
1.1004 + def getChildren(self):
1.1005 + return self.left, self.right
1.1006 +
1.1007 + def getChildNodes(self):
1.1008 + return self.left, self.right
1.1009 +
1.1010 + def __repr__(self):
1.1011 + return "Power((%s, %s))" % (repr(self.left), repr(self.right))
1.1012 +
1.1013 +class Print(Node):
1.1014 + def __init__(self, nodes, dest, lineno=None):
1.1015 + self.nodes = nodes
1.1016 + self.dest = dest
1.1017 + self.lineno = lineno
1.1018 +
1.1019 + def getChildren(self):
1.1020 + children = []
1.1021 + children.extend(flatten(self.nodes))
1.1022 + children.append(self.dest)
1.1023 + return tuple(children)
1.1024 +
1.1025 + def getChildNodes(self):
1.1026 + nodelist = []
1.1027 + nodelist.extend(flatten_nodes(self.nodes))
1.1028 + if self.dest is not None:
1.1029 + nodelist.append(self.dest)
1.1030 + return tuple(nodelist)
1.1031 +
1.1032 + def __repr__(self):
1.1033 + return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.1034 +
1.1035 +class Printnl(Node):
1.1036 + def __init__(self, nodes, dest, lineno=None):
1.1037 + self.nodes = nodes
1.1038 + self.dest = dest
1.1039 + self.lineno = lineno
1.1040 +
1.1041 + def getChildren(self):
1.1042 + children = []
1.1043 + children.extend(flatten(self.nodes))
1.1044 + children.append(self.dest)
1.1045 + return tuple(children)
1.1046 +
1.1047 + def getChildNodes(self):
1.1048 + nodelist = []
1.1049 + nodelist.extend(flatten_nodes(self.nodes))
1.1050 + if self.dest is not None:
1.1051 + nodelist.append(self.dest)
1.1052 + return tuple(nodelist)
1.1053 +
1.1054 + def __repr__(self):
1.1055 + return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.1056 +
1.1057 +class Raise(Node):
1.1058 + def __init__(self, expr1, expr2, expr3, lineno=None):
1.1059 + self.expr1 = expr1
1.1060 + self.expr2 = expr2
1.1061 + self.expr3 = expr3
1.1062 + self.lineno = lineno
1.1063 +
1.1064 + def getChildren(self):
1.1065 + children = []
1.1066 + children.append(self.expr1)
1.1067 + children.append(self.expr2)
1.1068 + children.append(self.expr3)
1.1069 + return tuple(children)
1.1070 +
1.1071 + def getChildNodes(self):
1.1072 + nodelist = []
1.1073 + if self.expr1 is not None:
1.1074 + nodelist.append(self.expr1)
1.1075 + if self.expr2 is not None:
1.1076 + nodelist.append(self.expr2)
1.1077 + if self.expr3 is not None:
1.1078 + nodelist.append(self.expr3)
1.1079 + return tuple(nodelist)
1.1080 +
1.1081 + def __repr__(self):
1.1082 + return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1.1083 +
1.1084 +class Return(Node):
1.1085 + def __init__(self, value, lineno=None):
1.1086 + self.value = value
1.1087 + self.lineno = lineno
1.1088 +
1.1089 + def getChildren(self):
1.1090 + return self.value,
1.1091 +
1.1092 + def getChildNodes(self):
1.1093 + return self.value,
1.1094 +
1.1095 + def __repr__(self):
1.1096 + return "Return(%s)" % (repr(self.value),)
1.1097 +
1.1098 +class RightShift(Node):
1.1099 + def __init__(self, leftright, lineno=None):
1.1100 + self.left = leftright[0]
1.1101 + self.right = leftright[1]
1.1102 + self.lineno = lineno
1.1103 +
1.1104 + def getChildren(self):
1.1105 + return self.left, self.right
1.1106 +
1.1107 + def getChildNodes(self):
1.1108 + return self.left, self.right
1.1109 +
1.1110 + def __repr__(self):
1.1111 + return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1.1112 +
1.1113 +class Slice(Node):
1.1114 + def __init__(self, expr, flags, lower, upper, lineno=None):
1.1115 + self.expr = expr
1.1116 + self.flags = flags
1.1117 + self.lower = lower
1.1118 + self.upper = upper
1.1119 + self.lineno = lineno
1.1120 +
1.1121 + def getChildren(self):
1.1122 + children = []
1.1123 + children.append(self.expr)
1.1124 + children.append(self.flags)
1.1125 + children.append(self.lower)
1.1126 + children.append(self.upper)
1.1127 + return tuple(children)
1.1128 +
1.1129 + def getChildNodes(self):
1.1130 + nodelist = []
1.1131 + nodelist.append(self.expr)
1.1132 + if self.lower is not None:
1.1133 + nodelist.append(self.lower)
1.1134 + if self.upper is not None:
1.1135 + nodelist.append(self.upper)
1.1136 + return tuple(nodelist)
1.1137 +
1.1138 + def __repr__(self):
1.1139 + return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1.1140 +
1.1141 +class Sliceobj(Node):
1.1142 + def __init__(self, nodes, lineno=None):
1.1143 + self.nodes = nodes
1.1144 + self.lineno = lineno
1.1145 +
1.1146 + def getChildren(self):
1.1147 + return tuple(flatten(self.nodes))
1.1148 +
1.1149 + def getChildNodes(self):
1.1150 + nodelist = []
1.1151 + nodelist.extend(flatten_nodes(self.nodes))
1.1152 + return tuple(nodelist)
1.1153 +
1.1154 + def __repr__(self):
1.1155 + return "Sliceobj(%s)" % (repr(self.nodes),)
1.1156 +
1.1157 +class Stmt(Node):
1.1158 + def __init__(self, nodes, lineno=None):
1.1159 + self.nodes = nodes
1.1160 + self.lineno = lineno
1.1161 +
1.1162 + def getChildren(self):
1.1163 + return tuple(flatten(self.nodes))
1.1164 +
1.1165 + def getChildNodes(self):
1.1166 + nodelist = []
1.1167 + nodelist.extend(flatten_nodes(self.nodes))
1.1168 + return tuple(nodelist)
1.1169 +
1.1170 + def __repr__(self):
1.1171 + return "Stmt(%s)" % (repr(self.nodes),)
1.1172 +
1.1173 +class Sub(Node):
1.1174 + def __init__(self, leftright, lineno=None):
1.1175 + self.left = leftright[0]
1.1176 + self.right = leftright[1]
1.1177 + self.lineno = lineno
1.1178 +
1.1179 + def getChildren(self):
1.1180 + return self.left, self.right
1.1181 +
1.1182 + def getChildNodes(self):
1.1183 + return self.left, self.right
1.1184 +
1.1185 + def __repr__(self):
1.1186 + return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
1.1187 +
1.1188 +class Subscript(Node):
1.1189 + def __init__(self, expr, flags, subs, lineno=None):
1.1190 + self.expr = expr
1.1191 + self.flags = flags
1.1192 + self.subs = subs
1.1193 + self.lineno = lineno
1.1194 +
1.1195 + def getChildren(self):
1.1196 + children = []
1.1197 + children.append(self.expr)
1.1198 + children.append(self.flags)
1.1199 + children.extend(flatten(self.subs))
1.1200 + return tuple(children)
1.1201 +
1.1202 + def getChildNodes(self):
1.1203 + nodelist = []
1.1204 + nodelist.append(self.expr)
1.1205 + nodelist.extend(flatten_nodes(self.subs))
1.1206 + return tuple(nodelist)
1.1207 +
1.1208 + def __repr__(self):
1.1209 + return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1.1210 +
1.1211 +class TryExcept(Node):
1.1212 + def __init__(self, body, handlers, else_, lineno=None):
1.1213 + self.body = body
1.1214 + self.handlers = handlers
1.1215 + self.else_ = else_
1.1216 + self.lineno = lineno
1.1217 +
1.1218 + def getChildren(self):
1.1219 + children = []
1.1220 + children.append(self.body)
1.1221 + children.extend(flatten(self.handlers))
1.1222 + children.append(self.else_)
1.1223 + return tuple(children)
1.1224 +
1.1225 + def getChildNodes(self):
1.1226 + nodelist = []
1.1227 + nodelist.append(self.body)
1.1228 + nodelist.extend(flatten_nodes(self.handlers))
1.1229 + if self.else_ is not None:
1.1230 + nodelist.append(self.else_)
1.1231 + return tuple(nodelist)
1.1232 +
1.1233 + def __repr__(self):
1.1234 + return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1.1235 +
1.1236 +class TryFinally(Node):
1.1237 + def __init__(self, body, final, lineno=None):
1.1238 + self.body = body
1.1239 + self.final = final
1.1240 + self.lineno = lineno
1.1241 +
1.1242 + def getChildren(self):
1.1243 + return self.body, self.final
1.1244 +
1.1245 + def getChildNodes(self):
1.1246 + return self.body, self.final
1.1247 +
1.1248 + def __repr__(self):
1.1249 + return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1.1250 +
1.1251 +class Tuple(Node):
1.1252 + def __init__(self, nodes, lineno=None):
1.1253 + self.nodes = nodes
1.1254 + self.lineno = lineno
1.1255 +
1.1256 + def getChildren(self):
1.1257 + return tuple(flatten(self.nodes))
1.1258 +
1.1259 + def getChildNodes(self):
1.1260 + nodelist = []
1.1261 + nodelist.extend(flatten_nodes(self.nodes))
1.1262 + return tuple(nodelist)
1.1263 +
1.1264 + def __repr__(self):
1.1265 + return "Tuple(%s)" % (repr(self.nodes),)
1.1266 +
1.1267 +class UnaryAdd(Node):
1.1268 + def __init__(self, expr, lineno=None):
1.1269 + self.expr = expr
1.1270 + self.lineno = lineno
1.1271 +
1.1272 + def getChildren(self):
1.1273 + return self.expr,
1.1274 +
1.1275 + def getChildNodes(self):
1.1276 + return self.expr,
1.1277 +
1.1278 + def __repr__(self):
1.1279 + return "UnaryAdd(%s)" % (repr(self.expr),)
1.1280 +
1.1281 +class UnarySub(Node):
1.1282 + def __init__(self, expr, lineno=None):
1.1283 + self.expr = expr
1.1284 + self.lineno = lineno
1.1285 +
1.1286 + def getChildren(self):
1.1287 + return self.expr,
1.1288 +
1.1289 + def getChildNodes(self):
1.1290 + return self.expr,
1.1291 +
1.1292 + def __repr__(self):
1.1293 + return "UnarySub(%s)" % (repr(self.expr),)
1.1294 +
1.1295 +class While(Node):
1.1296 + def __init__(self, test, body, else_, lineno=None):
1.1297 + self.test = test
1.1298 + self.body = body
1.1299 + self.else_ = else_
1.1300 + self.lineno = lineno
1.1301 +
1.1302 + def getChildren(self):
1.1303 + children = []
1.1304 + children.append(self.test)
1.1305 + children.append(self.body)
1.1306 + children.append(self.else_)
1.1307 + return tuple(children)
1.1308 +
1.1309 + def getChildNodes(self):
1.1310 + nodelist = []
1.1311 + nodelist.append(self.test)
1.1312 + nodelist.append(self.body)
1.1313 + if self.else_ is not None:
1.1314 + nodelist.append(self.else_)
1.1315 + return tuple(nodelist)
1.1316 +
1.1317 + def __repr__(self):
1.1318 + return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1.1319 +
1.1320 +class With(Node):
1.1321 + def __init__(self, expr, vars, body, lineno=None):
1.1322 + self.expr = expr
1.1323 + self.vars = vars
1.1324 + self.body = body
1.1325 + self.lineno = lineno
1.1326 +
1.1327 + def getChildren(self):
1.1328 + children = []
1.1329 + children.append(self.expr)
1.1330 + children.append(self.vars)
1.1331 + children.append(self.body)
1.1332 + return tuple(children)
1.1333 +
1.1334 + def getChildNodes(self):
1.1335 + nodelist = []
1.1336 + nodelist.append(self.expr)
1.1337 + if self.vars is not None:
1.1338 + nodelist.append(self.vars)
1.1339 + nodelist.append(self.body)
1.1340 + return tuple(nodelist)
1.1341 +
1.1342 + def __repr__(self):
1.1343 + return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1.1344 +
1.1345 +class Yield(Node):
1.1346 + def __init__(self, value, lineno=None):
1.1347 + self.value = value
1.1348 + self.lineno = lineno
1.1349 +
1.1350 + def getChildren(self):
1.1351 + return self.value,
1.1352 +
1.1353 + def getChildNodes(self):
1.1354 + return self.value,
1.1355 +
1.1356 + def __repr__(self):
1.1357 + return "Yield(%s)" % (repr(self.value),)
1.1358 +
1.1359 +for name, obj in globals().items():
1.1360 + if isinstance(obj, type) and issubclass(obj, Node):
1.1361 + nodes[name.lower()] = obj