LOOP — 루프 종료

LOOP — 루프 종료 (인덱스 +1)

LOOP는 루프 인덱스를 1 증가시키고, 한계에 도달하지 않으면 루프 시작으로 분기하며, 도달하면 루프를 종료하는 코어 단어예요.

출처: LOOP — Forth 2012 Standard

본문

컴파일 (Compilation)

( C: do-sys -- )

아래 주어진 실행 시점 의미를 현재 정의에 추가해요. do-sys가 주는 위치와 다음 제어 이동 위치 사이의, LEAVE의 미해결 발생 전부의 목적지를 해결해서 LOOP 뒤의 단어들을 실행하도록 해요.

실행 (Run-time)

( -- ) ( R: loop-sys1 -- | loop-sys2 )

루프 제어 매개변수를 사용할 수 없으면 애매한 조건이 존재해요. 루프 인덱스에 1을 더해요. 그 후 루프 인덱스가 루프 한계와 같으면, 루프 매개변수를 버리고 루프 바로 다음에서 실행을 계속해요. 그렇지 않으면 루프의 시작에서 실행을 계속해요.

참조 (See)

  • 6.1.1240 DO
  • 6.1.1680 I
  • 6.1.1760 LEAVE
  • A.6.1.1800 LOOP

합리성 (Rationale)

전형적인 사용:

: X ... limit first DO ... LOOP ... ;

또는

: X ... limit first ?DO ... LOOP ... ;

테스트 (Testing)

T{ : GD1 DO I LOOP ; ->  }T
T{          4        1 GD1 ->  1 2 3   }T
T{          2       -1 GD1 -> -1 0 1   }T
T{ MID-UINT+1 MID-UINT GD1 -> MID-UINT }T

더 알아보기 (Learn more)

출처: LOOP — Forth 2012 Standard