1242 lines
31 KiB
Python
1242 lines
31 KiB
Python
"""Python abstract syntax node definitions
|
|
|
|
This file is automatically generated.
|
|
"""
|
|
from types import TupleType, ListType
|
|
from consts import CO_VARARGS, CO_VARKEYWORDS
|
|
|
|
def flatten(list):
|
|
l = []
|
|
for elt in list:
|
|
t = type(elt)
|
|
if t is TupleType or t is ListType:
|
|
for elt2 in flatten(elt):
|
|
l.append(elt2)
|
|
else:
|
|
l.append(elt)
|
|
return l
|
|
|
|
def flatten_nodes(list):
|
|
return [n for n in flatten(list) if isinstance(n, Node)]
|
|
|
|
def asList(nodes):
|
|
l = []
|
|
for item in nodes:
|
|
if hasattr(item, "asList"):
|
|
l.append(item.asList())
|
|
else:
|
|
t = type(item)
|
|
if t is TupleType or t is ListType:
|
|
l.append(tuple(asList(item)))
|
|
else:
|
|
l.append(item)
|
|
return l
|
|
|
|
nodes = {}
|
|
|
|
class Node: # an abstract base class
|
|
lineno = None # provide a lineno for nodes that don't have one
|
|
def getType(self):
|
|
pass # implemented by subclass
|
|
def getChildren(self):
|
|
pass # implemented by subclasses
|
|
def asList(self):
|
|
return tuple(asList(self.getChildren()))
|
|
def getChildNodes(self):
|
|
pass # implemented by subclasses
|
|
|
|
class EmptyNode(Node):
|
|
pass
|
|
|
|
class Slice(Node):
|
|
nodes["slice"] = "Slice"
|
|
def __init__(self, expr, flags, lower, upper):
|
|
self.expr = expr
|
|
self.flags = flags
|
|
self.lower = lower
|
|
self.upper = upper
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.expr)
|
|
children.append(self.flags)
|
|
children.append(self.lower)
|
|
children.append(self.upper)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.expr)
|
|
if self.lower is not None: nodes.append(self.lower)
|
|
if self.upper is not None: nodes.append(self.upper)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
|
|
|
|
class Const(Node):
|
|
nodes["const"] = "Const"
|
|
def __init__(self, value):
|
|
self.value = value
|
|
|
|
def getChildren(self):
|
|
return self.value,
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Const(%s)" % (repr(self.value),)
|
|
|
|
class Raise(Node):
|
|
nodes["raise"] = "Raise"
|
|
def __init__(self, expr1, expr2, expr3):
|
|
self.expr1 = expr1
|
|
self.expr2 = expr2
|
|
self.expr3 = expr3
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.expr1)
|
|
children.append(self.expr2)
|
|
children.append(self.expr3)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
if self.expr1 is not None: nodes.append(self.expr1)
|
|
if self.expr2 is not None: nodes.append(self.expr2)
|
|
if self.expr3 is not None: nodes.append(self.expr3)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
|
|
|
|
class For(Node):
|
|
nodes["for"] = "For"
|
|
def __init__(self, assign, list, body, else_):
|
|
self.assign = assign
|
|
self.list = list
|
|
self.body = body
|
|
self.else_ = else_
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.assign)
|
|
children.append(self.list)
|
|
children.append(self.body)
|
|
children.append(self.else_)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.assign)
|
|
nodes.append(self.list)
|
|
nodes.append(self.body)
|
|
if self.else_ is not None: nodes.append(self.else_)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
|
|
|
|
class AssTuple(Node):
|
|
nodes["asstuple"] = "AssTuple"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "AssTuple(%s)" % (repr(self.nodes),)
|
|
|
|
class Mul(Node):
|
|
nodes["mul"] = "Mul"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class Invert(Node):
|
|
nodes["invert"] = "Invert"
|
|
def __init__(self, expr):
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.expr,
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "Invert(%s)" % (repr(self.expr),)
|
|
|
|
class RightShift(Node):
|
|
nodes["rightshift"] = "RightShift"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class AssList(Node):
|
|
nodes["asslist"] = "AssList"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "AssList(%s)" % (repr(self.nodes),)
|
|
|
|
class From(Node):
|
|
nodes["from"] = "From"
|
|
def __init__(self, modname, names):
|
|
self.modname = modname
|
|
self.names = names
|
|
|
|
def getChildren(self):
|
|
return self.modname, self.names
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "From(%s, %s)" % (repr(self.modname), repr(self.names))
|
|
|
|
class Getattr(Node):
|
|
nodes["getattr"] = "Getattr"
|
|
def __init__(self, expr, attrname):
|
|
self.expr = expr
|
|
self.attrname = attrname
|
|
|
|
def getChildren(self):
|
|
return self.expr, self.attrname
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
|
|
|
|
class Dict(Node):
|
|
nodes["dict"] = "Dict"
|
|
def __init__(self, items):
|
|
self.items = items
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.items))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.items))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Dict(%s)" % (repr(self.items),)
|
|
|
|
class Module(Node):
|
|
nodes["module"] = "Module"
|
|
def __init__(self, doc, node):
|
|
self.doc = doc
|
|
self.node = node
|
|
|
|
def getChildren(self):
|
|
return self.doc, self.node
|
|
|
|
def getChildNodes(self):
|
|
return self.node,
|
|
|
|
def __repr__(self):
|
|
return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
|
|
|
|
class Expression(Node):
|
|
# Expression is an artifical node class to support "eval"
|
|
nodes["expression"] = "Expression"
|
|
def __init__(self, node):
|
|
self.node = node
|
|
|
|
def getChildren(self):
|
|
return self.node,
|
|
|
|
def getChildNodes(self):
|
|
return self.node,
|
|
|
|
def __repr__(self):
|
|
return "Expression(%s)" % (repr(self.node))
|
|
|
|
class UnaryAdd(Node):
|
|
nodes["unaryadd"] = "UnaryAdd"
|
|
def __init__(self, expr):
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.expr,
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "UnaryAdd(%s)" % (repr(self.expr),)
|
|
|
|
class Ellipsis(Node):
|
|
nodes["ellipsis"] = "Ellipsis"
|
|
def __init__(self, ):
|
|
pass
|
|
|
|
def getChildren(self):
|
|
return ()
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Ellipsis()"
|
|
|
|
class Print(Node):
|
|
nodes["print"] = "Print"
|
|
def __init__(self, nodes, dest):
|
|
self.nodes = nodes
|
|
self.dest = dest
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
children.append(self.dest)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
if self.dest is not None: nodes.append(self.dest)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
|
|
|
|
class Import(Node):
|
|
nodes["import"] = "Import"
|
|
def __init__(self, names):
|
|
self.names = names
|
|
|
|
def getChildren(self):
|
|
return self.names,
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Import(%s)" % (repr(self.names),)
|
|
|
|
class Subscript(Node):
|
|
nodes["subscript"] = "Subscript"
|
|
def __init__(self, expr, flags, subs):
|
|
self.expr = expr
|
|
self.flags = flags
|
|
self.subs = subs
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.expr)
|
|
children.append(self.flags)
|
|
children.extend(flatten(self.subs))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.expr)
|
|
nodes.extend(flatten_nodes(self.subs))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
|
|
|
|
class TryExcept(Node):
|
|
nodes["tryexcept"] = "TryExcept"
|
|
def __init__(self, body, handlers, else_):
|
|
self.body = body
|
|
self.handlers = handlers
|
|
self.else_ = else_
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.body)
|
|
children.extend(flatten(self.handlers))
|
|
children.append(self.else_)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.body)
|
|
nodes.extend(flatten_nodes(self.handlers))
|
|
if self.else_ is not None: nodes.append(self.else_)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
|
|
|
|
class Or(Node):
|
|
nodes["or"] = "Or"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Or(%s)" % (repr(self.nodes),)
|
|
|
|
class Name(Node):
|
|
nodes["name"] = "Name"
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
def getChildren(self):
|
|
return self.name,
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Name(%s)" % (repr(self.name),)
|
|
|
|
class Function(Node):
|
|
nodes["function"] = "Function"
|
|
def __init__(self, name, argnames, defaults, flags, doc, code):
|
|
self.name = name
|
|
self.argnames = argnames
|
|
self.defaults = defaults
|
|
self.flags = flags
|
|
self.doc = doc
|
|
self.code = code
|
|
self.varargs = self.kwargs = None
|
|
if flags & CO_VARARGS:
|
|
self.varargs = 1
|
|
if flags & CO_VARKEYWORDS:
|
|
self.kwargs = 1
|
|
|
|
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.name)
|
|
children.append(self.argnames)
|
|
children.extend(flatten(self.defaults))
|
|
children.append(self.flags)
|
|
children.append(self.doc)
|
|
children.append(self.code)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.defaults))
|
|
nodes.append(self.code)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Function(%s, %s, %s, %s, %s, %s)" % (repr(self.name), repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.doc), repr(self.code))
|
|
|
|
class Assert(Node):
|
|
nodes["assert"] = "Assert"
|
|
def __init__(self, test, fail):
|
|
self.test = test
|
|
self.fail = fail
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.test)
|
|
children.append(self.fail)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.test)
|
|
if self.fail is not None: nodes.append(self.fail)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
|
|
|
|
class Return(Node):
|
|
nodes["return"] = "Return"
|
|
def __init__(self, value):
|
|
self.value = value
|
|
|
|
def getChildren(self):
|
|
return self.value,
|
|
|
|
def getChildNodes(self):
|
|
return self.value,
|
|
|
|
def __repr__(self):
|
|
return "Return(%s)" % (repr(self.value),)
|
|
|
|
class Power(Node):
|
|
nodes["power"] = "Power"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "Power((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class Exec(Node):
|
|
nodes["exec"] = "Exec"
|
|
def __init__(self, expr, locals, globals):
|
|
self.expr = expr
|
|
self.locals = locals
|
|
self.globals = globals
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.expr)
|
|
children.append(self.locals)
|
|
children.append(self.globals)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.expr)
|
|
if self.locals is not None: nodes.append(self.locals)
|
|
if self.globals is not None: nodes.append(self.globals)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
|
|
|
|
class Stmt(Node):
|
|
nodes["stmt"] = "Stmt"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Stmt(%s)" % (repr(self.nodes),)
|
|
|
|
class Sliceobj(Node):
|
|
nodes["sliceobj"] = "Sliceobj"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Sliceobj(%s)" % (repr(self.nodes),)
|
|
|
|
class Break(Node):
|
|
nodes["break"] = "Break"
|
|
def __init__(self, ):
|
|
pass
|
|
|
|
def getChildren(self):
|
|
return ()
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Break()"
|
|
|
|
class Bitand(Node):
|
|
nodes["bitand"] = "Bitand"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Bitand(%s)" % (repr(self.nodes),)
|
|
|
|
class FloorDiv(Node):
|
|
nodes["floordiv"] = "FloorDiv"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class TryFinally(Node):
|
|
nodes["tryfinally"] = "TryFinally"
|
|
def __init__(self, body, final):
|
|
self.body = body
|
|
self.final = final
|
|
|
|
def getChildren(self):
|
|
return self.body, self.final
|
|
|
|
def getChildNodes(self):
|
|
return self.body, self.final
|
|
|
|
def __repr__(self):
|
|
return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
|
|
|
|
class Not(Node):
|
|
nodes["not"] = "Not"
|
|
def __init__(self, expr):
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.expr,
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "Not(%s)" % (repr(self.expr),)
|
|
|
|
class Class(Node):
|
|
nodes["class"] = "Class"
|
|
def __init__(self, name, bases, doc, code):
|
|
self.name = name
|
|
self.bases = bases
|
|
self.doc = doc
|
|
self.code = code
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.name)
|
|
children.extend(flatten(self.bases))
|
|
children.append(self.doc)
|
|
children.append(self.code)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.bases))
|
|
nodes.append(self.code)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
|
|
|
|
class Mod(Node):
|
|
nodes["mod"] = "Mod"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class Printnl(Node):
|
|
nodes["printnl"] = "Printnl"
|
|
def __init__(self, nodes, dest):
|
|
self.nodes = nodes
|
|
self.dest = dest
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
children.append(self.dest)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
if self.dest is not None: nodes.append(self.dest)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
|
|
|
|
class Tuple(Node):
|
|
nodes["tuple"] = "Tuple"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Tuple(%s)" % (repr(self.nodes),)
|
|
|
|
class AssAttr(Node):
|
|
nodes["assattr"] = "AssAttr"
|
|
def __init__(self, expr, attrname, flags):
|
|
self.expr = expr
|
|
self.attrname = attrname
|
|
self.flags = flags
|
|
|
|
def getChildren(self):
|
|
return self.expr, self.attrname, self.flags
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
|
|
|
|
class Keyword(Node):
|
|
nodes["keyword"] = "Keyword"
|
|
def __init__(self, name, expr):
|
|
self.name = name
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.name, self.expr
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
|
|
|
|
class AugAssign(Node):
|
|
nodes["augassign"] = "AugAssign"
|
|
def __init__(self, node, op, expr):
|
|
self.node = node
|
|
self.op = op
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.node, self.op, self.expr
|
|
|
|
def getChildNodes(self):
|
|
return self.node, self.expr
|
|
|
|
def __repr__(self):
|
|
return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
|
|
|
|
class List(Node):
|
|
nodes["list"] = "List"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "List(%s)" % (repr(self.nodes),)
|
|
|
|
class Yield(Node):
|
|
nodes["yield"] = "Yield"
|
|
def __init__(self, value):
|
|
self.value = value
|
|
|
|
def getChildren(self):
|
|
return self.value,
|
|
|
|
def getChildNodes(self):
|
|
return self.value,
|
|
|
|
def __repr__(self):
|
|
return "Yield(%s)" % (repr(self.value),)
|
|
|
|
class LeftShift(Node):
|
|
nodes["leftshift"] = "LeftShift"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class AssName(Node):
|
|
nodes["assname"] = "AssName"
|
|
def __init__(self, name, flags):
|
|
self.name = name
|
|
self.flags = flags
|
|
|
|
def getChildren(self):
|
|
return self.name, self.flags
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
|
|
|
|
class While(Node):
|
|
nodes["while"] = "While"
|
|
def __init__(self, test, body, else_):
|
|
self.test = test
|
|
self.body = body
|
|
self.else_ = else_
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.test)
|
|
children.append(self.body)
|
|
children.append(self.else_)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.test)
|
|
nodes.append(self.body)
|
|
if self.else_ is not None: nodes.append(self.else_)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
|
|
|
|
class Continue(Node):
|
|
nodes["continue"] = "Continue"
|
|
def __init__(self, ):
|
|
pass
|
|
|
|
def getChildren(self):
|
|
return ()
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Continue()"
|
|
|
|
class Backquote(Node):
|
|
nodes["backquote"] = "Backquote"
|
|
def __init__(self, expr):
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.expr,
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "Backquote(%s)" % (repr(self.expr),)
|
|
|
|
class Discard(Node):
|
|
nodes["discard"] = "Discard"
|
|
def __init__(self, expr):
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.expr,
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "Discard(%s)" % (repr(self.expr),)
|
|
|
|
class Div(Node):
|
|
nodes["div"] = "Div"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "Div((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class Assign(Node):
|
|
nodes["assign"] = "Assign"
|
|
def __init__(self, nodes, expr):
|
|
self.nodes = nodes
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
children.append(self.expr)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
nodes.append(self.expr)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
|
|
|
|
class Lambda(Node):
|
|
nodes["lambda"] = "Lambda"
|
|
def __init__(self, argnames, defaults, flags, code):
|
|
self.argnames = argnames
|
|
self.defaults = defaults
|
|
self.flags = flags
|
|
self.code = code
|
|
self.varargs = self.kwargs = None
|
|
if flags & CO_VARARGS:
|
|
self.varargs = 1
|
|
if flags & CO_VARKEYWORDS:
|
|
self.kwargs = 1
|
|
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.argnames)
|
|
children.extend(flatten(self.defaults))
|
|
children.append(self.flags)
|
|
children.append(self.code)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.defaults))
|
|
nodes.append(self.code)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
|
|
|
|
class And(Node):
|
|
nodes["and"] = "And"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "And(%s)" % (repr(self.nodes),)
|
|
|
|
class Compare(Node):
|
|
nodes["compare"] = "Compare"
|
|
def __init__(self, expr, ops):
|
|
self.expr = expr
|
|
self.ops = ops
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.expr)
|
|
children.extend(flatten(self.ops))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.expr)
|
|
nodes.extend(flatten_nodes(self.ops))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
|
|
|
|
class Bitor(Node):
|
|
nodes["bitor"] = "Bitor"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Bitor(%s)" % (repr(self.nodes),)
|
|
|
|
class Bitxor(Node):
|
|
nodes["bitxor"] = "Bitxor"
|
|
def __init__(self, nodes):
|
|
self.nodes = nodes
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.nodes))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.nodes))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "Bitxor(%s)" % (repr(self.nodes),)
|
|
|
|
class CallFunc(Node):
|
|
nodes["callfunc"] = "CallFunc"
|
|
def __init__(self, node, args, star_args = None, dstar_args = None):
|
|
self.node = node
|
|
self.args = args
|
|
self.star_args = star_args
|
|
self.dstar_args = dstar_args
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.node)
|
|
children.extend(flatten(self.args))
|
|
children.append(self.star_args)
|
|
children.append(self.dstar_args)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.node)
|
|
nodes.extend(flatten_nodes(self.args))
|
|
if self.star_args is not None: nodes.append(self.star_args)
|
|
if self.dstar_args is not None: nodes.append(self.dstar_args)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
|
|
|
|
class Global(Node):
|
|
nodes["global"] = "Global"
|
|
def __init__(self, names):
|
|
self.names = names
|
|
|
|
def getChildren(self):
|
|
return self.names,
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Global(%s)" % (repr(self.names),)
|
|
|
|
class Add(Node):
|
|
nodes["add"] = "Add"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "Add((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class ListCompIf(Node):
|
|
nodes["listcompif"] = "ListCompIf"
|
|
def __init__(self, test):
|
|
self.test = test
|
|
|
|
def getChildren(self):
|
|
return self.test,
|
|
|
|
def getChildNodes(self):
|
|
return self.test,
|
|
|
|
def __repr__(self):
|
|
return "ListCompIf(%s)" % (repr(self.test),)
|
|
|
|
class Sub(Node):
|
|
nodes["sub"] = "Sub"
|
|
def __init__(self, (left, right)):
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def getChildren(self):
|
|
return self.left, self.right
|
|
|
|
def getChildNodes(self):
|
|
return self.left, self.right
|
|
|
|
def __repr__(self):
|
|
return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
|
|
|
|
class Pass(Node):
|
|
nodes["pass"] = "Pass"
|
|
def __init__(self, ):
|
|
pass
|
|
|
|
def getChildren(self):
|
|
return ()
|
|
|
|
def getChildNodes(self):
|
|
return ()
|
|
|
|
def __repr__(self):
|
|
return "Pass()"
|
|
|
|
class UnarySub(Node):
|
|
nodes["unarysub"] = "UnarySub"
|
|
def __init__(self, expr):
|
|
self.expr = expr
|
|
|
|
def getChildren(self):
|
|
return self.expr,
|
|
|
|
def getChildNodes(self):
|
|
return self.expr,
|
|
|
|
def __repr__(self):
|
|
return "UnarySub(%s)" % (repr(self.expr),)
|
|
|
|
class If(Node):
|
|
nodes["if"] = "If"
|
|
def __init__(self, tests, else_):
|
|
self.tests = tests
|
|
self.else_ = else_
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.extend(flatten(self.tests))
|
|
children.append(self.else_)
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.extend(flatten_nodes(self.tests))
|
|
if self.else_ is not None: nodes.append(self.else_)
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
|
|
|
|
class ListComp(Node):
|
|
nodes["listcomp"] = "ListComp"
|
|
def __init__(self, expr, quals):
|
|
self.expr = expr
|
|
self.quals = quals
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.expr)
|
|
children.extend(flatten(self.quals))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.expr)
|
|
nodes.extend(flatten_nodes(self.quals))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
|
|
|
|
class ListCompFor(Node):
|
|
nodes["listcompfor"] = "ListCompFor"
|
|
def __init__(self, assign, list, ifs):
|
|
self.assign = assign
|
|
self.list = list
|
|
self.ifs = ifs
|
|
|
|
def getChildren(self):
|
|
children = []
|
|
children.append(self.assign)
|
|
children.append(self.list)
|
|
children.extend(flatten(self.ifs))
|
|
return tuple(children)
|
|
|
|
def getChildNodes(self):
|
|
nodes = []
|
|
nodes.append(self.assign)
|
|
nodes.append(self.list)
|
|
nodes.extend(flatten_nodes(self.ifs))
|
|
return tuple(nodes)
|
|
|
|
def __repr__(self):
|
|
return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
|
|
|
|
klasses = globals()
|
|
for k in nodes.keys():
|
|
nodes[k] = klasses[nodes[k]]
|