summaryrefslogtreecommitdiffstats
path: root/Lib/compiler/transformer.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/compiler/transformer.py')
-rw-r--r--Lib/compiler/transformer.py41
1 files changed, 21 insertions, 20 deletions
diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py
index 18ec815..0159c31 100644
--- a/Lib/compiler/transformer.py
+++ b/Lib/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: