Increase grammar coverage

This commit is contained in:
rocky 2017-11-22 11:26:50 -05:00
parent 2de8718de3
commit 288516d8c2
8 changed files with 77 additions and 5 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,71 @@
"""
01_augmented_assign.py modified from
augmentedAssign.py -- source test pattern for augmented assigns
This source is part of the decompyle test suite.
decompyle is a Python byte-code decompiler
See http://www.crazy-compilers.com/decompyle/ for
for further information
"""
raise RuntimeError("This program can't be run")
a = 1
b = 2
a += b; # print a # a = a+b = 3
a -= b; # print a # a = a-b = 1
a *= b; # print a # a = a*b = 2
a -= a; # print a # a = a-a = 0
a += 7*3; # print a # == 21
l= [1,2,3]
l[1] *= 3; # print l[1]; # 6
l[1][2][3] = 7
l[1][2][3] *= 3;
# Python 2.x
# augassign1 ::= expr expr inplace_op ROT_TWO STORE_SLICE+0
l[:] += [9]; # print l
# Python 2.x
# augassign1 ::= expr expr inplace_op ROT_THREE STORE_SLICE+2
l[:2] += [9]; # print l
# Python 2.x
# augassign1 ::= expr expr inplace_op ROT_THREE STORE_SLICE+1
l[1:] += [9]; # print l
# Python 2.x
# augassign1 ::= expr expr inplace_op ROT_FOUR STORE_SLICE+3
l[1:4] += [9]; # print l
l += [42,43]; # print l
a.value = 1
a.value += 1;
a.b.val = 1
a.b.val += 1;
l = []
for i in range(3):
lj = []
for j in range(3):
lk = []
for k in range(3):
lk.append(0)
lj.append(lk)
l.append(lj)
i = j = k = 1
def f():
global i
i += 1
return i
l[i][j][k] = 1
i = 1
l[f()][j][k] += 1
# print i, l

View File

@ -117,8 +117,6 @@ class Python2Parser(PythonParser):
classdefdeco1 ::= expr classdefdeco2 CALL_FUNCTION_1
classdefdeco2 ::= LOAD_CONST expr mkfunc CALL_FUNCTION_0 BUILD_CLASS
assert2 ::= assert_expr jmp_true LOAD_ASSERT expr CALL_FUNCTION_1 RAISE_VARARGS_1
assert_expr ::= expr
assert_expr ::= assert_expr_or
assert_expr ::= assert_expr_and
@ -215,10 +213,12 @@ class Python2Parser(PythonParser):
designator ::= expr expr STORE_SLICE+1
designator ::= expr expr STORE_SLICE+2
designator ::= expr expr expr STORE_SLICE+3
augassign1 ::= expr expr inplace_op ROT_TWO STORE_SLICE+0
augassign1 ::= expr expr inplace_op ROT_FOUR STORE_SLICE+3
augassign1 ::= expr expr inplace_op ROT_THREE STORE_SLICE+1
augassign1 ::= expr expr inplace_op ROT_THREE STORE_SLICE+2
augassign1 ::= expr expr inplace_op ROT_FOUR STORE_SLICE+3
augassign1 ::= expr expr inplace_op ROT_TWO STORE_SLICE+0
slice0 ::= expr SLICE+0
slice0 ::= expr DUP_TOP SLICE+0
slice1 ::= expr expr SLICE+1

View File

@ -91,7 +91,8 @@ class Python27Parser(Python2Parser):
assert ::= assert_expr jmp_true LOAD_ASSERT RAISE_VARARGS_1
# assert condition, expr
assert2 ::= assert_expr jmp_true LOAD_ASSERT expr RAISE_VARARGS_2
assert2 ::= assert_expr jmp_true LOAD_ASSERT expr CALL_FUNCTION_1 RAISE_VARARGS_1
withstmt ::= expr SETUP_WITH POP_TOP suite_stmts_opt
POP_BLOCK LOAD_CONST COME_FROM_WITH