change node Classdef to Class

add doc string to transformer module
add two helper functions:
    parse(buf) -> AST
    parseFile(path) -> AST
This commit is contained in:
Jeremy Hylton 2000-03-06 18:50:48 +00:00
parent ed9586174d
commit fa974a9d06
4 changed files with 50 additions and 48 deletions

View File

@ -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'

View File

@ -1,16 +1,20 @@
"""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:

View File

@ -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'

View File

@ -1,16 +1,20 @@
"""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: