summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-08-18 00:04:31 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-08-18 00:04:31 (GMT)
commitec927348c2b38b9a4f79ff83f6d4d7f07f55458d (patch)
treed6a5ea911c651a108c9add65a9ea3f3d708d2a4f
parent9fa96bed6fcad0faae778cf160f3415de560d08a (diff)
downloadcpython-ec927348c2b38b9a4f79ff83f6d4d7f07f55458d.zip
cpython-ec927348c2b38b9a4f79ff83f6d4d7f07f55458d.tar.gz
cpython-ec927348c2b38b9a4f79ff83f6d4d7f07f55458d.tar.bz2
Add Yield() statement handler
Fix Module() handler to avoid including the doc string in the AST
-rw-r--r--Lib/compiler/transformer.py12
-rw-r--r--Tools/compiler/compiler/transformer.py12
2 files changed, 22 insertions, 2 deletions
diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py
index 10d0e51..ebb3481 100644
--- a/Lib/compiler/transformer.py
+++ b/Lib/compiler/transformer.py
@@ -153,8 +153,12 @@ class Transformer:
def file_input(self, nodelist):
doc = self.get_docstring(nodelist, symbol.file_input)
+ if doc is not None:
+ i = 1
+ else:
+ i = 0
stmts = []
- for node in nodelist:
+ for node in nodelist[i:]:
if node[0] != token.ENDMARKER and node[0] != token.NEWLINE:
self.com_append_stmt(stmts, node)
return Module(doc, Stmt(stmts))
@@ -340,6 +344,11 @@ class Transformer:
n.lineno = nodelist[0][2]
return n
+ def yield_stmt(self, nodelist):
+ n = Yield(self.com_node(nodelist[1]))
+ n.lineno = nodelist[0][2]
+ return n
+
def raise_stmt(self, nodelist):
# raise: [test [',' test [',' test]]]
if len(nodelist) > 5:
@@ -1245,6 +1254,7 @@ _legal_node_types = [
symbol.continue_stmt,
symbol.return_stmt,
symbol.raise_stmt,
+ symbol.yield_stmt,
symbol.import_stmt,
symbol.global_stmt,
symbol.exec_stmt,
diff --git a/Tools/compiler/compiler/transformer.py b/Tools/compiler/compiler/transformer.py
index 10d0e51..ebb3481 100644
--- a/Tools/compiler/compiler/transformer.py
+++ b/Tools/compiler/compiler/transformer.py
@@ -153,8 +153,12 @@ class Transformer:
def file_input(self, nodelist):
doc = self.get_docstring(nodelist, symbol.file_input)
+ if doc is not None:
+ i = 1
+ else:
+ i = 0
stmts = []
- for node in nodelist:
+ for node in nodelist[i:]:
if node[0] != token.ENDMARKER and node[0] != token.NEWLINE:
self.com_append_stmt(stmts, node)
return Module(doc, Stmt(stmts))
@@ -340,6 +344,11 @@ class Transformer:
n.lineno = nodelist[0][2]
return n
+ def yield_stmt(self, nodelist):
+ n = Yield(self.com_node(nodelist[1]))
+ n.lineno = nodelist[0][2]
+ return n
+
def raise_stmt(self, nodelist):
# raise: [test [',' test [',' test]]]
if len(nodelist) > 5:
@@ -1245,6 +1254,7 @@ _legal_node_types = [
symbol.continue_stmt,
symbol.return_stmt,
symbol.raise_stmt,
+ symbol.yield_stmt,
symbol.import_stmt,
symbol.global_stmt,
symbol.exec_stmt,