Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #52686

Re: NodeTransformer: how to remove nodes?

From Peter Otten <__peter__@web.de>
Subject Re: NodeTransformer: how to remove nodes?
Date 2013-08-19 13:21 +0200
Organization None
References <CAM5eX4D1KB8dVgsR=6ZPjcuhwehN4UR0YQtvNgJ+m-Acs1VoDg@mail.gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.25.1376911264.19984.python-list@python.org> (permalink)

Show all headers | View raw


Tobias Müller wrote:

> I'm facing an issue with NodeTransformer, a tool used for Python AST
> manipulations.
> 
> Last week I posted on stackoverflow.com, but there are no responses yet.
> Maybe someone reading the mailing list can have a look and leave me a
> response here or over there?
> 
> http://stackoverflow.com/questions/18275662/python-nodetransformer-how-to-
remove-nodes

As Chris says, you are overriding too much of the generic behaviour. Here is 
a working demo:

import ast

class MyTransformer(ast.NodeTransformer):
    def visit_For(self, node):
        """
        For nodes: replace with nothing
        """
        print("removing a For node")
        return None


source = """
l = [0, 1, 2, 3]

total = 0

for i in l:
    total += i

print(total)
"""

transformer = MyTransformer()
module = ast.parse(source)
transformer.visit(module)
codeobj = compile(module, '<string>', 'exec')
exec(codeobj)

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: NodeTransformer: how to remove nodes? Peter Otten <__peter__@web.de> - 2013-08-19 13:21 +0200

csiph-web