text: import ast
  import sys
  
  def astppdump(node):
      def _format(node, indent):
          #print node, len(indent)
          if isinstance(node, ast.AST):
              namelen = " "*(len(node.__class__.__name__)) + " "
              fields = []
              for a,b in ast.iter_fields(node):
                  fieldlen = len(a)*" "
                  fields.append((a, _format(b, indent+namelen+fieldlen+" ")))
              fieldstr = (",\n"+indent+namelen).join('%s=%s' % (field[0],field[1].lstrip()) for field in fields)
              return indent+node.__class__.__name__ + "(%s)" % fieldstr
          elif isinstance(node, list):
              elems = (',\n').join(_format(x, indent+" ") for x in node)
              return indent+"[%s]" % elems.lstrip()
          elif isinstance(node, long): # L suffix depends on 32/64 python, and skulpt is ~30 because of number precision in js
              return indent+str(node)
          return indent+repr(node)
      if not isinstance(node, ast.AST):
          raise TypeError('expected AST, got %r' % node.__class__.__name__)
      return _format(node, "")
  
  
  if __name__ == "__main__":
      print astppdump(ast.parse(open(sys.argv[1]).read(), sys.argv[1]))
  