[pypy-svn] r16271 - pypy/dist/pypy/interpreter/astcompiler
ludal at codespeak.net
ludal at codespeak.net
Tue Aug 23 16:13:13 CEST 2005
Author: ludal
Date: Tue Aug 23 16:13:12 2005
New Revision: 16271
Modified:
pypy/dist/pypy/interpreter/astcompiler/ast.py
pypy/dist/pypy/interpreter/astcompiler/ast.txt
pypy/dist/pypy/interpreter/astcompiler/astgen.py
Log:
Regenerated ast.py:
- name->varname needs a different attribute name to be rpython
- make lineno a base attribute of Node
- make getChildNodes return list of nodes
Modified: pypy/dist/pypy/interpreter/astcompiler/ast.py
==============================================================================
--- pypy/dist/pypy/interpreter/astcompiler/ast.py (original)
+++ pypy/dist/pypy/interpreter/astcompiler/ast.py Tue Aug 23 16:13:12 2005
@@ -22,6 +22,9 @@
class Node:
"""Abstract base class for ast nodes."""
+ def __init__(self, lineno = None):
+ self.lineno = lineno
+
def getChildren(self):
pass # implemented by subclasses
def __iter__(self):
@@ -30,9 +33,18 @@
def asList(self): # for backwards compatibility
return self.getChildren()
def getChildNodes(self):
- pass # implemented by subclasses
+ return [] # implemented by subclasses
def visit(self, visitor, *args):
return visitor.visitNode(self, *args)
+ def flatten(self):
+ res = []
+ nodes = self.getChildNodes()
+ if nodes:
+ for n in nodes:
+ res.extend( n.flatten() )
+ else:
+ res.append( self )
+ return res
class EmptyNode(Node):
def visit(self, visitor, *args):
@@ -42,13 +54,14 @@
# Expression is an artificial node class to support "eval"
nodes["expression"] = "Expression"
def __init__(self, node):
+ Node.__init__(self)
self.node = node
def getChildren(self):
- return self.node,
+ return [self.node,]
def getChildNodes(self):
- return self.node,
+ return [self.node,]
def __repr__(self):
return "Expression(%s)" % (repr(self.node))
@@ -58,15 +71,15 @@
class Add(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "Add((%s, %s))" % (repr(self.left), repr(self.right))
@@ -76,8 +89,8 @@
class And(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -85,7 +98,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "And(%s)" % (repr(self.nodes),)
@@ -95,16 +108,16 @@
class AssAttr(Node):
def __init__(self, expr, attrname, flags, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.attrname = attrname
self.flags = flags
- self.lineno = lineno
def getChildren(self):
return self.expr, self.attrname, self.flags
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
@@ -114,8 +127,8 @@
class AssList(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -123,7 +136,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "AssList(%s)" % (repr(self.nodes),)
@@ -133,15 +146,15 @@
class AssName(Node):
def __init__(self, name, flags, lineno=None):
+ Node.__init__(self, lineno)
self.name = name
self.flags = flags
- self.lineno = lineno
def getChildren(self):
return self.name, self.flags
def getChildNodes(self):
- return ()
+ return []
def __repr__(self):
return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
@@ -151,8 +164,8 @@
class AssTuple(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -160,7 +173,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "AssTuple(%s)" % (repr(self.nodes),)
@@ -170,9 +183,9 @@
class Assert(Node):
def __init__(self, test, fail, lineno=None):
+ Node.__init__(self, lineno)
self.test = test
self.fail = fail
- self.lineno = lineno
def getChildren(self):
children = []
@@ -185,7 +198,7 @@
nodelist.append(self.test)
if self.fail is not None:
nodelist.append(self.fail)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
@@ -195,9 +208,9 @@
class Assign(Node):
def __init__(self, nodes, expr, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
self.expr = expr
- self.lineno = lineno
def getChildren(self):
children = []
@@ -209,7 +222,7 @@
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
nodelist.append(self.expr)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
@@ -219,16 +232,16 @@
class AugAssign(Node):
def __init__(self, node, op, expr, lineno=None):
+ Node.__init__(self, lineno)
self.node = node
self.op = op
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.node, self.op, self.expr
def getChildNodes(self):
- return self.node, self.expr
+ return [self.node, self.expr]
def __repr__(self):
return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
@@ -238,14 +251,14 @@
class Backquote(Node):
def __init__(self, expr, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.expr,
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "Backquote(%s)" % (repr(self.expr),)
@@ -255,8 +268,8 @@
class Bitand(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -264,7 +277,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Bitand(%s)" % (repr(self.nodes),)
@@ -274,8 +287,8 @@
class Bitor(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -283,7 +296,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Bitor(%s)" % (repr(self.nodes),)
@@ -293,8 +306,8 @@
class Bitxor(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -302,7 +315,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Bitxor(%s)" % (repr(self.nodes),)
@@ -312,7 +325,7 @@
class Break(Node):
def __init__(self, lineno=None):
- self.lineno = lineno
+ Node.__init__(self, lineno)
def getChildren(self):
return ()
@@ -328,11 +341,11 @@
class CallFunc(Node):
def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
+ Node.__init__(self, lineno)
self.node = node
self.args = args
self.star_args = star_args
self.dstar_args = dstar_args
- self.lineno = lineno
def getChildren(self):
children = []
@@ -350,7 +363,7 @@
nodelist.append(self.star_args)
if self.dstar_args is not None:
nodelist.append(self.dstar_args)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
@@ -360,11 +373,11 @@
class Class(Node):
def __init__(self, name, bases, doc, code, lineno=None):
+ Node.__init__(self, lineno)
self.name = name
self.bases = bases
self.doc = doc
self.code = code
- self.lineno = lineno
def getChildren(self):
children = []
@@ -378,7 +391,7 @@
nodelist = []
nodelist.extend(flatten_nodes(self.bases))
nodelist.append(self.code)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Class(%s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code))
@@ -388,9 +401,9 @@
class Compare(Node):
def __init__(self, expr, ops, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.ops = ops
- self.lineno = lineno
def getChildren(self):
children = []
@@ -402,7 +415,7 @@
nodelist = []
nodelist.append(self.expr)
nodelist.extend(flatten_nodes(self.ops))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
@@ -412,14 +425,14 @@
class Const(Node):
def __init__(self, value, lineno=None):
+ Node.__init__(self, lineno)
self.value = value
- self.lineno = lineno
def getChildren(self):
return self.value,
def getChildNodes(self):
- return ()
+ return []
def __repr__(self):
return "Const(%s)" % (repr(self.value),)
@@ -429,7 +442,7 @@
class Continue(Node):
def __init__(self, lineno=None):
- self.lineno = lineno
+ Node.__init__(self, lineno)
def getChildren(self):
return ()
@@ -445,8 +458,8 @@
class Decorators(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -454,7 +467,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Decorators(%s)" % (repr(self.nodes),)
@@ -464,8 +477,8 @@
class Dict(Node):
def __init__(self, items, lineno=None):
+ Node.__init__(self, lineno)
self.items = items
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.items))
@@ -473,7 +486,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.items))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Dict(%s)" % (repr(self.items),)
@@ -483,14 +496,14 @@
class Discard(Node):
def __init__(self, expr, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.expr,
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "Discard(%s)" % (repr(self.expr),)
@@ -500,15 +513,15 @@
class Div(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "Div((%s, %s))" % (repr(self.left), repr(self.right))
@@ -518,7 +531,7 @@
class Ellipsis(Node):
def __init__(self, lineno=None):
- self.lineno = lineno
+ Node.__init__(self, lineno)
def getChildren(self):
return ()
@@ -534,10 +547,10 @@
class Exec(Node):
def __init__(self, expr, locals, globals, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.locals = locals
self.globals = globals
- self.lineno = lineno
def getChildren(self):
children = []
@@ -553,7 +566,7 @@
nodelist.append(self.locals)
if self.globals is not None:
nodelist.append(self.globals)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
@@ -563,15 +576,15 @@
class FloorDiv(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
@@ -581,11 +594,11 @@
class For(Node):
def __init__(self, assign, list, body, else_, lineno=None):
+ Node.__init__(self, lineno)
self.assign = assign
self.list = list
self.body = body
self.else_ = else_
- self.lineno = lineno
def getChildren(self):
children = []
@@ -602,7 +615,7 @@
nodelist.append(self.body)
if self.else_ is not None:
nodelist.append(self.else_)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
@@ -612,15 +625,15 @@
class From(Node):
def __init__(self, modname, names, lineno=None):
+ Node.__init__(self, lineno)
self.modname = modname
self.names = names
- self.lineno = lineno
def getChildren(self):
return self.modname, self.names
def getChildNodes(self):
- return ()
+ return []
def __repr__(self):
return "From(%s, %s)" % (repr(self.modname), repr(self.names))
@@ -630,6 +643,7 @@
class Function(Node):
def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
+ Node.__init__(self, lineno)
self.decorators = decorators
self.name = name
self.argnames = argnames
@@ -637,7 +651,6 @@
self.flags = flags
self.doc = doc
self.code = code
- self.lineno = lineno
self.varargs = self.kwargs = None
if flags & CO_VARARGS:
self.varargs = 1
@@ -663,7 +676,7 @@
nodelist.append(self.decorators)
nodelist.extend(flatten_nodes(self.defaults))
nodelist.append(self.code)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
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))
@@ -673,8 +686,8 @@
class GenExpr(Node):
def __init__(self, code, lineno=None):
+ Node.__init__(self, lineno)
self.code = code
- self.lineno = lineno
self.argnames = ['[outmost-iterable]']
self.varargs = self.kwargs = None
@@ -684,7 +697,7 @@
return self.code,
def getChildNodes(self):
- return self.code,
+ return [self.code,]
def __repr__(self):
return "GenExpr(%s)" % (repr(self.code),)
@@ -694,10 +707,10 @@
class GenExprFor(Node):
def __init__(self, assign, iter, ifs, lineno=None):
+ Node.__init__(self, lineno)
self.assign = assign
self.iter = iter
self.ifs = ifs
- self.lineno = lineno
self.is_outmost = False
@@ -713,7 +726,7 @@
nodelist.append(self.assign)
nodelist.append(self.iter)
nodelist.extend(flatten_nodes(self.ifs))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
@@ -723,14 +736,14 @@
class GenExprIf(Node):
def __init__(self, test, lineno=None):
+ Node.__init__(self, lineno)
self.test = test
- self.lineno = lineno
def getChildren(self):
return self.test,
def getChildNodes(self):
- return self.test,
+ return [self.test,]
def __repr__(self):
return "GenExprIf(%s)" % (repr(self.test),)
@@ -740,9 +753,9 @@
class GenExprInner(Node):
def __init__(self, expr, quals, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.quals = quals
- self.lineno = lineno
def getChildren(self):
children = []
@@ -754,7 +767,7 @@
nodelist = []
nodelist.append(self.expr)
nodelist.extend(flatten_nodes(self.quals))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
@@ -764,15 +777,15 @@
class Getattr(Node):
def __init__(self, expr, attrname, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.attrname = attrname
- self.lineno = lineno
def getChildren(self):
return self.expr, self.attrname
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
@@ -782,14 +795,14 @@
class Global(Node):
def __init__(self, names, lineno=None):
+ Node.__init__(self, lineno)
self.names = names
- self.lineno = lineno
def getChildren(self):
return self.names,
def getChildNodes(self):
- return ()
+ return []
def __repr__(self):
return "Global(%s)" % (repr(self.names),)
@@ -799,9 +812,9 @@
class If(Node):
def __init__(self, tests, else_, lineno=None):
+ Node.__init__(self, lineno)
self.tests = tests
self.else_ = else_
- self.lineno = lineno
def getChildren(self):
children = []
@@ -814,7 +827,7 @@
nodelist.extend(flatten_nodes(self.tests))
if self.else_ is not None:
nodelist.append(self.else_)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
@@ -824,14 +837,14 @@
class Import(Node):
def __init__(self, names, lineno=None):
+ Node.__init__(self, lineno)
self.names = names
- self.lineno = lineno
def getChildren(self):
return self.names,
def getChildNodes(self):
- return ()
+ return []
def __repr__(self):
return "Import(%s)" % (repr(self.names),)
@@ -841,14 +854,14 @@
class Invert(Node):
def __init__(self, expr, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.expr,
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "Invert(%s)" % (repr(self.expr),)
@@ -858,15 +871,15 @@
class Keyword(Node):
def __init__(self, name, expr, lineno=None):
+ Node.__init__(self, lineno)
self.name = name
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.name, self.expr
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
@@ -876,11 +889,11 @@
class Lambda(Node):
def __init__(self, argnames, defaults, flags, code, lineno=None):
+ Node.__init__(self, lineno)
self.argnames = argnames
self.defaults = defaults
self.flags = flags
self.code = code
- self.lineno = lineno
self.varargs = self.kwargs = None
if flags & CO_VARARGS:
self.varargs = 1
@@ -901,7 +914,7 @@
nodelist = []
nodelist.extend(flatten_nodes(self.defaults))
nodelist.append(self.code)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
@@ -911,15 +924,15 @@
class LeftShift(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
@@ -929,8 +942,8 @@
class List(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -938,7 +951,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "List(%s)" % (repr(self.nodes),)
@@ -948,9 +961,9 @@
class ListComp(Node):
def __init__(self, expr, quals, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.quals = quals
- self.lineno = lineno
def getChildren(self):
children = []
@@ -962,7 +975,7 @@
nodelist = []
nodelist.append(self.expr)
nodelist.extend(flatten_nodes(self.quals))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
@@ -972,10 +985,10 @@
class ListCompFor(Node):
def __init__(self, assign, list, ifs, lineno=None):
+ Node.__init__(self, lineno)
self.assign = assign
self.list = list
self.ifs = ifs
- self.lineno = lineno
def getChildren(self):
children = []
@@ -989,7 +1002,7 @@
nodelist.append(self.assign)
nodelist.append(self.list)
nodelist.extend(flatten_nodes(self.ifs))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
@@ -999,14 +1012,14 @@
class ListCompIf(Node):
def __init__(self, test, lineno=None):
+ Node.__init__(self, lineno)
self.test = test
- self.lineno = lineno
def getChildren(self):
return self.test,
def getChildNodes(self):
- return self.test,
+ return [self.test,]
def __repr__(self):
return "ListCompIf(%s)" % (repr(self.test),)
@@ -1016,15 +1029,15 @@
class Mod(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
@@ -1034,15 +1047,15 @@
class Module(Node):
def __init__(self, doc, node, lineno=None):
+ Node.__init__(self, lineno)
self.doc = doc
self.node = node
- self.lineno = lineno
def getChildren(self):
return self.doc, self.node
def getChildNodes(self):
- return self.node,
+ return [self.node,]
def __repr__(self):
return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
@@ -1052,15 +1065,15 @@
class Mul(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
@@ -1069,16 +1082,15 @@
return visitor.visitMul(self, args)
class Name(Node):
- def __init__(self, name, lineno=None):
- # self.name = name
- self.varname = name
- self.lineno = lineno
+ def __init__(self, varname, lineno=None):
+ Node.__init__(self, lineno)
+ self.varname = varname
def getChildren(self):
return self.varname,
def getChildNodes(self):
- return ()
+ return []
def __repr__(self):
return "Name(%s)" % (repr(self.varname),)
@@ -1088,14 +1100,14 @@
class Not(Node):
def __init__(self, expr, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.expr,
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "Not(%s)" % (repr(self.expr),)
@@ -1105,8 +1117,8 @@
class Or(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -1114,7 +1126,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Or(%s)" % (repr(self.nodes),)
@@ -1124,7 +1136,7 @@
class Pass(Node):
def __init__(self, lineno=None):
- self.lineno = lineno
+ Node.__init__(self, lineno)
def getChildren(self):
return ()
@@ -1140,15 +1152,15 @@
class Power(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "Power((%s, %s))" % (repr(self.left), repr(self.right))
@@ -1158,9 +1170,9 @@
class Print(Node):
def __init__(self, nodes, dest, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
self.dest = dest
- self.lineno = lineno
def getChildren(self):
children = []
@@ -1173,7 +1185,7 @@
nodelist.extend(flatten_nodes(self.nodes))
if self.dest is not None:
nodelist.append(self.dest)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
@@ -1183,9 +1195,9 @@
class Printnl(Node):
def __init__(self, nodes, dest, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
self.dest = dest
- self.lineno = lineno
def getChildren(self):
children = []
@@ -1198,7 +1210,7 @@
nodelist.extend(flatten_nodes(self.nodes))
if self.dest is not None:
nodelist.append(self.dest)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
@@ -1208,10 +1220,10 @@
class Raise(Node):
def __init__(self, expr1, expr2, expr3, lineno=None):
+ Node.__init__(self, lineno)
self.expr1 = expr1
self.expr2 = expr2
self.expr3 = expr3
- self.lineno = lineno
def getChildren(self):
children = []
@@ -1228,7 +1240,7 @@
nodelist.append(self.expr2)
if self.expr3 is not None:
nodelist.append(self.expr3)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
@@ -1238,14 +1250,14 @@
class Return(Node):
def __init__(self, value, lineno=None):
+ Node.__init__(self, lineno)
self.value = value
- self.lineno = lineno
def getChildren(self):
return self.value,
def getChildNodes(self):
- return self.value,
+ return [self.value,]
def __repr__(self):
return "Return(%s)" % (repr(self.value),)
@@ -1255,15 +1267,15 @@
class RightShift(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
@@ -1273,11 +1285,11 @@
class Slice(Node):
def __init__(self, expr, flags, lower, upper, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.flags = flags
self.lower = lower
self.upper = upper
- self.lineno = lineno
def getChildren(self):
children = []
@@ -1294,7 +1306,7 @@
nodelist.append(self.lower)
if self.upper is not None:
nodelist.append(self.upper)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
@@ -1304,8 +1316,8 @@
class Sliceobj(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -1313,7 +1325,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Sliceobj(%s)" % (repr(self.nodes),)
@@ -1323,8 +1335,8 @@
class Stmt(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -1332,7 +1344,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Stmt(%s)" % (repr(self.nodes),)
@@ -1342,15 +1354,15 @@
class Sub(Node):
def __init__(self, (left, right), lineno=None):
+ Node.__init__(self, lineno)
self.left = left
self.right = right
- self.lineno = lineno
def getChildren(self):
return self.left, self.right
def getChildNodes(self):
- return self.left, self.right
+ return [self.left, self.right]
def __repr__(self):
return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
@@ -1360,10 +1372,10 @@
class Subscript(Node):
def __init__(self, expr, flags, subs, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
self.flags = flags
self.subs = subs
- self.lineno = lineno
def getChildren(self):
children = []
@@ -1376,7 +1388,7 @@
nodelist = []
nodelist.append(self.expr)
nodelist.extend(flatten_nodes(self.subs))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
@@ -1386,10 +1398,10 @@
class TryExcept(Node):
def __init__(self, body, handlers, else_, lineno=None):
+ Node.__init__(self, lineno)
self.body = body
self.handlers = handlers
self.else_ = else_
- self.lineno = lineno
def getChildren(self):
children = []
@@ -1404,7 +1416,7 @@
nodelist.extend(flatten_nodes(self.handlers))
if self.else_ is not None:
nodelist.append(self.else_)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
@@ -1414,15 +1426,15 @@
class TryFinally(Node):
def __init__(self, body, final, lineno=None):
+ Node.__init__(self, lineno)
self.body = body
self.final = final
- self.lineno = lineno
def getChildren(self):
return self.body, self.final
def getChildNodes(self):
- return self.body, self.final
+ return [self.body, self.final]
def __repr__(self):
return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
@@ -1432,8 +1444,8 @@
class Tuple(Node):
def __init__(self, nodes, lineno=None):
+ Node.__init__(self, lineno)
self.nodes = nodes
- self.lineno = lineno
def getChildren(self):
return tuple(flatten(self.nodes))
@@ -1441,7 +1453,7 @@
def getChildNodes(self):
nodelist = []
nodelist.extend(flatten_nodes(self.nodes))
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "Tuple(%s)" % (repr(self.nodes),)
@@ -1451,14 +1463,14 @@
class UnaryAdd(Node):
def __init__(self, expr, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.expr,
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "UnaryAdd(%s)" % (repr(self.expr),)
@@ -1468,14 +1480,14 @@
class UnarySub(Node):
def __init__(self, expr, lineno=None):
+ Node.__init__(self, lineno)
self.expr = expr
- self.lineno = lineno
def getChildren(self):
return self.expr,
def getChildNodes(self):
- return self.expr,
+ return [self.expr,]
def __repr__(self):
return "UnarySub(%s)" % (repr(self.expr),)
@@ -1485,10 +1497,10 @@
class While(Node):
def __init__(self, test, body, else_, lineno=None):
+ Node.__init__(self, lineno)
self.test = test
self.body = body
self.else_ = else_
- self.lineno = lineno
def getChildren(self):
children = []
@@ -1503,7 +1515,7 @@
nodelist.append(self.body)
if self.else_ is not None:
nodelist.append(self.else_)
- return tuple(nodelist)
+ return nodelist
def __repr__(self):
return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
@@ -1513,14 +1525,14 @@
class Yield(Node):
def __init__(self, value, lineno=None):
+ Node.__init__(self, lineno)
self.value = value
- self.lineno = lineno
def getChildren(self):
return self.value,
def getChildNodes(self):
- return self.value,
+ return [self.value,]
def __repr__(self):
return "Yield(%s)" % (repr(self.value),)
Modified: pypy/dist/pypy/interpreter/astcompiler/ast.txt
==============================================================================
--- pypy/dist/pypy/interpreter/astcompiler/ast.txt (original)
+++ pypy/dist/pypy/interpreter/astcompiler/ast.txt Tue Aug 23 16:13:12 2005
@@ -47,7 +47,7 @@
Dict: items!
Not: expr
Compare: expr, ops!
-Name: name*
+Name: varname*
Global: names*
Backquote: expr
Getattr: expr, attrname*
Modified: pypy/dist/pypy/interpreter/astcompiler/astgen.py
==============================================================================
--- pypy/dist/pypy/interpreter/astcompiler/astgen.py (original)
+++ pypy/dist/pypy/interpreter/astcompiler/astgen.py Tue Aug 23 16:13:12 2005
@@ -113,10 +113,10 @@
print >> buf, " def __init__(self, %s, lineno=None):" % self.args
else:
print >> buf, " def __init__(self, lineno=None):"
+ print >> buf, " Node.__init__(self, lineno)"
if self.argnames:
for name in self.argnames:
print >> buf, " self.%s = %s" % (name, name)
- print >> buf, " self.lineno = lineno"
if self.init:
print >> buf, "".join([" " + line for line in self.init])
@@ -156,11 +156,11 @@
for c in self.argnames
if self.argprops[c] == P_NODE]
if len(clist) == 0:
- print >> buf, " return ()"
+ print >> buf, " return []"
elif len(clist) == 1:
- print >> buf, " return %s," % clist[0]
+ print >> buf, " return [%s,]" % clist[0]
else:
- print >> buf, " return %s" % COMMA.join(clist)
+ print >> buf, " return [%s]" % COMMA.join(clist)
else:
print >> buf, " nodelist = []"
template = " nodelist.%s(%sself.%s%s)"
@@ -174,7 +174,7 @@
name, ")")
elif self.argprops[name] == P_NODE:
print >> buf, template % ("append", "", name, "")
- print >> buf, " return tuple(nodelist)"
+ print >> buf, " return nodelist"
def _gen_repr(self, buf):
print >> buf, " def __repr__(self):"
@@ -285,6 +285,9 @@
class Node:
"""Abstract base class for ast nodes."""
+ def __init__(self, lineno = None):
+ self.lineno = lineno
+
def getChildren(self):
pass # implemented by subclasses
def __iter__(self):
@@ -293,9 +296,18 @@
def asList(self): # for backwards compatibility
return self.getChildren()
def getChildNodes(self):
- pass # implemented by subclasses
+ return [] # implemented by subclasses
def visit(self, visitor, *args):
return visitor.visitNode(self, *args)
+ def flatten(self):
+ res = []
+ nodes = self.getChildNodes()
+ if nodes:
+ for n in nodes:
+ res.extend( n.flatten() )
+ else:
+ res.append( self )
+ return res
class EmptyNode(Node):
def visit(self, visitor, *args):
@@ -305,13 +317,14 @@
# Expression is an artificial node class to support "eval"
nodes["expression"] = "Expression"
def __init__(self, node):
+ Node.__init__(self)
self.node = node
def getChildren(self):
- return self.node,
+ return [self.node,]
def getChildNodes(self):
- return self.node,
+ return [self.node,]
def __repr__(self):
return "Expression(%s)" % (repr(self.node))
More information about the Pypy-commit
mailing list