[pypy-commit] pypy py3k: Remove print statement
amauryfa
noreply at buildbot.pypy.org
Wed Oct 12 22:23:15 CEST 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r47978:36b998dd9966
Date: 2011-10-12 01:52 +0200
http://bitbucket.org/pypy/pypy/changeset/36b998dd9966/
Log: Remove print statement
diff --git a/pypy/interpreter/astcompiler/ast.py b/pypy/interpreter/astcompiler/ast.py
--- a/pypy/interpreter/astcompiler/ast.py
+++ b/pypy/interpreter/astcompiler/ast.py
@@ -514,49 +514,6 @@
self.value.sync_app_attrs(space)
-class Print(stmt):
-
- _lineno_mask = 8
- _col_offset_mask = 16
-
- def __init__(self, dest, values, nl, lineno, col_offset):
- self.dest = dest
- self.values = values
- self.w_values = None
- self.nl = nl
- stmt.__init__(self, lineno, col_offset)
- self.initialization_state = 31
-
- def walkabout(self, visitor):
- visitor.visit_Print(self)
-
- def mutate_over(self, visitor):
- if self.dest:
- self.dest = self.dest.mutate_over(visitor)
- if self.values:
- visitor._mutate_sequence(self.values)
- return visitor.visit_Print(self)
-
- def sync_app_attrs(self, space):
- if (self.initialization_state & ~1) ^ 30:
- missing_field(space, self.initialization_state, [None, 'values', 'nl', 'lineno', 'col_offset'], 'Print')
- else:
- if not self.initialization_state & 1:
- self.dest = None
- if self.dest:
- self.dest.sync_app_attrs(space)
- w_list = self.w_values
- if w_list is not None:
- list_w = space.listview(w_list)
- if list_w:
- self.values = [space.interp_w(expr, w_obj) for w_obj in list_w]
- else:
- self.values = None
- if self.values is not None:
- for node in self.values:
- node.sync_app_attrs(space)
-
-
class For(stmt):
_lineno_mask = 16
@@ -1028,44 +985,6 @@
node.sync_app_attrs(space)
-class Exec(stmt):
-
- _lineno_mask = 8
- _col_offset_mask = 16
-
- def __init__(self, body, globals, locals, lineno, col_offset):
- self.body = body
- self.globals = globals
- self.locals = locals
- stmt.__init__(self, lineno, col_offset)
- self.initialization_state = 31
-
- def walkabout(self, visitor):
- visitor.visit_Exec(self)
-
- def mutate_over(self, visitor):
- self.body = self.body.mutate_over(visitor)
- if self.globals:
- self.globals = self.globals.mutate_over(visitor)
- if self.locals:
- self.locals = self.locals.mutate_over(visitor)
- return visitor.visit_Exec(self)
-
- def sync_app_attrs(self, space):
- if (self.initialization_state & ~6) ^ 25:
- missing_field(space, self.initialization_state, ['body', None, None, 'lineno', 'col_offset'], 'Exec')
- else:
- if not self.initialization_state & 2:
- self.globals = None
- if not self.initialization_state & 4:
- self.locals = None
- self.body.sync_app_attrs(space)
- if self.globals:
- self.globals.sync_app_attrs(space)
- if self.locals:
- self.locals.sync_app_attrs(space)
-
-
class Global(stmt):
_lineno_mask = 2
@@ -2599,8 +2518,6 @@
return self.default_visitor(node)
def visit_AugAssign(self, node):
return self.default_visitor(node)
- def visit_Print(self, node):
- return self.default_visitor(node)
def visit_For(self, node):
return self.default_visitor(node)
def visit_While(self, node):
@@ -2621,8 +2538,6 @@
return self.default_visitor(node)
def visit_ImportFrom(self, node):
return self.default_visitor(node)
- def visit_Exec(self, node):
- return self.default_visitor(node)
def visit_Global(self, node):
return self.default_visitor(node)
def visit_Expr(self, node):
@@ -2742,11 +2657,6 @@
node.target.walkabout(self)
node.value.walkabout(self)
- def visit_Print(self, node):
- if node.dest:
- node.dest.walkabout(self)
- self.visit_sequence(node.values)
-
def visit_For(self, node):
node.target.walkabout(self)
node.iter.walkabout(self)
@@ -2797,13 +2707,6 @@
def visit_ImportFrom(self, node):
self.visit_sequence(node.names)
- def visit_Exec(self, node):
- node.body.walkabout(self)
- if node.globals:
- node.globals.walkabout(self)
- if node.locals:
- node.locals.walkabout(self)
-
def visit_Global(self, node):
pass
@@ -3712,95 +3615,6 @@
__init__=interp2app(AugAssign_init),
)
-def Print_get_dest(space, w_self):
- if w_self.w_dict is not None:
- w_obj = w_self.getdictvalue(space, 'dest')
- if w_obj is not None:
- return w_obj
- if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- w_err = space.wrap("'%s' object has no attribute 'dest'" % typename)
- raise OperationError(space.w_AttributeError, w_err)
- return space.wrap(w_self.dest)
-
-def Print_set_dest(space, w_self, w_new_value):
- try:
- w_self.dest = space.interp_w(expr, w_new_value, True)
- except OperationError, e:
- if not e.match(space, space.w_TypeError):
- raise
- w_self.setdictvalue(space, 'dest', w_new_value)
- return
- w_self.deldictvalue(space, 'dest')
- w_self.initialization_state |= 1
-
-def Print_get_values(space, w_self):
- if not w_self.initialization_state & 2:
- typename = space.type(w_self).getname(space)
- w_err = space.wrap("'%s' object has no attribute 'values'" % typename)
- raise OperationError(space.w_AttributeError, w_err)
- if w_self.w_values is None:
- if w_self.values is None:
- w_list = space.newlist([])
- else:
- list_w = [space.wrap(node) for node in w_self.values]
- w_list = space.newlist(list_w)
- w_self.w_values = w_list
- return w_self.w_values
-
-def Print_set_values(space, w_self, w_new_value):
- w_self.w_values = w_new_value
- w_self.initialization_state |= 2
-
-def Print_get_nl(space, w_self):
- if w_self.w_dict is not None:
- w_obj = w_self.getdictvalue(space, 'nl')
- if w_obj is not None:
- return w_obj
- if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- w_err = space.wrap("'%s' object has no attribute 'nl'" % typename)
- raise OperationError(space.w_AttributeError, w_err)
- return space.wrap(w_self.nl)
-
-def Print_set_nl(space, w_self, w_new_value):
- try:
- w_self.nl = space.bool_w(w_new_value)
- except OperationError, e:
- if not e.match(space, space.w_TypeError):
- raise
- w_self.setdictvalue(space, 'nl', w_new_value)
- return
- w_self.deldictvalue(space, 'nl')
- w_self.initialization_state |= 4
-
-_Print_field_unroller = unrolling_iterable(['dest', 'values', 'nl'])
-def Print_init(space, w_self, __args__):
- w_self = space.descr_self_interp_w(Print, w_self)
- w_self.w_values = None
- args_w, kwargs_w = __args__.unpack()
- if args_w:
- if len(args_w) != 3:
- w_err = space.wrap("Print constructor takes either 0 or 3 positional arguments")
- raise OperationError(space.w_TypeError, w_err)
- i = 0
- for field in _Print_field_unroller:
- space.setattr(w_self, space.wrap(field), args_w[i])
- i += 1
- for field, w_value in kwargs_w.iteritems():
- space.setattr(w_self, space.wrap(field), w_value)
-
-Print.typedef = typedef.TypeDef("Print",
- stmt.typedef,
- __module__='_ast',
- _fields=_FieldsWrapper(['dest', 'values', 'nl']),
- dest=typedef.GetSetProperty(Print_get_dest, Print_set_dest, cls=Print),
- values=typedef.GetSetProperty(Print_get_values, Print_set_values, cls=Print),
- nl=typedef.GetSetProperty(Print_get_nl, Print_set_nl, cls=Print),
- __new__=interp2app(get_AST_new(Print)),
- __init__=interp2app(Print_init),
-)
-
def For_get_target(space, w_self):
if w_self.w_dict is not None:
w_obj = w_self.getdictvalue(space, 'target')
@@ -4613,98 +4427,6 @@
__init__=interp2app(ImportFrom_init),
)
-def Exec_get_body(space, w_self):
- if w_self.w_dict is not None:
- w_obj = w_self.getdictvalue(space, 'body')
- if w_obj is not None:
- return w_obj
- if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- w_err = space.wrap("'%s' object has no attribute 'body'" % typename)
- raise OperationError(space.w_AttributeError, w_err)
- return space.wrap(w_self.body)
-
-def Exec_set_body(space, w_self, w_new_value):
- try:
- w_self.body = space.interp_w(expr, w_new_value, False)
- except OperationError, e:
- if not e.match(space, space.w_TypeError):
- raise
- w_self.setdictvalue(space, 'body', w_new_value)
- return
- w_self.deldictvalue(space, 'body')
- w_self.initialization_state |= 1
-
-def Exec_get_globals(space, w_self):
- if w_self.w_dict is not None:
- w_obj = w_self.getdictvalue(space, 'globals')
- if w_obj is not None:
- return w_obj
- if not w_self.initialization_state & 2:
- typename = space.type(w_self).getname(space)
- w_err = space.wrap("'%s' object has no attribute 'globals'" % typename)
- raise OperationError(space.w_AttributeError, w_err)
- return space.wrap(w_self.globals)
-
-def Exec_set_globals(space, w_self, w_new_value):
- try:
- w_self.globals = space.interp_w(expr, w_new_value, True)
- except OperationError, e:
- if not e.match(space, space.w_TypeError):
- raise
- w_self.setdictvalue(space, 'globals', w_new_value)
- return
- w_self.deldictvalue(space, 'globals')
- w_self.initialization_state |= 2
-
-def Exec_get_locals(space, w_self):
- if w_self.w_dict is not None:
- w_obj = w_self.getdictvalue(space, 'locals')
- if w_obj is not None:
- return w_obj
- if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- w_err = space.wrap("'%s' object has no attribute 'locals'" % typename)
- raise OperationError(space.w_AttributeError, w_err)
- return space.wrap(w_self.locals)
-
-def Exec_set_locals(space, w_self, w_new_value):
- try:
- w_self.locals = space.interp_w(expr, w_new_value, True)
- except OperationError, e:
- if not e.match(space, space.w_TypeError):
- raise
- w_self.setdictvalue(space, 'locals', w_new_value)
- return
- w_self.deldictvalue(space, 'locals')
- w_self.initialization_state |= 4
-
-_Exec_field_unroller = unrolling_iterable(['body', 'globals', 'locals'])
-def Exec_init(space, w_self, __args__):
- w_self = space.descr_self_interp_w(Exec, w_self)
- args_w, kwargs_w = __args__.unpack()
- if args_w:
- if len(args_w) != 3:
- w_err = space.wrap("Exec constructor takes either 0 or 3 positional arguments")
- raise OperationError(space.w_TypeError, w_err)
- i = 0
- for field in _Exec_field_unroller:
- space.setattr(w_self, space.wrap(field), args_w[i])
- i += 1
- for field, w_value in kwargs_w.iteritems():
- space.setattr(w_self, space.wrap(field), w_value)
-
-Exec.typedef = typedef.TypeDef("Exec",
- stmt.typedef,
- __module__='_ast',
- _fields=_FieldsWrapper(['body', 'globals', 'locals']),
- body=typedef.GetSetProperty(Exec_get_body, Exec_set_body, cls=Exec),
- globals=typedef.GetSetProperty(Exec_get_globals, Exec_set_globals, cls=Exec),
- locals=typedef.GetSetProperty(Exec_get_locals, Exec_set_locals, cls=Exec),
- __new__=interp2app(get_AST_new(Exec)),
- __init__=interp2app(Exec_init),
-)
-
def Global_get_names(space, w_self):
if not w_self.initialization_state & 1:
typename = space.type(w_self).getname(space)
diff --git a/pypy/interpreter/astcompiler/astbuilder.py b/pypy/interpreter/astcompiler/astbuilder.py
--- a/pypy/interpreter/astcompiler/astbuilder.py
+++ b/pypy/interpreter/astcompiler/astbuilder.py
@@ -127,23 +127,6 @@
except misc.ForbiddenNameAssignment, e:
self.error_ast("cannot assign to %s" % (e.name,), e.node)
- def handle_print_stmt(self, print_node):
- dest = None
- expressions = None
- newline = True
- start = 1
- child_count = len(print_node.children)
- if child_count > 2 and print_node.children[1].type == tokens.RIGHTSHIFT:
- dest = self.handle_expr(print_node.children[2])
- start = 4
- if (child_count + 1 - start) // 2:
- expressions = [self.handle_expr(print_node.children[i])
- for i in range(start, child_count, 2)]
- if print_node.children[-1].type == tokens.COMMA:
- newline = False
- return ast.Print(dest, expressions, newline, print_node.lineno,
- print_node.column)
-
def handle_del_stmt(self, del_node):
targets = self.handle_exprlist(del_node.children[1], ast.Del)
return ast.Delete(targets, del_node.lineno, del_node.column)
@@ -621,8 +604,6 @@
stmt_type = stmt.type
if stmt_type == syms.expr_stmt:
return self.handle_expr_stmt(stmt)
- elif stmt_type == syms.print_stmt:
- return self.handle_print_stmt(stmt)
elif stmt_type == syms.del_stmt:
return self.handle_del_stmt(stmt)
elif stmt_type == syms.pass_stmt:
diff --git a/pypy/interpreter/astcompiler/tools/Python.asdl b/pypy/interpreter/astcompiler/tools/Python.asdl
--- a/pypy/interpreter/astcompiler/tools/Python.asdl
+++ b/pypy/interpreter/astcompiler/tools/Python.asdl
@@ -24,9 +24,6 @@
| Assign(expr* targets, expr value)
| AugAssign(expr target, operator op, expr value)
- -- not sure if bool is allowed, can always use int
- | Print(expr? dest, expr* values, bool nl)
-
-- use 'orelse' because else is a keyword in target languages
| For(expr target, expr iter, stmt* body, stmt* orelse)
| While(expr test, stmt* body, stmt* orelse)
diff --git a/pypy/interpreter/pyparser/data/Grammar3.2 b/pypy/interpreter/pyparser/data/Grammar3.2
--- a/pypy/interpreter/pyparser/data/Grammar3.2
+++ b/pypy/interpreter/pyparser/data/Grammar3.2
@@ -32,15 +32,13 @@
stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
-small_stmt: (expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt |
+small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt |
import_stmt | global_stmt | assert_stmt)
expr_stmt: testlist (augassign (yield_expr|testlist) |
('=' (yield_expr|testlist))*)
augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' |
'<<=' | '>>=' | '**=' | '//=')
# For normal assignments, additional restrictions enforced by the interpreter
-print_stmt: 'print' ( [ test (',' test)* [','] ] |
- '>>' test [ (',' test)+ [','] ] )
del_stmt: 'del' exprlist
pass_stmt: 'pass'
flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
diff --git a/pypy/interpreter/pyparser/pygram.py b/pypy/interpreter/pyparser/pygram.py
--- a/pypy/interpreter/pyparser/pygram.py
+++ b/pypy/interpreter/pyparser/pygram.py
@@ -19,9 +19,6 @@
python_grammar = _get_python_grammar()
-python_grammar_no_print = python_grammar.shared_copy()
-python_grammar_no_print.keyword_ids = python_grammar_no_print.keyword_ids.copy()
-del python_grammar_no_print.keyword_ids["print"]
class _Tokens(object):
pass
diff --git a/pypy/interpreter/pyparser/pyparse.py b/pypy/interpreter/pyparser/pyparse.py
--- a/pypy/interpreter/pyparser/pyparse.py
+++ b/pypy/interpreter/pyparser/pyparse.py
@@ -141,10 +141,7 @@
flags = compile_info.flags
- if flags & consts.CO_FUTURE_PRINT_FUNCTION:
- self.grammar = pygram.python_grammar_no_print
- else:
- self.grammar = pygram.python_grammar
+ self.grammar = pygram.python_grammar
# The tokenizer is very picky about how it wants its input.
source_lines = textsrc.splitlines(True)
More information about the pypy-commit
mailing list