Skip to content

Commit 74ad773

Browse files
Merge pull request #980 from Thirumalai-Shaktivel/tuple
2 parents 909415c + c0699a5 commit 74ad773

17 files changed

+97
-86
lines changed

src/lpython/parser/parser.yy

Lines changed: 65 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ void yyerror(YYLTYPE *yyloc, LFortran::Parser &p, const std::string &msg)
231231
%type <key_val> dict
232232
%type <vec_key_val> dict_list
233233
%type <ast> slice_item
234+
%type <ast> slice_items
234235
%type <vec_ast> slice_item_list
235236
%type <ast> with_statement
236237
%type <vec_withitem> with_as_items
@@ -281,8 +282,6 @@ void yyerror(YYLTYPE *yyloc, LFortran::Parser &p, const std::string &msg)
281282
%left "%" "//" "/" "@" "*"
282283
%precedence UNARY
283284
%right "**"
284-
%precedence AWAIT
285-
%precedence YIELD
286285
%precedence "."
287286

288287
%start units
@@ -382,7 +381,11 @@ multi_line_statement
382381
;
383382

384383
expression_statment
385-
: expr { $$ = EXPR_01($1, @$); }
384+
: tuple_list { $$ = EXPR_01($1, @$); }
385+
| KW_AWAIT tuple_list { $$ = EXPR_01(AWAIT($2, @$), @$); }
386+
| KW_YIELD { $$ = EXPR_01(YIELD_01(@$), @$); }
387+
| KW_YIELD tuple_list { $$ = EXPR_01(YIELD_02($2, @$), @$); }
388+
| KW_YIELD_FROM tuple_list { $$ = EXPR_01(YIELD_03($2, @$), @$); }
386389
;
387390

388391
pass_statement
@@ -409,20 +412,12 @@ assert_statement
409412
;
410413

411414
target_list
412-
: target_list expr "=" { $$ = $1; LIST_ADD($$, $2); }
413-
| expr "=" { LIST_NEW($$); LIST_ADD($$, $1); }
414-
| target_list expr_list "," expr "=" {
415-
$$ = $1; LIST_ADD($$, TUPLE_01(TUPLE_($2, $4), @$)); }
416-
| expr_list "," expr "=" {
417-
LIST_NEW($$); LIST_ADD($$, TUPLE_01(TUPLE_($1, $3), @$)); }
418-
| target_list expr_list "," "=" { $$ = $1; LIST_ADD($$, TUPLE_03($2, @$)); }
419-
| expr_list "," "=" { LIST_NEW($$); LIST_ADD($$, TUPLE_03($1, @$)); }
415+
: target_list tuple_list "=" { $$ = $1; LIST_ADD($$, $2); }
416+
| tuple_list "=" { LIST_NEW($$); LIST_ADD($$, $1); }
420417
;
421418

422419
assignment_statement
423-
: target_list expr { $$ = ASSIGNMENT($1, $2, @$); }
424-
| target_list expr_list "," expr {
425-
$$ = ASSIGNMENT($1, TUPLE_01(TUPLE_($2, $4), @$), @$); }
420+
: target_list tuple_list { $$ = ASSIGNMENT($1, $2, @$); }
426421
| target_list expr type_comment { $$ = ASSIGNMENT2($1, $2, $3, @$); }
427422
;
428423

@@ -457,10 +452,7 @@ delete_statement
457452

458453
return_statement
459454
: KW_RETURN { $$ = RETURN_01(@$); }
460-
| KW_RETURN expr { $$ = RETURN_02($2, @$); }
461-
| KW_RETURN expr_list "," expr {
462-
$$ = RETURN_02(TUPLE_01(TUPLE_($2, $4), @$), @$); }
463-
| KW_RETURN expr_list "," { $$ = RETURN_02(TUPLE_03($2, @$), @$); }
455+
| KW_RETURN tuple_list { $$ = RETURN_02($2, @$); }
464456
;
465457

466458
module
@@ -535,18 +527,23 @@ if_statement
535527
for_target_list
536528
: expr %prec FOR { $$ = $1; }
537529
| expr_list "," expr %prec FOR { $$ = TUPLE_01(TUPLE_($1, $3), @$); }
530+
| expr_list "," %prec FOR { $$ = TUPLE_03($1, @$); }
531+
;
532+
533+
tuple_list
534+
: expr { $$ = $1; }
535+
| expr_list "," expr { $$ = TUPLE_01(TUPLE_($1, $3), @$); }
536+
| expr_list "," { $$ = TUPLE_03($1, @$); }
538537
;
539538

540539
for_statement
541-
: KW_FOR for_target_list KW_IN expr ":" body_stmts {
540+
: KW_FOR for_target_list KW_IN tuple_list ":" body_stmts {
542541
$$ = FOR_01($2, $4, $6, @$); }
543-
| KW_FOR for_target_list KW_IN expr "," ":" body_stmts {
544-
$$ = FOR_01($2, TUPLE_03(A2LIST(p.m_a, $4), @$), $7, @$); }
545-
| KW_FOR for_target_list KW_IN expr ":" body_stmts KW_ELSE ":"
542+
| KW_FOR for_target_list KW_IN tuple_list ":" body_stmts KW_ELSE ":"
546543
body_stmts { $$ = FOR_02($2, $4, $6, $9, @$); }
547-
| KW_FOR for_target_list KW_IN expr ":" type_comment TK_NEWLINE
544+
| KW_FOR for_target_list KW_IN tuple_list ":" type_comment TK_NEWLINE
548545
statements { $$ = FOR_03($2, $4, $6, $8, @$); }
549-
| KW_FOR for_target_list KW_IN expr ":" type_comment TK_NEWLINE
546+
| KW_FOR for_target_list KW_IN tuple_list ":" type_comment TK_NEWLINE
550547
statements KW_ELSE ":" body_stmts {
551548
$$ = FOR_04($2, $4, $8, $11, $6, @$); }
552549
;
@@ -766,26 +763,6 @@ while_statement
766763
$$ = WHILE_02($2, $4, $7, @$); }
767764
;
768765

769-
slice_item_list
770-
: slice_item_list "," slice_item { $$ = $1; LIST_ADD($$, $3); }
771-
| slice_item { LIST_NEW($$); LIST_ADD($$, $1); }
772-
773-
slice_item
774-
: ":" { $$ = SLICE_01(nullptr, nullptr, nullptr, @$); }
775-
| expr ":" { $$ = SLICE_01( $1, nullptr, nullptr, @$); }
776-
| ":" expr { $$ = SLICE_01(nullptr, $2, nullptr, @$); }
777-
| expr ":" expr { $$ = SLICE_01( $1, $3, nullptr, @$); }
778-
| ":" ":" { $$ = SLICE_01(nullptr, nullptr, nullptr, @$); }
779-
| ":" ":" expr { $$ = SLICE_01(nullptr, nullptr, $3, @$); }
780-
| expr ":" ":" { $$ = SLICE_01( $1, nullptr, nullptr, @$); }
781-
| ":" expr ":" { $$ = SLICE_01(nullptr, $2, nullptr, @$); }
782-
| expr ":" ":" expr { $$ = SLICE_01( $1, nullptr, $4, @$); }
783-
| ":" expr ":" expr { $$ = SLICE_01(nullptr, $2, $4, @$); }
784-
| expr ":" expr ":" { $$ = SLICE_01( $1, $3, nullptr, @$); }
785-
| expr ":" expr ":" expr { $$ = SLICE_01( $1, $3, $5, @$); }
786-
| expr { $$ = $1; }
787-
;
788-
789766
expr_list_opt
790767
: expr_list { $$ = $1; }
791768
| %empty { LIST_NEW($$); }
@@ -806,21 +783,16 @@ dict_list
806783
| dict { LIST_NEW($$); LIST_ADD($$, $1); }
807784
;
808785

809-
tuple_list
810-
: slice_item_list comma_opt { $$ = TUPLE($1, @$); }
811-
;
812-
813786
id_list
814-
: id_list "," id { $$ = $1; LIST_ADD($$, $3); }
815-
| id { LIST_NEW($$); LIST_ADD($$, $1); }
787+
: id_list "," id_item { $$ = $1; LIST_ADD($$, $3); }
788+
| id_item { LIST_NEW($$); LIST_ADD($$, $1); }
816789
;
817790

818791
id_item
819-
: id_list { $$ = ID_TUPLE_01($1, @$); }
820-
| id_list "," { $$ = ID_TUPLE_03($1, @$); }
792+
: id { $$ = $1; }
821793
| "(" id ")" { $$ = $2; }
822794
| "(" id_list "," ")" { $$ = ID_TUPLE_03($2, @$); }
823-
| "(" id_list "," id ")" { $$ = ID_TUPLE_01(TUPLE_($2, $4), @$); }
795+
| "(" id_list "," id_item ")" { $$ = ID_TUPLE_01(TUPLE_($2, $4), @$); }
824796
;
825797

826798
keyword_item
@@ -840,9 +812,14 @@ primary
840812
;
841813

842814
comp_for
843-
: KW_FOR id_item KW_IN expr { $$ = COMP_FOR_01($2, $4, @$); }
844-
| KW_FOR id_item KW_IN expr KW_IF expr {
845-
$$ = COMP_FOR_02($2, $4, $6, @$); }
815+
: KW_FOR id_list KW_IN expr {
816+
$$ = COMP_FOR_01(ID_TUPLE_01($2, @$), $4, @$); }
817+
| KW_FOR id_list "," KW_IN expr {
818+
$$ = COMP_FOR_01(ID_TUPLE_03($2, @$), $5, @$); }
819+
| KW_FOR id_list KW_IN expr KW_IF expr {
820+
$$ = COMP_FOR_02(ID_TUPLE_01($2, @$), $4, $6, @$); }
821+
| KW_FOR id_list "," KW_IN expr KW_IF expr {
822+
$$ = COMP_FOR_02(ID_TUPLE_03($2, @$), $5, $7, @$); }
846823
;
847824

848825
comp_for_items
@@ -878,17 +855,42 @@ function_call
878855
| "(" expr ")" "(" call_arguement_list ")" { $$ = CALL_01($2, $5, @$); }
879856
;
880857

858+
slice_item_list
859+
: slice_item_list "," slice_items { $$ = $1; LIST_ADD($$, $3); }
860+
| slice_items { LIST_NEW($$); LIST_ADD($$, $1); }
861+
;
862+
863+
slice_items
864+
: ":" { $$ = SLICE_01(nullptr, nullptr, nullptr, @$); }
865+
| expr ":" { $$ = SLICE_01( $1, nullptr, nullptr, @$); }
866+
| ":" expr { $$ = SLICE_01(nullptr, $2, nullptr, @$); }
867+
| expr ":" expr { $$ = SLICE_01( $1, $3, nullptr, @$); }
868+
| ":" ":" { $$ = SLICE_01(nullptr, nullptr, nullptr, @$); }
869+
| ":" ":" expr { $$ = SLICE_01(nullptr, nullptr, $3, @$); }
870+
| expr ":" ":" { $$ = SLICE_01( $1, nullptr, nullptr, @$); }
871+
| ":" expr ":" { $$ = SLICE_01(nullptr, $2, nullptr, @$); }
872+
| expr ":" ":" expr { $$ = SLICE_01( $1, nullptr, $4, @$); }
873+
| ":" expr ":" expr { $$ = SLICE_01(nullptr, $2, $4, @$); }
874+
| expr ":" expr ":" { $$ = SLICE_01( $1, $3, nullptr, @$); }
875+
| expr ":" expr ":" expr { $$ = SLICE_01( $1, $3, $5, @$); }
876+
| expr { $$ = $1; }
877+
;
878+
879+
slice_item
880+
: slice_item_list comma_opt { $$ = TUPLE($1, @$); }
881+
;
882+
881883
subscript
882-
: primary "[" tuple_list "]" { $$ = SUBSCRIPT_01($1, $3, @$); }
883-
| function_call "[" tuple_list "]" { $$ = SUBSCRIPT_01($1, $3, @$); }
884-
| "[" expr_list_opt "]" "[" tuple_list "]" {
884+
: primary "[" slice_item "]" { $$ = SUBSCRIPT_01($1, $3, @$); }
885+
| function_call "[" slice_item "]" { $$ = SUBSCRIPT_01($1, $3, @$); }
886+
| "[" expr_list_opt "]" "[" slice_item "]" {
885887
$$ = SUBSCRIPT_01(LIST($2, @$), $5, @$); }
886-
| "{" expr_list "}" "[" tuple_list "]" {
888+
| "{" expr_list "}" "[" slice_item "]" {
887889
$$ = SUBSCRIPT_01(SET($2, @$), $5, @$); }
888-
| "(" expr ")" "[" tuple_list "]" { $$ = SUBSCRIPT_01($2, $5, @$); }
889-
| "{" dict_list comma_opt "}" "[" tuple_list "]" {
890+
| "(" expr ")" "[" slice_item "]" { $$ = SUBSCRIPT_01($2, $5, @$); }
891+
| "{" dict_list comma_opt "}" "[" slice_item "]" {
890892
$$ = SUBSCRIPT_01(DICT_02($2, @$), $6, @$); }
891-
| subscript "[" tuple_list "]" { $$ = SUBSCRIPT_01($1, $3, @$); }
893+
| subscript "[" slice_item "]" { $$ = SUBSCRIPT_01($1, $3, @$); }
892894
;
893895

894896
string
@@ -972,10 +974,6 @@ expr
972974

973975
| "{" "}" { $$ = DICT_01(@$); }
974976
| "{" dict_list comma_opt "}" { $$ = DICT_02($2, @$); }
975-
| KW_AWAIT expr %prec AWAIT { $$ = AWAIT($2, @$); }
976-
| KW_YIELD %prec YIELD { $$ = YIELD_01(@$); }
977-
| KW_YIELD expr %prec YIELD { $$ = YIELD_02($2, @$); }
978-
| KW_YIELD_FROM expr %prec YIELD { $$ = YIELD_03($2, @$); }
979977
| id ":=" expr { $$ = NAMEDEXPR($1, $3, @$); }
980978
| "*" expr { $$ = STARRED_ARG($2, @$); }
981979

src/lpython/parser/semantics.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ static inline ast_t* ID_TUPLE_02(Allocator &al, Location &l, Vec<ast_t*> elts) {
820820
#define ID_TUPLE_01(elts, l) ID_TUPLE_02(p.m_a, l, elts)
821821
#define ID_TUPLE_03(elts, l) make_Tuple_t(p.m_a, l, \
822822
EXPRS(SET_EXPR_CTX_02(SET_CTX_02(elts, Store), Store)), elts.size(), \
823-
expr_contextType::Store);
823+
expr_contextType::Store)
824824

825825
#define LIST_COMP_1(expr, generators, l) make_ListComp_t(p.m_a, l, \
826826
EXPR(expr), generators.p, generators.n)

tests/parser/comprehension1.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,7 @@
3838
(string[i] for i in range(len(string)-1, -1, -1))
3939

4040
k = (j + k for j, k in range(10) if j > 0)
41+
42+
(left + size + right for size, (left, right) in zip(array.shape, pad_width))
43+
44+
viter = ((i, j) for ((i, _), (j, _)) in zip(newargs[1:], args[1:]))

tests/parser/for2.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,8 @@ async def test():
5050
for a in (b, c): a**2; pass;
5151

5252
async for a in range(5): print(a)
53+
54+
for like_function in np.zeros_like, np.ones_like, np.empty_like:
55+
pass
56+
for a, in t:
57+
pass

tests/parser/statements1.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
(x, y, z) = t
2121
x, = t
2222
(x,) = t
23+
obj = obj,
2324

2425
x += 1
2526

tests/parser/tuple1.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ def test():
2424

2525
_promotion_table = { (int8, int8): int8 }
2626

27-
# TODO
28-
# 1, 2,
29-
# 1, 2
27+
x, y
28+
x, y,
29+
assert_(np.isnan(div)), 'dt: %s, rem: %s' % (dt, rem)

tests/parser/yield.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def func():
1515
for _ in x:
1616
yield
1717

18+
yield x, y
19+
yield x, y,
20+
1821
def iterable1():
1922
yield 1
2023
yield 2

tests/reference/ast_new-comprehension1-69cf2af.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
"basename": "ast_new-comprehension1-69cf2af",
33
"cmd": "lpython --show-ast --new-parser --no-color {infile} -o {outfile}",
44
"infile": "tests/parser/comprehension1.py",
5-
"infile_hash": "db1a35055ce4df698bffbd406fc34ab9fb183a91366f6289575b71d8",
5+
"infile_hash": "86299dc3e7927f4d06bb55bce36c88a6833bb6e1801a3f1c758c6266",
66
"outfile": null,
77
"outfile_hash": null,
88
"stdout": "ast_new-comprehension1-69cf2af.stdout",
9-
"stdout_hash": "965115c1326ba5d293a5e01ecd8b5d83bbd4392a7ba1eea0f08ef82f",
9+
"stdout_hash": "2215f7cfded5c53e72d9f7768eb71be7d0514402ad2ec993ed1b577e",
1010
"stderr": null,
1111
"stderr_hash": null,
1212
"returncode": 0
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
(Module [(Assign [(Name fruits Store)] (ListComp (Name f Load) [((Name f Store) (Name fruit_list Load) [(Call (Attribute (Name f Load) startswith Load) [(ConstantStr "a" ())] [])] 0)]) ()) (Assign [(Name fruit_list Store)] (ListComp (Name fruit Load) [((Name fruit Store) (Name fruits Load) [] 0)]) ()) (Assign [(Name sum_cord Store)] (ListComp (BinOp (Name x Load) Add (Name y Load)) [((Tuple [(Name x Store) (Name y Store)] Store) (Name points Load) [(BoolOp And [(Compare (Name x Load) Gt [(ConstantInt 0 ())]) (Compare (Name y Load) Gt [(ConstantInt 0 ())])])] 0)]) ()) (Assign [(Name transform_1 Store)] (ListComp (BinOp (BinOp (ConstantInt 2 ()) Mult (Name x Load)) Add (ConstantInt 6 ())) [((Name x Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [] 0)]) ()) (Assign [(Name distance_orig Store)] (ListComp (BinOp (BinOp (BinOp (Name x Load) Pow (ConstantInt 2 ())) Add (BinOp (Name y Load) Pow (ConstantInt 2 ()))) Add (BinOp (Name z Load) Pow (ConstantInt 2 ()))) [((Tuple [(Name x Store) (Name y Store) (Name z Store)] Store) (Name points Load) [] 0)]) ()) (Assign [(Name odd_elements Store)] (ListComp (Name i Load) [((Name i Store) (Name main_list Load) [(BinOp (Name i Load) BitAnd (ConstantInt 1 ()))] 0)]) ()) (Assign [(Name first_ten_elements Store)] (ListComp (Name i Load) [((Name i Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [] 0)]) ()) (Assign [(Name another_ten_elements Store)] (ListComp (Name i Load) [((Name i Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [] 0)]) ()) (Assign [(Name comp Store)] (ListComp (BinOp (Name i Load) Pow (ConstantInt 2 ())) [((Name i Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [(BoolOp And [(Compare (Name i Load) NotIn [(List [(ConstantInt 3 ()) (ConstantInt 5 ()) (ConstantInt 7 ())] Load)]) (Compare (Name i Load) In [(Name list3 Load)])])] 0)]) ()) (Assign [(Name prm_tup Store)] (Call (Name tuple Load) [(GeneratorExp (Call (Name next Load) [(Name parameters Load)] []) [((Name _ Store) (Attribute (Name i Load) __parameters__ Load) [] 0)])] []) ()) (Assign [(Name args Store)] (Call (Attribute (ConstantStr ", " ()) join Load) [(GeneratorExp (Call (Name _to_str Load) [(Name i Load)] []) [((Name i Store) (Attribute (Name self Load) __args__ Load) [] 0)])] []) ()) (Assign [(Name rest Store)] (Call (Name tuple Load) [(GeneratorExp (Name i Load) [((Name i Store) (Call (Name range Load) [(Attribute (Name a Load) ndim Load)] []) [(Compare (Name i Load) NotIn [(Name axis Load)])] 0)])] []) ()) (Assign [(Name newSet Store)] (SetComp (BinOp (Name element Load) Mult (ConstantInt 3 ())) [((Name element Store) (Name myList Load) [] 0)]) ()) (Assign [(Name newSet Store)] (SetComp (BinOp (Name element Load) Mult (ConstantInt 3 ())) [((Name element Store) (Name myList Load) [(Compare (BinOp (Name element Load) Mod (ConstantInt 2 ())) Eq [(ConstantInt 0 ())])] 0)]) ()) (Expr (DictComp (Name x Load) (BinOp (Name x Load) Pow (ConstantInt 3 ())) [((Name x Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [(Compare (BinOp (BinOp (Name x Load) Pow (ConstantInt 3 ())) Mod (ConstantInt 4 ())) Eq [(ConstantInt 0 ())])] 0)])) (Assign [(Name square_dict Store)] (DictComp (Name num Load) (BinOp (Name num Load) Mult (Name num Load)) [((Name num Store) (Call (Name range Load) [(ConstantInt 1 ()) (ConstantInt 11 ())] []) [] 0)]) ()) (Expr (GeneratorExp (Subscript (Name string Load) (Name i Load) Load) [((Name i Store) (Call (Name range Load) [(BinOp (Call (Name len Load) [(Name string Load)] []) Sub (ConstantInt 1 ())) (UnaryOp USub (ConstantInt 1 ())) (UnaryOp USub (ConstantInt 1 ()))] []) [] 0)])) (Assign [(Name k Store)] (GeneratorExp (BinOp (Name j Load) Add (Name k Load)) [((Tuple [(Name j Store) (Name k Store)] Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [(Compare (Name j Load) Gt [(ConstantInt 0 ())])] 0)]) ())] [])
1+
(Module [(Assign [(Name fruits Store)] (ListComp (Name f Load) [((Name f Store) (Name fruit_list Load) [(Call (Attribute (Name f Load) startswith Load) [(ConstantStr "a" ())] [])] 0)]) ()) (Assign [(Name fruit_list Store)] (ListComp (Name fruit Load) [((Name fruit Store) (Name fruits Load) [] 0)]) ()) (Assign [(Name sum_cord Store)] (ListComp (BinOp (Name x Load) Add (Name y Load)) [((Tuple [(Name x Store) (Name y Store)] Store) (Name points Load) [(BoolOp And [(Compare (Name x Load) Gt [(ConstantInt 0 ())]) (Compare (Name y Load) Gt [(ConstantInt 0 ())])])] 0)]) ()) (Assign [(Name transform_1 Store)] (ListComp (BinOp (BinOp (ConstantInt 2 ()) Mult (Name x Load)) Add (ConstantInt 6 ())) [((Name x Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [] 0)]) ()) (Assign [(Name distance_orig Store)] (ListComp (BinOp (BinOp (BinOp (Name x Load) Pow (ConstantInt 2 ())) Add (BinOp (Name y Load) Pow (ConstantInt 2 ()))) Add (BinOp (Name z Load) Pow (ConstantInt 2 ()))) [((Tuple [(Name x Store) (Name y Store) (Name z Store)] Store) (Name points Load) [] 0)]) ()) (Assign [(Name odd_elements Store)] (ListComp (Name i Load) [((Name i Store) (Name main_list Load) [(BinOp (Name i Load) BitAnd (ConstantInt 1 ()))] 0)]) ()) (Assign [(Name first_ten_elements Store)] (ListComp (Name i Load) [((Name i Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [] 0)]) ()) (Assign [(Name another_ten_elements Store)] (ListComp (Name i Load) [((Name i Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [] 0)]) ()) (Assign [(Name comp Store)] (ListComp (BinOp (Name i Load) Pow (ConstantInt 2 ())) [((Name i Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [(BoolOp And [(Compare (Name i Load) NotIn [(List [(ConstantInt 3 ()) (ConstantInt 5 ()) (ConstantInt 7 ())] Load)]) (Compare (Name i Load) In [(Name list3 Load)])])] 0)]) ()) (Assign [(Name prm_tup Store)] (Call (Name tuple Load) [(GeneratorExp (Call (Name next Load) [(Name parameters Load)] []) [((Name _ Store) (Attribute (Name i Load) __parameters__ Load) [] 0)])] []) ()) (Assign [(Name args Store)] (Call (Attribute (ConstantStr ", " ()) join Load) [(GeneratorExp (Call (Name _to_str Load) [(Name i Load)] []) [((Name i Store) (Attribute (Name self Load) __args__ Load) [] 0)])] []) ()) (Assign [(Name rest Store)] (Call (Name tuple Load) [(GeneratorExp (Name i Load) [((Name i Store) (Call (Name range Load) [(Attribute (Name a Load) ndim Load)] []) [(Compare (Name i Load) NotIn [(Name axis Load)])] 0)])] []) ()) (Assign [(Name newSet Store)] (SetComp (BinOp (Name element Load) Mult (ConstantInt 3 ())) [((Name element Store) (Name myList Load) [] 0)]) ()) (Assign [(Name newSet Store)] (SetComp (BinOp (Name element Load) Mult (ConstantInt 3 ())) [((Name element Store) (Name myList Load) [(Compare (BinOp (Name element Load) Mod (ConstantInt 2 ())) Eq [(ConstantInt 0 ())])] 0)]) ()) (Expr (DictComp (Name x Load) (BinOp (Name x Load) Pow (ConstantInt 3 ())) [((Name x Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [(Compare (BinOp (BinOp (Name x Load) Pow (ConstantInt 3 ())) Mod (ConstantInt 4 ())) Eq [(ConstantInt 0 ())])] 0)])) (Assign [(Name square_dict Store)] (DictComp (Name num Load) (BinOp (Name num Load) Mult (Name num Load)) [((Name num Store) (Call (Name range Load) [(ConstantInt 1 ()) (ConstantInt 11 ())] []) [] 0)]) ()) (Expr (GeneratorExp (Subscript (Name string Load) (Name i Load) Load) [((Name i Store) (Call (Name range Load) [(BinOp (Call (Name len Load) [(Name string Load)] []) Sub (ConstantInt 1 ())) (UnaryOp USub (ConstantInt 1 ())) (UnaryOp USub (ConstantInt 1 ()))] []) [] 0)])) (Assign [(Name k Store)] (GeneratorExp (BinOp (Name j Load) Add (Name k Load)) [((Tuple [(Name j Store) (Name k Store)] Store) (Call (Name range Load) [(ConstantInt 10 ())] []) [(Compare (Name j Load) Gt [(ConstantInt 0 ())])] 0)]) ()) (Expr (GeneratorExp (BinOp (BinOp (Name left Load) Add (Name size Load)) Add (Name right Load)) [((Tuple [(Name size Store) (Tuple [(Name left Store) (Name right Store)] Store)] Store) (Call (Name zip Load) [(Attribute (Name array Load) shape Load) (Name pad_width Load)] []) [] 0)])) (Assign [(Name viter Store)] (GeneratorExp (Tuple [(Name i Load) (Name j Load)] Load) [((Tuple [(Tuple [(Name i Store) (Name _ Store)] Store) (Tuple [(Name j Store) (Name _ Store)] Store)] Store) (Call (Name zip Load) [(Subscript (Name newargs Load) (Slice (ConstantInt 1 ()) () ()) Load) (Subscript (Name args Load) (Slice (ConstantInt 1 ()) () ()) Load)] []) [] 0)]) ())] [])

tests/reference/ast_new-for2-af08901.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
"basename": "ast_new-for2-af08901",
33
"cmd": "lpython --show-ast --new-parser --no-color {infile} -o {outfile}",
44
"infile": "tests/parser/for2.py",
5-
"infile_hash": "5b2063381273e132aae18d9ba76c775c5743c66592fd42046b030543",
5+
"infile_hash": "32c45d5c5edc44504a3fa5d24c6c1660977d2ceceeef311ee5a37410",
66
"outfile": null,
77
"outfile_hash": null,
88
"stdout": "ast_new-for2-af08901.stdout",
9-
"stdout_hash": "a6ef674db9539591e9e5c0409f91b616ba70008d77b975d5074196fa",
9+
"stdout_hash": "d8c03cf0ef7c1473ea457b1282da26a047e1b110c5fab6494cf434cd",
1010
"stderr": null,
1111
"stderr_hash": null,
1212
"returncode": 0

0 commit comments

Comments
 (0)