From 5be80b81ebfeddc787f3531f3187f4d8916c7286 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Wed, 9 Jul 2014 00:43:06 -0500 Subject: [PATCH] Add `foreach EXP as $var (INIT; UPDATE)` form --- parser.y | 5 +++++ tests/all.test | 4 ++++ 2 files changed, 9 insertions(+) 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]