[Python-checkins] CVS: /python/nondist/src/Compiler/compiler ast.py,1.7,1.8 transformer.py,1.7,1.8

Jeremy Hylton jhylton@cnri.reston.va.us
Mon, 6 Mar 2000 13:50:51 -0500


Update of /projects/cvsroot//python/nondist/src/Compiler/compiler
In directory goon.cnri.reston.va.us:/home/jhylton/python/nondist/src/Compiler/compiler
Modified Files:
	ast.py transformer.py 
Log Message:
change node Classdef to Class
add doc string to transformer module
add two helper functions:
 parse(buf) -> AST
 parseFile(path) -> AST
Index: ast.py
===================================================================
RCS file: /projects/cvsroot//python/nondist/src/Compiler/compiler/ast.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** ast.py	2000年02月17日 22:06:20	1.7
--- ast.py	2000年03月06日 18:50:48	1.8
***************
*** 115,120 ****
 return "Lambda(%s,%s,%s,%s)" % self._children[1:]
 
! class Classdef(Node):
! nodes['classdef'] = 'Classdef'
 
 def __init__(self, name, bases, doc, code):
--- 115,120 ----
 return "Lambda(%s,%s,%s,%s)" % self._children[1:]
 
! class Class(Node):
! nodes['class'] = 'Class'
 
 def __init__(self, name, bases, doc, code):
***************
*** 123,130 ****
 self.doc = doc
 self.code = code
! self._children = ('classdef', name, bases, doc, code)
 
 def __repr__(self):
! return "Classdef(%s,%s,%s,%s)" % self._children[1:]
 
 class Pass(EmptyNode):
--- 123,130 ----
 self.doc = doc
 self.code = code
! self._children = ('class', name, bases, doc, code)
 
 def __repr__(self):
! return "Class(%s,%s,%s,%s)" % self._children[1:]
 
 class Pass(EmptyNode):
Index: transformer.py
===================================================================
RCS file: /projects/cvsroot//python/nondist/src/Compiler/compiler/transformer.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** transformer.py	2000年02月16日 00:51:37	1.7
--- transformer.py	2000年03月06日 18:50:48	1.8
***************
*** 1,15 ****
 # 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
 # Jeremy Hylton (jeremy@cnri.reston.va.us)
 #
--- 1,19 ----
+ """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
 #
 # Written by Greg Stein (gstein@lyra.org)
 # and Bill Tutt (rassilon@lima.mudlib.org)
 # February 1997.
 #
! # Support for Node subclasses written and other revisions by
 # Jeremy Hylton (jeremy@cnri.reston.va.us)
 #
***************
*** 84,93 ****
 #
 
- """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
--- 88,91 ----
***************
*** 103,106 ****
--- 101,113 ----
 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 = []
***************
*** 263,267 ****
 code = self.com_node(nodelist[-1])
 
! n = Node('classdef', name, bases, doc, code)
 n.lineno = nodelist[1][2]
 return n
--- 270,274 ----
 code = self.com_node(nodelist[-1])
 
! n = Node('class', name, bases, doc, code)
 n.lineno = nodelist[1][2]
 return n
***************
*** 1192,1200 ****
 ]
 
- # Local Variables: 
- # mode: python 
- # indent-tabs-mode: nil 
- # py-indent-offset: 2 
- # py-smart-indentation: nil 
- # End: 
 
--- 1199,1201 ----

AltStyle によって変換されたページ (->オリジナル) /