(define parse-command (bind (sequence (any-of parse-assign parse-loop) (is #\;)) (lambda (s) (result (car s))))) (define parse-commands (zero-or-more parse-command)) (define parse-loop-body (enclosed-by (char-seq "DO") parse-commands (char-seq "DONE"))) (define parse-loop (sequence* ((_ (char-seq "LOOP")) (cond parse-value) (body parse-loop-body)) (result (list 'loop cond body))))