mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00

svn+ssh://pythondev@svn.python.org/python/trunk ................ r66117 | benjamin.peterson | 2008-09-01 12:17:22 -0500 (Mon, 01 Sep 2008) | 25 lines Merged revisions 65887,65889,65967-65968,65981 via svnmerge from svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r65887 | benjamin.peterson | 2008-08-19 17:45:04 -0500 (Tue, 19 Aug 2008) | 1 line allow the raw_input fixer to handle calls after the raw_input (ie. raw_input().split()) ........ r65889 | benjamin.peterson | 2008-08-19 18:11:03 -0500 (Tue, 19 Aug 2008) | 1 line no need for 2.4 compatibility now ........ r65967 | benjamin.peterson | 2008-08-21 18:43:37 -0500 (Thu, 21 Aug 2008) | 1 line allow a Call to have no arguments ........ r65968 | benjamin.peterson | 2008-08-21 18:45:13 -0500 (Thu, 21 Aug 2008) | 1 line add a fixer for sys.exc_info etc by Jeff Balogh #2357 ........ r65981 | benjamin.peterson | 2008-08-22 15:41:30 -0500 (Fri, 22 Aug 2008) | 1 line add a fixer to add parenthese for list and gen comps #2367 ........ ................
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
"""Fixer that addes parentheses where they are required
|
|
|
|
This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``."""
|
|
|
|
# By Taek Joo Kim and Benjamin Peterson
|
|
|
|
# Local imports
|
|
from .. import fixer_base
|
|
from ..fixer_util import LParen, RParen
|
|
|
|
# XXX This doesn't support nested for loops like [x for x in 1, 2 for x in 1, 2]
|
|
class FixParen(fixer_base.BaseFix):
|
|
PATTERN = """
|
|
atom< ('[' | '(')
|
|
(listmaker< any
|
|
comp_for<
|
|
'for' NAME 'in'
|
|
target=testlist_safe< any (',' any)+ [',']
|
|
>
|
|
[any]
|
|
>
|
|
>
|
|
|
|
|
testlist_gexp< any
|
|
comp_for<
|
|
'for' NAME 'in'
|
|
target=testlist_safe< any (',' any)+ [',']
|
|
>
|
|
[any]
|
|
>
|
|
>)
|
|
(']' | ')') >
|
|
"""
|
|
|
|
def transform(self, node, results):
|
|
target = results["target"]
|
|
|
|
lparen = LParen()
|
|
lparen.set_prefix(target.get_prefix())
|
|
target.set_prefix("") # Make it hug the parentheses
|
|
target.insert_child(0, lparen)
|
|
target.append_child(RParen())
|