以下の機能と同等のCFGを作ろうとしています。B がループ カウンターであることはわかっているので、一連の要素がスタックにプッシュされる可能性があります。ループが完了するたびに、B からの要素がポップされ、B = Epsilon の場合は終了します。while ループの上半分で追加を処理するにはどうすればよいですか?
PROCEDURE multiply a, b;
VAR a, b, z;
BEGIN
z := 0;
WHILE b > 0 DO BEGIN
z := a + z;
b := b - 1;
END
RETURN z;
END;