diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-06 18:50:48 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-06 18:50:48 (GMT) |
commit | fa974a9d06a216ca55bd81985fe75b17bdc3630a (patch) | |
tree | ddbf7c278462bef3dc45a4e5c896bbf20bb556c0 /Tools | |
parent | ed9586174de17e4841e156a3a59fa283f23da1e2 (diff) | |
download | cpython-fa974a9d06a216ca55bd81985fe75b17bdc3630a.zip cpython-fa974a9d06a216ca55bd81985fe75b17bdc3630a.tar.gz cpython-fa974a9d06a216ca55bd81985fe75b17bdc3630a.tar.bz2 |
change node Classdef to Class
add doc string to transformer module
add two helper functions:
parse(buf) -> AST
parseFile(path) -> AST
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/compiler/compiler/ast.py | 8 | ||||
-rw-r--r-- | Tools/compiler/compiler/transformer.py | 41 |
2 files changed, 25 insertions, 24 deletions
diff --git a/Tools/compiler/compiler/ast.py b/Tools/compiler/compiler/ast.py index dfed562..5686d8b 100644 --- a/Tools/compiler/compiler/ast.py +++ b/Tools/compiler/compiler/ast.py @@ -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' diff --git a/Tools/compiler/compiler/transformer.py b/Tools/compiler/compiler/transformer.py index 18ec815..0159c31 100644 --- a/Tools/compiler/compiler/transformer.py +++ b/Tools/compiler/compiler/transformer.py @@ -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: |