diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-08-18 00:04:31 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-08-18 00:04:31 (GMT) |
commit | ec927348c2b38b9a4f79ff83f6d4d7f07f55458d (patch) | |
tree | d6a5ea911c651a108c9add65a9ea3f3d708d2a4f | |
parent | 9fa96bed6fcad0faae778cf160f3415de560d08a (diff) | |
download | cpython-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.py | 12 | ||||
-rw-r--r-- | Tools/compiler/compiler/transformer.py | 12 |
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, |