mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00
add matrix multiplication operator support to 2to3
This commit is contained in:
parent
0134a35bac
commit
4ab92c800a
6 changed files with 19 additions and 9 deletions
|
@ -56,7 +56,7 @@ small_stmt: (expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt |
|
||||||
expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) |
|
expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) |
|
||||||
('=' (yield_expr|testlist_star_expr))*)
|
('=' (yield_expr|testlist_star_expr))*)
|
||||||
testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [',']
|
testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [',']
|
||||||
augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' |
|
augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' |
|
||||||
'<<=' | '>>=' | '**=' | '//=')
|
'<<=' | '>>=' | '**=' | '//=')
|
||||||
# For normal assignments, additional restrictions enforced by the interpreter
|
# For normal assignments, additional restrictions enforced by the interpreter
|
||||||
print_stmt: 'print' ( [ test (',' test)* [','] ] |
|
print_stmt: 'print' ( [ test (',' test)* [','] ] |
|
||||||
|
@ -119,7 +119,7 @@ xor_expr: and_expr ('^' and_expr)*
|
||||||
and_expr: shift_expr ('&' shift_expr)*
|
and_expr: shift_expr ('&' shift_expr)*
|
||||||
shift_expr: arith_expr (('<<'|'>>') arith_expr)*
|
shift_expr: arith_expr (('<<'|'>>') arith_expr)*
|
||||||
arith_expr: term (('+'|'-') term)*
|
arith_expr: term (('+'|'-') term)*
|
||||||
term: factor (('*'|'/'|'%'|'//') factor)*
|
term: factor (('*'|'@'|'/'|'%'|'//') factor)*
|
||||||
factor: ('+'|'-'|'~') factor | power
|
factor: ('+'|'-'|'~') factor | power
|
||||||
power: atom trailer* ['**' factor]
|
power: atom trailer* ['**' factor]
|
||||||
atom: ('(' [yield_expr|testlist_gexp] ')' |
|
atom: ('(' [yield_expr|testlist_gexp] ')' |
|
||||||
|
|
|
@ -149,6 +149,7 @@ opmap_raw = """
|
||||||
{ LBRACE
|
{ LBRACE
|
||||||
} RBRACE
|
} RBRACE
|
||||||
@ AT
|
@ AT
|
||||||
|
@= ATEQUAL
|
||||||
== EQEQUAL
|
== EQEQUAL
|
||||||
!= NOTEQUAL
|
!= NOTEQUAL
|
||||||
<> NOTEQUAL
|
<> NOTEQUAL
|
||||||
|
|
|
@ -57,12 +57,13 @@ DOUBLESTAREQUAL = 47
|
||||||
DOUBLESLASH = 48
|
DOUBLESLASH = 48
|
||||||
DOUBLESLASHEQUAL = 49
|
DOUBLESLASHEQUAL = 49
|
||||||
AT = 50
|
AT = 50
|
||||||
OP = 51
|
ATEQUAL = 51
|
||||||
COMMENT = 52
|
OP = 52
|
||||||
NL = 53
|
COMMENT = 53
|
||||||
RARROW = 54
|
NL = 54
|
||||||
ERRORTOKEN = 55
|
RARROW = 55
|
||||||
N_TOKENS = 56
|
ERRORTOKEN = 56
|
||||||
|
N_TOKENS = 57
|
||||||
NT_OFFSET = 256
|
NT_OFFSET = 256
|
||||||
#--end constants--
|
#--end constants--
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ String = group(r"[uU]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*'",
|
||||||
# recognized as two instances of =).
|
# recognized as two instances of =).
|
||||||
Operator = group(r"\*\*=?", r">>=?", r"<<=?", r"<>", r"!=",
|
Operator = group(r"\*\*=?", r">>=?", r"<<=?", r"<>", r"!=",
|
||||||
r"//=?", r"->",
|
r"//=?", r"->",
|
||||||
r"[+\-*/%&|^=<>]=?",
|
r"[+\-*/%&@|^=<>]=?",
|
||||||
r"~")
|
r"~")
|
||||||
|
|
||||||
Bracket = '[][(){}]'
|
Bracket = '[][(){}]'
|
||||||
|
|
|
@ -48,6 +48,12 @@ class GrammarTest(support.TestCase):
|
||||||
raise AssertionError("Syntax shouldn't have been valid")
|
raise AssertionError("Syntax shouldn't have been valid")
|
||||||
|
|
||||||
|
|
||||||
|
class TestMatrixMultiplication(GrammarTest):
|
||||||
|
def test_matrix_multiplication_operator(self):
|
||||||
|
self.validate("a @ b")
|
||||||
|
self.validate("a @= b")
|
||||||
|
|
||||||
|
|
||||||
class TestRaiseChanges(GrammarTest):
|
class TestRaiseChanges(GrammarTest):
|
||||||
def test_2x_style_1(self):
|
def test_2x_style_1(self):
|
||||||
self.validate("raise")
|
self.validate("raise")
|
||||||
|
|
|
@ -168,6 +168,8 @@ Tests
|
||||||
Tools/Demos
|
Tools/Demos
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
- Add support for the PEP 465 matrix multiplication operator to 2to3.
|
||||||
|
|
||||||
- Issue #16047: Fix module exception list and __file__ handling in freeze.
|
- Issue #16047: Fix module exception list and __file__ handling in freeze.
|
||||||
Patch by Meador Inge.
|
Patch by Meador Inge.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue