@@ -302,6 +302,10 @@ apex
302302 %+ cook
303303 |= =for-range [%for-range for-range]
304304 parse-for-range
305+ ::
306+ %+ cook
307+ |= =for-in [%for-in for-in]
308+ parse-for-in
305309 ==
306310++ parse-for-range
307311 %^ tnee %for-range for-range
@@ -335,6 +339,25 @@ apex
335339 wss
336340 (jest 'end')
337341 ==
342+++ parse-for-in
343+ %^ tnee %parse-for-in for-in
344+ %+ cook
345+ |= [* vars=namelist * src=explist * body=blok *] [vars src body]
346+ ;~ (glue wss)
347+ (jest 'for')
348+ parse-namelist
349+ (jest 'in')
350+ parse-explist
351+ (jest 'do')
352+ parse-blok
353+ (jest 'end')
354+ ==
355+++ parse-explist
356+ %^ tnee %parse-explist explist
357+ %+ most (ifix [ws ws] com) parse-expr
358+++ parse-namelist
359+ %^ tnee %parse-namelist namelist
360+ %+ most (ifix [ws ws] com) parse-name
338361++ parse-if
339362 %^ tnee %parse-if if
340363 %+ cook