Looping Statements
Looping statements generate multiple statements in intermediate code, as shown in the following patterns. (Generate label numbers by j = labelnumber++;.)
for i := start to end do s (PROGN (:= i start) (LABEL j) (IF (<= i end) (PROGN s (:= i (+ 1 i)) (GOTO j) ))) while c do s (PROGN (LABEL j) (IF c (PROGN s (GOTO j)))) repeat statements until c (PROGN (LABEL j) (PROGN statements) (IF c (PROGN) (GOTO j)))The empty (PROGN) acts as a no-op.