summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2000-03-06 18:50:48 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2000-03-06 18:50:48 (GMT)
commitfa974a9d06a216ca55bd81985fe75b17bdc3630a (patch)
treeddbf7c278462bef3dc45a4e5c896bbf20bb556c0 /Tools
parented9586174de17e4841e156a3a59fa283f23da1e2 (diff)
downloadcpython-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.py8
-rw-r--r--Tools/compiler/compiler/transformer.py41
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: