<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: abstract code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 29 Aug 2008 21:59:58 GMT</pubDate>
    <description>DZone Snippets: abstract code</description>
    <item>
      <title>Visit Python Abstract Syntax Tree</title>
      <link>http://snippets.dzone.com/posts/show/3360</link>
      <description>Simplest AST visitor. More on this blog post :&lt;br /&gt;&lt;a href="http://www.biais.org/blog/index.php/2007/01/10/9-visit-python-abstract-syntax-tree"&gt;http://www.biais.org/blog/index.php/2007/01/10/9-visit-python-abstract-syntax-tree&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import compiler&lt;br /&gt; &lt;br /&gt;class CodePrinter:&lt;br /&gt;    def __init__(self):&lt;br /&gt;        self.src = ''&lt;br /&gt; &lt;br /&gt;    def visitName(self,t):&lt;br /&gt;        self.src += t.name&lt;br /&gt; &lt;br /&gt;    def visitConst(self,t):&lt;br /&gt;        self.src += str(t.value)&lt;br /&gt; &lt;br /&gt;    def visitStmt(self, t):&lt;br /&gt;        for i in t:&lt;br /&gt;            a = pretty_print(i)&lt;br /&gt;            self.src += a + "\n"&lt;br /&gt; &lt;br /&gt;    def visitAssName(self, t):&lt;br /&gt;        self.src += t.name + " = "&lt;br /&gt; &lt;br /&gt;def pretty_print(node):&lt;br /&gt;    myvisitor = CodePrinter()&lt;br /&gt;    # compiler.walk return the visitor instance : 2nd arg&lt;br /&gt;    return compiler.walk(node, myvisitor).src&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 24 Jan 2007 13:03:54 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3360</guid>
      <author>maxme (Maxime Biais)</author>
    </item>
  </channel>
</rss>
