Kaydet (Commit) fa974a9d authored tarafından Jeremy Hylton's avatar Jeremy Hylton

change node Classdef to Class

add doc string to transformer module
add two helper functions:
    parse(buf) -> AST
    parseFile(path) -> AST
üst ed958617
......@@ -114,18 +114,18 @@ class Lambda(Node):
def __repr__(self):
return "Lambda(%s,%s,%s,%s)" % self._children[1:]
class Classdef(Node):
nodes['classdef'] = 'Classdef'
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
self._children = ('classdef', name, bases, doc, code)
self._children = ('class', name, bases, doc, code)
def __repr__(self):
return "Classdef(%s,%s,%s,%s)" % self._children[1:]
return "Class(%s,%s,%s,%s)" % self._children[1:]
class Pass(EmptyNode):
nodes['pass'] = 'Pass'
......
"""Parse tree transformation module.
Transforms Python source code into an abstract syntax tree (AST)
defined in the ast module.
The simplest ways to invoke this module are via parse and parseFile.
parse(buf) -> AST
parseFile(path) -> AST
"""
# Copyright 1997-1998 Greg Stein and Bill Tutt
#
# transformer.py -- transforms Python parse trees
#
# Takes an input parse tree and transforms it into a higher-level parse
# tree that is a bit more amenable to code generation. Essentially, it
# simply introduces some additional semantics.
#
# Written by Greg Stein (gstein@lyra.org)
# and Bill Tutt (rassilon@lima.mudlib.org)
# February 1997.
#
# Support for Node subclasses written by
# Support for Node subclasses written and other revisions by
# Jeremy Hylton (jeremy@cnri.reston.va.us)
#
# The output tree has the following nodes:
......@@ -83,12 +87,6 @@
# invert: node
#
"""Parse tree transformation module.
Exposes the Transformer class with a number of methods for returning a
"cleansed AST" instead of the parse tree that the parser exposes.
"""
import ast
import parser
import symbol
......@@ -102,6 +100,15 @@ error = 'walker.error'
from consts import CO_VARARGS, CO_VARKEYWORDS
from consts import OP_ASSIGN, OP_DELETE, OP_APPLY
def parseFile(path):
f = open(path)
src = f.read()
f.close()
return parse(src)
def parse(buf):
return Transformer().parsesuite(buf)
def asList(nodes):
l = []
for item in nodes:
......@@ -262,7 +269,7 @@ class Transformer:
# code for class
code = self.com_node(nodelist[-1])
n = Node('classdef', name, bases, doc, code)
n = Node('class', name, bases, doc, code)
n.lineno = nodelist[1][2]
return n
......@@ -1191,10 +1198,4 @@ _assign_types = [
symbol.factor,
]
# Local Variables:
# mode: python
# indent-tabs-mode: nil
# py-indent-offset: 2
# py-smart-indentation: nil
# End:
......@@ -114,18 +114,18 @@ class Lambda(Node):
def __repr__(self):
return "Lambda(%s,%s,%s,%s)" % self._children[1:]
class Classdef(Node):
nodes['classdef'] = 'Classdef'
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
self._children = ('classdef', name, bases, doc, code)
self._children = ('class', name, bases, doc, code)
def __repr__(self):
return "Classdef(%s,%s,%s,%s)" % self._children[1:]
return "Class(%s,%s,%s,%s)" % self._children[1:]
class Pass(EmptyNode):
nodes['pass'] = 'Pass'
......
"""Parse tree transformation module.
Transforms Python source code into an abstract syntax tree (AST)
defined in the ast module.
The simplest ways to invoke this module are via parse and parseFile.
parse(buf) -> AST
parseFile(path) -> AST
"""
# Copyright 1997-1998 Greg Stein and Bill Tutt
#
# transformer.py -- transforms Python parse trees
#
# Takes an input parse tree and transforms it into a higher-level parse
# tree that is a bit more amenable to code generation. Essentially, it
# simply introduces some additional semantics.
#
# Written by Greg Stein (gstein@lyra.org)
# and Bill Tutt (rassilon@lima.mudlib.org)
# February 1997.
#
# Support for Node subclasses written by
# Support for Node subclasses written and other revisions by
# Jeremy Hylton (jeremy@cnri.reston.va.us)
#
# The output tree has the following nodes:
......@@ -83,12 +87,6 @@
# invert: node
#
"""Parse tree transformation module.
Exposes the Transformer class with a number of methods for returning a
"cleansed AST" instead of the parse tree that the parser exposes.
"""
import ast
import parser
import symbol
......@@ -102,6 +100,15 @@ error = 'walker.error'
from consts import CO_VARARGS, CO_VARKEYWORDS
from consts import OP_ASSIGN, OP_DELETE, OP_APPLY
def parseFile(path):
f = open(path)
src = f.read()
f.close()
return parse(src)
def parse(buf):
return Transformer().parsesuite(buf)
def asList(nodes):
l = []
for item in nodes:
......@@ -262,7 +269,7 @@ class Transformer:
# code for class
code = self.com_node(nodelist[-1])
n = Node('classdef', name, bases, doc, code)
n = Node('class', name, bases, doc, code)
n.lineno = nodelist[1][2]
return n
......@@ -1191,10 +1198,4 @@ _assign_types = [
symbol.factor,
]
# Local Variables:
# mode: python
# indent-tabs-mode: nil
# py-indent-offset: 2
# py-smart-indentation: nil
# End:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment