diff --git a/parser.y b/parser.y index 6abcb473..55a01fa0 100644 --- a/parser.y +++ b/parser.y @@ -243,6 +243,11 @@ Term "as" '$' IDENT '|' Exp { jv_free($5); } | +"foreach" Term "as" '$' IDENT '(' Exp ';' Exp ')' { + $$ = gen_foreach(jv_string_value($5), $2, $7, $9, gen_noop()); + jv_free($5); +} | + "if" Exp "then" Exp ElseBody { $$ = gen_cond($2, $4, $5); } | diff --git a/tests/all.test b/tests/all.test index 55cb3891..3685a0e8 100644 --- a/tests/all.test +++ b/tests/all.test @@ -234,6 +234,10 @@ null [11,22,33,44,55,66,77,88,99] [11,22,33] +[foreach range(5) as $item (0; $item)] +null +[0,1,2,3,4] + [limit(3; .[])] [11,22,33,44,55,66,77,88,99] [11,22,33]